उपयोगकर्ता नाम @ डोमेन प्रारूप का उपयोग करते समय Dovecot उपयोगकर्ता लुकअप विफल हो जाता है


14

मेरे पास एक FreeBSD सर्वर पर Dovecot v2.0.11 स्थापित है और आने वाले ईमेल पतों के लिए उपयोगकर्ता लुकअप विफल हो रहे हैं, लेकिन सिस्टम उपयोगकर्ताओं के लिए लुकअप सफल है।

Dovecot सिस्टम उपयोगकर्ताओं का उपयोग करने के लिए सेटअप है, इसलिए मेरे dovecot.conf के पास है

 userdb {
  driver = passwd
}

तथा

passdb {
  driver = passwd
}

मेरे पास डीबग सक्षम है।

उदाहरण के लिए, मेरे पास वेबमास्टर नामक एक उपयोगकर्ता है, और "वेबमास्टर" के लिए doveadm उपयोगकर्ता का उपयोग निम्नानुसार करता है:

#doveadm user webmaster
userdb: webmaster
  system_groups_user: webmaster
  uid       : 1020
  gid       : 1020
  home      : /home/webmaster

हालाँकि, webmaster@myregisteredname.com देखने के लिए doveadm उपयोगकर्ता का उपयोग करना निम्नानुसार विफल रहता है:

# doveadm user webmaster@myregisteredname.com
userdb lookup: user webmaster@myregisteredname.com doesn't exist

यह "अज्ञात उपयोगकर्ता" त्रुटि के साथ उछाल के लिए webmaster@myregisteredname.com के लिए आने वाले मेल में होता है।

यहाँ विफलता लॉग इन / var / log / maillog:

Apr 16 20:13:35 www dovecot: auth: passwd(webmaster@myregisteredname.com): unknown user

यहाँ विफलता विफलता / लॉग इन /var/log/debug.log:

Apr 16 20:13:35 www dovecot: auth: Debug: master in: USER       1       webmaster@myregisteredname.com  service=doveadm
Apr 16 20:13:35 www dovecot: auth: Debug: passwd(webmaster@myregisteredname.com): lookup
Apr 16 20:13:35 www dovecot: auth: Debug: master out: NOTFOUND  1

उपयोगकर्ताओं और उनके घर निर्देशिकाओं को किसी अन्य सर्वर से आयात किया गया था और उपयोगकर्ताओं को vipw टूल का उपयोग करके सेटअप किया गया था। मुझे यकीन है कि कुछ ऐसा है जो मुझे आयात पर याद आया जो कि सिस्टम उपयोगकर्ता को dovecot लुकअप के साथ "लिंकिंग" नहीं कर रहा है।

क्या कुछ हो सकता है के बारे में कोई विचार?

संपादित करें: BillThor की सलाह का उपयोग करते हुए, मैंने dovecot.conf को निम्नानुसार अपडेट किया:

#doveconf -n passdb userdb
passdb {
  args = username_format=%n
  driver = passwd
}
userdb {
  args = username_format=%n
  driver = passwd
}

हालाँकि, अब, doveadm उपयोगकर्ता एक अलग अंदाज़ में विफल हो जाता है:

#doveadm user webmaster@pantronx.com
doveadm(root): Error: userdb lookup(webmaster@myregisteredname.com): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup failed for webmaster@myregisteredname.com

और, यह अब बिना डोमेन वाले उपयोगकर्ताओं के लिए काम नहीं करता है:

#doveadm user webmaster
doveadm(root): Error: userdb lookup(webmaster): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup failed for webmaster

जब मुझे उपरोक्त संदेश मिलते हैं, तो निम्नलिखित / var / log / maillog में है:

Apr 17 17:30:02 www dovecot: auth: Fatal: passdb passwd: Unknown setting: username_format=%u
Apr 17 17:30:02 www dovecot: master: Error: service(auth): command startup failed, throttling

जवाबों:


15

Dodcot में पासडब का उपयोग करने वाले उपयोगकर्ता डोमेन को शामिल नहीं करते हैं। उपयोगकर्ता को जिस उपयोगकर्ता का उपयोग करना चाहिए वह स्थानीय भाग है, न कि पूर्ण ईमेल पता।

जो चेक पास हो रहे हैं और फेल हो रहे हैं वे उम्मीद के मुताबिक काम कर रहे हैं। auth_username_format=%nपासवर्ड db परिभाषा से पहले सेटिंग काम करती है। डोमेन को मान्य नहीं किया गया है।


उत्तर के लिए धन्यवाद, लेकिन वह भी काम नहीं करता है। मैंने अपने प्रश्न को अद्यतन परिणामों के साथ संपादित किया है।
सिगारमन

1
@ कोलमैन: डवकोट 1.2 के लिए एक काम करने वाला समाधान मिला। Dovecot 2 के लिए भी काम करना चाहिए। मेरी प्रतिक्रिया के लिए संपादन देखें। Ubuntu के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल में समाधान मिला।
बिलथोर

13

मैं Ubuntu सर्वर 12.04 का उपयोग कर रहा हूं और मैंने उपरोक्त समाधानों की कोशिश की। हालाँकि, मैंने पाया कि सबसे आसान और आसान तरीका 10-dif.conf में था

auth_username_format = %n

मैं प्रमाणीकरण के लिए PAM का उपयोग करता हूं जो Ubuntu 12.04 में डिफ़ॉल्ट है।


3

मुझे संदेह है कि Dovecot 2.1 ने इस समाधान को या तो तोड़ दिया या अपेक्षित व्यवहार को बदल दिया है।

मैंने userdb में उसी प्राधिकरण त्रुटि का पता लगाया है:

userdb {
  driver = passwd
}

जब कोई स्थानीय उपयोगकर्ता (नॉन-वर्चुअल) एक्ज़िम-> lmtp के माध्यम से एक ईमेल प्राप्त करता है तो उसमें डोमेन शामिल होता है। Cort_username_format =% Ln को परिभाषित करना स्थानीय वितरण को ठीक करता है, लेकिन यह वर्चुअल डिलीवरी को तोड़ता है। Args = username_format जोड़ने की पेशकश को ठीक करने पर ध्यान नहीं दिया जा रहा है:

userdb {
  driver = passwd
  args = username_format=%n
}

और लॉग में एक चेतावनी शामिल है

Apr  4 11:24:57 moe dovecot: auth: Warning: userdb passwd: Move templates args to override_fields setting

दिलचस्प बात यह है कि पासवार्ड-फाइल का उपयोग करने से काम चल जाता है , लेकिन ऑर्टिकल पागल है कि पासवार्ड फाइल रूट के स्वामित्व में है।

userdb {
  driver = passwd-file
  args = username_format=%n /etc/passwd
}

Apr  4 11:26:12 moe dovecot: auth: Error: passwd-file /etc/passwd: User root has invalid UID '0'
Apr  4 11:26:12 moe dovecot: auth-worker(6855): Error: passwd-file /etc/passwd: User root has invalid UID '0'

1

passwd-file: Unknown setting: username_format मेरे लिए कारण अतिरिक्त स्थान था:

passdb {
  driver = passwd-file
  args = scheme=SHA256-CRYPT **extra-space-here**username_format=%u /etc/dovecot/users
}

यानी मेरे पास CRYPT और uesrname के बीच दो स्थान हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.