Dovecot 2.3 zu Dovecot 2.4: Passwortauthetifizierung schlägt fehl
Andreas Günther
dovecot.user at linuxmaker.cloud
Di Dez 2 10:38:04 CET 2025
Hallo Dovecot-Liste,
die Umstellung von Dovecot 2.3 auf Dovecot 2.4 stellt wahrlich eine
Mammutsaufgabe dar. Ich bin mittlerweile soweit, dass der neue Dovecot startet
und doveamd user ‘*’ ‘*’ die richtigen Werte liefert.
Jetzt habert es an der Benutzerauthentifizierung. Ich habe ein Debian
Systemupgrade von Bookworm nach Trixie gemacht. Auf dem System war also
Dovecot 2.3 und die Benutzer werden von der Postfixadmin-DB verwaltet. Hier
liegt die Mailadresse für Login etc. in der Spalte mailbox.username und das
Passwort in mailbox.password.
In meiner dovecot.conf steht die MySQL-Verbindung so drin:
sql_driver = mysql
ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-
SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-
CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-
GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
verbose_proctitle = yes
mysql /var/run/mysqld/mysqld.sock {
dbname = postfix
password = # hidden, use -P to show it
user = postfix
}
passdb sql {
query = SELECT username AS user, password FROM mailbox WHERE username = '%
{user}' AND active = true;
}
userdb sql {
iterate_query = SELECT username AS user FROM mailbox WHERE active = true;
query = SELECT 5000 AS uid, 5000 AS gid, CONCAT('/var/vmail/',
SUBSTRING_INDEX(username,'@',-1), '/', SUBSTRING_INDEX(username,'@',1)) AS
home, CONCAT('maildir:/var/vmail/', SUBSTRING_INDEX(username,'@',-1
), '/', SUBSTRING_INDEX(username,'@',1)) AS mail, CONCAT(quota,'M') AS
quota_storage_size FROM mailbox WHERE username = '%{user}' AND active = true;
}
Wenn ich die Authentifizierung testen will
root at mx2 /etc/dovecot # doveadm auth test "Testbenutzer at example.tld"
"Superpasswort"
passdb: Testbenutzer at example.tld auth failed
extra fields:
user=Testbenutzer at example.tld
sehe ich in dem Logfile diese Meldungen
2025-12-02 10:28:01 auth(Testbenutzer at example.tld,sasl:plain): Debug: sql:
Performing passdb lookup
2025-12-02 10:28:01 auth-worker(851518): Debug: conn unix:auth-worker
(pid=849688,uid=0): auth-worker<6>: Handling PASSV request
2025-12-02 10:28:01 auth-worker(Testbenutzer at example.tld)<851518>: request
[6]: Debug: sql: Performing passdb lookup
2025-12-02 10:28:01 auth-worker(Testbenutzer at example.tld)<851518>: request
[6]: Debug: sql: query: SELECT username AS user, password FROM mailbox WHERE
username = 'Testbenutzer at example.tld' AND active = true;
2025-12-02 10:28:01 auth-worker(851518): Debug: mysql(/var/run/mysqld/
mysqld.sock): Finished query 'SELECT username AS user, password FROM mailbox
WHERE username = 'Testbenutzer at example.tld' AND active = true;' in 0 msecs
2025-12-02 10:28:01 auth-worker(Testbenutzer at example.tld)<851518>: request
[6]: Info: sql: Password mismatch
2025-12-02 10:28:01 auth-worker(Testbenutzer at example.tld)<851518>: request
[6]: Debug: sql: PLAIN(Superpasswort) != '$1$c9809462$w/VXYgrreMffR.oqQkWzq/',
try DES-CRYPT scheme instead
2025-12-02 10:28:01 auth-worker(Testbenutzer at example.tld)<851518>: request
[6]: Debug: sql: Finished passdb lookup
2025-12-02 10:28:01 auth-worker(851518): Debug: conn unix:auth-worker
(pid=849688,uid=0): auth-worker<6>: Finished: password_mismatch
2025-12-02 10:28:01 auth(Testbenutzer at example.tld,sasl:plain): Debug: sql:
Finished passdb lookup
2025-12-02 10:28:01 auth(Testbenutzer at example.tld,sasl:plain): Debug: Auth
request finished
2025-12-02 10:28:01 auth(Testbenutzer at example.tld,sasl:plain): Debug: delaying
auth failure
2025-12-02 10:28:03 auth: Debug: conn unix:auth-client (pid=851716,uid=0)
[13]: client passdb out: FAIL 1 user=Testbenutzer at example.tld
Er hat also Probleme mit dem Passwort-Hash. Die DB enthält aber mehrere
Tausend Benutzer mit entsprechenden Passwörtern. Also von allen eine
Passwortänderung zu erwarten wäre eine Katastrophe.
Wie kann ich Dovecot dazu anhalten, eben diese Vorgaben zu nutzen?
Irgendwie ist das Ganze Vorgehen von den Dovecot-Entwicklern ziemlich
ineffizient gedacht worden.
Viele Grüße und vielen Dank
Andreas
Mehr Informationen über die Mailingliste Dovecot