การค้นหาผู้ใช้ Dovecot ล้มเหลวเมื่อใช้รูปแบบชื่อผู้ใช้ @ โดเมน


14

ฉันติดตั้ง Dovecot v2.0.11 บนเซิร์ฟเวอร์ FreeBSD แล้วและการค้นหาผู้ใช้สำหรับที่อยู่อีเมลขาเข้าล้มเหลว แต่การค้นหาผู้ใช้ระบบเสร็จสมบูรณ์

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

อย่างไรก็ตามการใช้ผู้ใช้ doveadm เพื่อค้นหา webmaster@myregisteredname.com ล้มเหลวดังนี้

# 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

Userids ใน dovecot ที่ใช้ passdb ไม่รวมโดเมน หมายเลขผู้ใช้ที่ผู้ใช้ควรใช้เป็นส่วนท้องถิ่นไม่ใช่ที่อยู่อีเมลแบบเต็ม

การตรวจสอบที่ผ่านและล้มเหลวทำงานตามที่คาดไว้ การตั้งค่าauth_username_format=%nก่อนที่นิยาม db รหัสผ่านจะทำงาน แม้ว่าโดเมนจะไม่ผ่านการตรวจสอบ


ขอบคุณสำหรับการตอบกลับ แต่ก็ไม่ได้ผล ฉันแก้ไขคำถามด้วยผลลัพธ์ที่อัปเดตแล้ว
cigarman

1
@Coleman: พบวิธีแก้ปัญหาการทำงานสำหรับ Dovecot 1.2 ควรทำงานกับ Dovecot 2 เช่นกัน ดูการแก้ไขคำตอบของฉัน พบวิธีแก้ไขในไฟล์กำหนดค่าเริ่มต้นสำหรับ Ubuntu
BillThor

13

ฉันใช้ Ubuntu Server 12.04 และฉันพยายามแก้ไขปัญหาข้างต้น อย่างไรก็ตามฉันพบว่าวิธีที่ง่ายที่สุดและง่ายที่สุดคือในการตั้งค่า 10-auth.conf

auth_username_format = %n

ฉันใช้ PAM สำหรับการรับรองความถูกต้องซึ่งเป็นค่าเริ่มต้นใน Ubuntu 12.04


3

ฉันสงสัยว่า Dovecot 2.1 อาจแตกวิธีนี้หรือเปลี่ยนพฤติกรรมที่คาดไว้

ฉันได้ติดตามข้อผิดพลาดการอนุญาตเดียวกันกับ userdb:

userdb {
  driver = passwd
}

เมื่อผู้ใช้ภายใน (ไม่ใช่เสมือน) ได้รับอีเมลผ่าน exim-> lmtp จะรวมโดเมน การกำหนด auth_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

สิ่งที่น่าสนใจคือการใช้ไฟล์ passwd นั้นใช้งานได้ แต่การตรวจสอบความถูกต้องเป็นเรื่องที่รูตไฟล์นั้นเป็นเจ้าของโดย root

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.