Dovecot UserDB Passwd-Datei Standardfelder UID wird nicht erweitert %variable

Dovecot UserDB Passwd-Datei Standardfelder UID wird nicht erweitert %variable

Ich versuche, einen sehr einfachen gemeinsam genutzten Mailserver einzurichten, bei dem jede „Domäne“ ein Systembenutzer ist, d. h. „example.com“ ist ein echter Benutzer mit /home/example.com/, einer UID von 5001 und einer GID „example.com“ von 5001.

Jeder Domänen-/Benutzer hat sein eigenes Mailverzeichnis in seinem Home-Verzeichnis und eine einfache Passwd-Datei mit den virtuellen Mail-Benutzern, die mit dieser Domäne verknüpft sind.

Dovecot-Version und Konfigurationsinformationen:

# dovecot -n
# 2.2.13: /etc/dovecot/dovecot.conf
# OS: Linux 3.2.0-4-amd64 x86_64 Debian 7.8
auth_mechanisms = plain login
auth_verbose = yes
disable_plaintext_auth = no
mail_location = mbox:~/mail:INBOX=/var/mail/%u
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix =
}
passdb {
  args = username_format=%n /home/%d/mail_users
  driver = passwd-file
}
protocols = " imap lmtp pop3"
ssl = no
userdb {
  args = username_format=%n /home/%d/mail_users
  default_fields = uid=%d gid=%d home=/home/%d/mail/%n mail=maildir:/home/%d/mail/%n
  driver = passwd-file
}

Jedes Mal, wenn ich versuche, eine Verbindung zum POP3\IMAP-Port herzustellen, erhalte ich die folgenden Fehler im Server

dovecot: auth: Fatal: passwd-file userdb: Invalid uid: %d
dovecot: master: Error: service(auth): command startup failed, throttling for 2 secs
dovecot: imap-login: Disconnected: Auth process broken (disconnected before auth was ready, waited 0 secs): user=<>, rip=192.168.30.10, lip=192.168.20.201, session=<2rgGLBkQ/wDAqB4K>

und der Client sieht:

$ telnet 192.168.20.201 imap
Trying 192.168.20.201...
Connected to 192.168.20.201.
Escape character is '^]'.
* BYE Disconnected: Auth process broken
Connection closed by foreign host.

Überprüfen des Wikis (http://wiki2.dovecot.org/UserDatabase#Userdb_settings) besagt eindeutig, dass die default_fields-Werte %variable unterstützen, daher bin ich nicht sicher, ob ich eine andere Konfiguration übersehe, die erforderlich ist, damit dies funktioniert.

Da dies geschieht, bevor der Client einen USER\LOGIN-Befehl ausführen kann, ist meines Wissens nach kein Benutzername vorhanden, aus dem der Domänenteil %d extrahiert werden kann, daher der Fehler. Was ich nicht verstehe, ist, warum ein Dovecot-Authentifizierungsversuch erfolgt, bevor der Client einen Authentifizierungsversuch ausführt.

Wenn ich die Konfiguration auf eine feste uid\gid ändere

default_fields = uid=example.com gid=example.com home=/home/%d/mail/%n mail=maildir:/home/%d/mail/%n

Die Verbindung wird zugelassen und ein entsprechender Authentifizierungsbefehl kann ausgegeben werden. Aber dann schlägt natürlich der Zugriff auf das Postfach für jeden Benutzer, der nicht zur Domäne example.com gehört, fehl.

verwandte Informationen