courier-IMAP mit MySQL-Authentication
January 24, 2010
Wer die Authentifizierung für courier über eine Datenbank laufen lassen möchte, muss das File /etc/courier/authmysqlrc anpassen. Ungefähr in Zeile 92 definiert man die Tabellenspalte für das verschlüsselte Passwort: MYSQL_CRYPT_PWFIELD. Leider findet sich in den Kommentaren kein Hinweis darauf, dass MySQL eine nicht standardisierte Crypt-Funktion benützt, die andere Ergebnisse liefert, als die systemeigene Funktion von Linux. Der entscheidende Hinweis findet sich entweder im Internet (sehr schwer zu finden, selbst wenn man weiß, wonach man suchen muss), oder in der Dokumentation zu courier: /usr/share/doc/courier-authlib-mysql/README.authmysql.html:
NOTE: this password must be crypted using the operating system's crypt function, NOT MySQL's crypt function. MySQL's crypt() function is non-standard and is not generally compatible with the operating system's crypt function.
Juhu. Bleibt die Frage, wie man in Linux schnell ein Passwort verschlüsselt. Das wiederum wird in dem Readme-File unfreundlicherweise nicht verraten.
Dabei liefert courier mit dem Paket courier-authlib-userdb das benötigte Programm schon mit. Das dazugehörige Programm ruft man standardmäßig mit dem Befehl
userdbpw [[-md5] | [-hmac-md5] | [-hmac-sha1]] |userdb {name} set {field}
auf, wobei das Ergebnis aber in das File userdb gepiped wird, was wir gar nicht benötigen. (Nähere Informationen finden sich unter "man userdbpw").
Für unsere Bedürfnisse reicht die Eingabe
userdbpw
, eventuell mit dem Parameter -md5. Daraufhin fragt das Programm zweimal nach dem Passwort, das Linux-üblich nicht angezeigt wird. Die Ausgabe der Verschlüsselung erfolgt jetzt direkt in der Standardausgabe der Konsole, die wir einfach kopieren und in die Datenbank übertragen können. Jetzt sollte auch der Login funktionieren.
Wer nur das Verschlüsselungsprogramm ohne den Courier Server benötigt, kann sich das Paket mit
sudo apt-get install courier-authlib-userdb
besorgen.
NOTE: this password must be crypted using the operating system's crypt function, NOT MySQL's crypt function. MySQL's crypt() function is non-standard and is not generally compatible with the operating system's crypt function.
Juhu. Bleibt die Frage, wie man in Linux schnell ein Passwort verschlüsselt. Das wiederum wird in dem Readme-File unfreundlicherweise nicht verraten.
Dabei liefert courier mit dem Paket courier-authlib-userdb das benötigte Programm schon mit. Das dazugehörige Programm ruft man standardmäßig mit dem Befehl
userdbpw [[-md5] | [-hmac-md5] | [-hmac-sha1]] |userdb {name} set {field}
auf, wobei das Ergebnis aber in das File userdb gepiped wird, was wir gar nicht benötigen. (Nähere Informationen finden sich unter "man userdbpw").
Für unsere Bedürfnisse reicht die Eingabe
userdbpw
, eventuell mit dem Parameter -md5. Daraufhin fragt das Programm zweimal nach dem Passwort, das Linux-üblich nicht angezeigt wird. Die Ausgabe der Verschlüsselung erfolgt jetzt direkt in der Standardausgabe der Konsole, die wir einfach kopieren und in die Datenbank übertragen können. Jetzt sollte auch der Login funktionieren.
Wer nur das Verschlüsselungsprogramm ohne den Courier Server benötigt, kann sich das Paket mit
sudo apt-get install courier-authlib-userdb
besorgen.


Trackbacks