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