Dovecot-SQL findet Benutzer nicht

Lord Gurke

Nur echt mit 32 Zähnen
Hallo zusammen,

ich bin gerade dabei einen Mailserver mit Dovecot aufzusetzen, der die Benutzer über eine MySQL-Datenbank authentifizieren soll.
Das funktioniert aus mir unerfindlichen Gründen aber nicht und langsam beschleicht mich das Gefühl, dass Dovecot mich versch**** will :cool:

Da die Logins einfach nicht klappen wollten, habe ich die SQL-Queries immer weiter angepasst, bis ich nun komplett ohne Werte aus der Datenbank abfrage - und selbst dann findet er angeblich den Benutzer nicht?!

Code:
dovecot: auth(default): client in: AUTH#0111#011PLAIN#011service=imap#011secured#011lip=78.xxxxxx#011rip=92.xxxxxxx#011lport=993#011rport=3291
dovecot: auth(default): client out: CONT#0111#011
dovecot: auth(default): client in: CONT#0111#011AHRlc3RAZGllc2Vkb21haW5pc3R6dW10ZXN0ZW4uZGUAZ2VoZWlt
dovecot: auth-worker(default): sql(test@diesedomainistzumtesten.de,92.xxxxxxx): query: SELECT 'test' AS `username`, 'geheim' AS `password`, 'diesedomainistzumtesten.de' AS `domain`, "test_at_diesedomainistzumtesten.de" AS `userdb_home`, 5000 AS `userdb_uid`, 5000 AS `userdb_gid` FROM `mailbox` WHERE 1 = 1 LIMIT 1
dovecot: auth(default): client out: OK#0111#011user=test@diesedomainistzumtesten.de
dovecot: auth(default): master in: REQUEST#0111#0113492#0111
dovecot: auth(default): passwd(test@diesedomainistzumtesten.de,92.xxxxxxx): lookup
dovecot: auth(default): passwd(test@diesedomainistzumtesten.de,92.xxxxxxx): unknown user
dovecot: auth(default): userdb(test@diesedomainistzumtesten.de,92.xxxxxxx): user not found from userdb passwd
dovecot: auth(default): master out: NOTFOUND#0111
dovecot: imap-login: Internal login failure (auth failed, 1 attempts): user=<test@diesedomainistzumtesten.de>, method=PLAIN, rip=92.xxxxxxx, lip=78.xxxxxx, TLS
dovecot: auth(default): new auth connection: pid=3496
dovecot: auth(default): new auth connection: pid=3497
dovecot: auth(default): client in: AUTH#0111#011PLAIN#011service=imap#011secured#011lip=78.xxxxxx#011rip=92.xxxxxxx#011lport=993#011rport=3292
dovecot: auth(default): client out: CONT#0111#011
dovecot: auth(default): client in: CONT#0111#011AHRlc3RAZGllc2Vkb21haW5pc3R6dW10ZXN0ZW4uZGUAZ2VoZWlt
dovecot: auth-worker(default): sql(test@diesedomainistzumtesten.de,92.xxxxxxx): query: SELECT 'test' AS `username`, 'geheim' AS `password`, 'diesedomainistzumtesten.de' AS `domain`, "test_at_diesedomainistzumtesten.de" AS `userdb_home`, 5000 AS `userdb_uid`, 5000 AS `userdb_gid` FROM `mailbox` WHERE 1 = 1 LIMIT 1
dovecot: auth(default): client out: OK#0111#011user=test@diesedomainistzumtesten.de
dovecot: auth(default): master in: REQUEST#0112#0113494#0111
dovecot: auth(default): passwd(test@diesedomainistzumtesten.de,92.xxxxxxx): lookup
dovecot: auth(default): passwd(test@diesedomainistzumtesten.de,92.xxxxxxx): unknown user
dovecot: auth(default): userdb(test@diesedomainistzumtesten.de,92.xxxxxxx): user not found from userdb passwd
dovecot: auth(default): master out: NOTFOUND#0112
dovecot: imap-login: Internal login failure (auth failed, 1 attempts): user=<test@diesedomainistzumtesten.de>, method=PLAIN, rip=92.xxxxxxx, lip=78.xxxxx, TLS


Hier ist meine dovecot-sql.conf dazu:
Code:
driver = mysql
connect = host=localhost dbname= ........
default_pass_scheme = PLAIN
password_query = SELECT '%n' AS `username`, 'geheim' AS `password`, '%d' AS `domain`, "test_at_diesedomainistzumtesten.de" AS `userdb_home`, 5000 AS `userdb_uid`, 5000 AS `userdb_gid` FROM `mailbox` WHERE 1 = 1 LIMIT 1

Vielleicht ist es einfach zu spät und ich übersehe etwas ganz Banales - kann mir da jemand einen heißen Tipp zu geben?
Danke!
 
Es wäre jetzt praktisch, deine Datenbankstruktur zu kennen, aber die Platzhalter %n, %u und %d kommen normalerweise nur in die WHERE Bedingung.
Also sowas in der Art:
Code:
SELECT username, password, domain, '/dir/to/home' AS userdb_home, 5000 AS userdb_uid, 5000 AS userdb_gid FROM mailbox WHERE username = '%u' AND  domain = '%d'
 
Ich hatte die SQL-Abfrage irgendwann so umformuliert, dass Dovecot genau das zurückbekommt, was er auch an den Datenbankserver gibt - einfach um ausschließen zu können, dass da irgendwelche Werte zurückkommen die so nicht erwartet werden etc...

Vorhin habe ich nochmal draufgeguckt und festgestellt, dass es gestern offenbar doch schon zu spät war ;)
In der dovecot.conf fehlte einfach der Eintrag, dass auch die Benutzerdaten (Homeverzeichnis, GID, UID etc...) ebenfalls aus einer Datenbank kommen sollen. Kaum habe ich das gefixt, konnte ich mich wunderbar anmelden :)
 
Back
Top