Cyrus -> Authentification fails?

H

hexogen

Grünschnabel
Hallo ihr Experten ;-)

Die Situation ist folgende:
In einer Mysql-Tabelle stehen die Accountinformationen für Cyrus. Das Passwort ist dabei md5 verschlüsselt. Nun will ich mich mit cyradm -auth digest-md5 localhost -user user0001 bei Cyrus einloggen. Dann gebe ich das richtige Passwort ein, aber der Loginversuch scheitert.
In der mail.log steht dazu folgendes:
Code:
Dec 23 21:55:35 localhost cyrus/imapd[2953]: accepted connection
Dec 23 21:55:40 localhost cyrus/imapd[2953]: badlogin: localhost.localdomain[127.0.0.1] DIGEST-MD5 [SASL(-13): authentication failure: client response doesn't match what we generated]
Das heißt, der Name in der Mysqltabelle wird gefunden, aber der Vergleich des Passwortes ist nicht erfolgreich. Kann es vielleicht daran liegen, dass das Passwort mit der php-Funktion md5 erstellt wurde und diese sich von der sasl digest-md5 unterscheidet, oder wo liegt sonst der Fehler?

Hier ist noch ein Aussschnitt aus meiner imapd.conf.
Code:
sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: sql
sasl_sql_engine: mysql
sasl_sql_hostnames: localhost
sasl_sql_user: user
sasl_sql_passwd: pw
sasl_sql_database: mail
sasl_sql_verbose: no
sasl_sql_select: SELECT password FROM accountuser WHERE username = '%u'
sasl_sql_usessl: 0
Ich hoffe ihr könnt mir helfen.
 
Wenn ich mich recht entsinne, kann Cyrus auch nichts mit MD5-verschlüsselten Passwörtern anfangen. Der Server braucht es unverschlüsselt. Du musst es also beim Auslesen aus der DB wieder entschlüsseln und daher dein SQL-Statement entsprechend anpassen.
 
Aber das übernimmt doch ein SASL-Modul für Cyrus, oder irre ich da?
das hier habe ich noch vergessen hinzuzufügen:
Code:
sasl_mech_list: login plain cram-md5 digest-md5
(steht in der imapd.conf)
 
sasl_mech_list sorgt lediglich dafür, dass die Authentifizierung durch den Client die entsprechenden Mechanismen nutzen kann, was aber nichts mit der internen Verarbeitung des Passworts zu tun hat.
 
also mit plain, funktioniert es einwandfrei, jedoch schmerzt das mir doch sehr. Gibt es denn keine andere Möglichkeit?
 
Klar, die Passwörter in einem Password-Feld in einer SQL-DB ablegen und ein entsprechendes SQL-Statement zum Auslesen nutzen.

Dann noch IMAPS und SMTP über TLS (SSL) konfigurieren, so dass die Übertragung verschlüsselt wird und schon ist die Gefahr, dass jemand an die Passwörter kommt ziemlich gering.
 
Was ist ein entsprechendes SQL_Statement

Hi, ich habe leider genau das gleiche Problem. Passwörter in DB sind MD5 verschlüsselt und Cyrus kann nix damit anfangen. Dein Lösungsvorschlag liest sich gut, allerdings verstehe ich ihn nicht (was an meiner mangelnden SQL Erfahrung liegt).

Wie muss also ein passendes SQL Statement aussehen, um ein verschlüsseltes Passwort beim auslesen wieder zu entschlüsseln (damit Cyrus damit was anfangen kann...).

Danke Richy

Klar, die Passwörter in einem Password-Feld in einer SQL-DB ablegen und ein entsprechendes SQL-Statement zum Auslesen nutzen.

Dann noch IMAPS und SMTP über TLS (SSL) konfigurieren, so dass die Übertragung verschlüsselt wird und schon ist die Gefahr, dass jemand an die Passwörter kommt ziemlich gering.
 

Ähnliche Themen

postfix/dovecot/cyrus sasl: basic conf

web-cyradm: Anmeldung nicht möglich

postfix+saslauthd - postfix/smtpd verwendet nicht den saslauthd

CentOS 6.3 RADIUS - Keine Verbindung möglich

[Debian - Dovecot] TLS Probleme, SSL geht einwandfrei

Zurück
Oben