To find this post searching in English: "how to enable umlauts in passwords using dovecot with mysql" You will be able to follow this posting in English. If not, email me: nh2 |at| deditus |dot| de
Hi, ich habe gerade mehrere Stunden hiermit zugebracht und es letztendlich geschafft. Falls irgendjemand mal dieses Problem haben sollte, möge Google ihm diesen Post finden.
Es geht um Folgendes: Ich habe dovecot mit Benutzern in einer MySQL-Tabelle eingerichtet, die Passwörter sind als MD5-Hashes gespeichert. Benutzt jemand Umlaute in seinem Passwort, kann er, je nach Client, sich nicht verbinden (in meinem Fall war es Thunderbird), weil das Passwort als ISO-8859-1 an dovecot gesendet und auch als solches mit MD5 gehasht wird, das (meistens von PHP, z.B. über phpMyAdmin oder Postfixadmin oder auf sonst eine Art) eingetrage Passwort in UTF-8-Form zu MD5 umgewandelt wurde.
(Mail clients send ISO-8859-1 crap to your dovecot although what you originally hashed was UTF-8 ⇒ problem.)
Die Lösung: Nicht nur den Hash des übertragenen Strings prüfen, sondern auch dessen Äquivalent in anderen wichtigen Kodierungen (hier also ISO-8859-1 / latin1). Die Idee stammt von:
(Solution: Also check password string in other encodings, here ISO-8859-1 / latin1.) This idea is from:
http://www.mail-archive.com/dovecot@dovecot.org/msg14607.html
In dovecot ergibt sich folgende Einstellung (bei mir in /etc/dovecot/dovecot-sql.conf, muss an die tatsächlichen Spaltennamen angepasst werden):
(So I use this in /etc/dovecot/dovecot-sql.conf, adjust the column names):
password_query = SELECT NULL AS password, 'Y' as nopassword, username AS user FROM mailbox WHERE username = '%u' AND ( password = MD5('%w') OR password = MD5(CONVERT('%w' USING latin1)) OR password = MD5(CONVERT(_latin1'%w' USING utf8)))
Jetzt können wir Passwörter mit Umlauten benutzen. Ich hoffe, das hilft irgend jemandem mal. Wenn sich jemand darüber aufregen will, dass man so etwas braucht: Fordert UTF-8 als Standard für die Passwortübertragung, wie in dem Thread im Link angedeutet.
(May the force be with you.)
nh2