[Postfixbuch-users] Postfix mit SMTP-AUTH klappt nicht.
Andreas Winkelmann
ml at awinkelmann.de
Mi Mai 24 19:06:37 CEST 2006
Am Monday 22 May 2006 23:02 schrieb Marcus Frings:
> gegeben ist ein Debian Sarge System mit postfix (2.1.5) und sasl
> (2.1.19), bei dem ich schon seit Tagen versuche, SMTP-AUTH mit sasldb
> als Backend für eingehende Mails einzurichten. Ich habe mich dabei an
> Patricks und Ralfs Buch bzw. an Patricks HOWTO gehalten:
>
> ,----[ /etc/postfix/main.cf ]
>
> | smtpd_sasl_auth_enable = yes
> | smtpd_sasl_security_options = noanonymous
> | # smtpd_sasl_local_domain = $myhostname
> | smtpd_sasl_local_domain =
> | broken_sasl_auth_clients = yes
> |
> | smtpd_recipient_restrictions =
> | permit_sasl_authenticated,
> | permit_mynetworks,
> | check_relay_domains
>
> `----
>
> ,----[ /etc/postfix/sasl/smtpd.conf ]
>
> | pwcheck_method: auxprop
> | mech_list: plain login digest-md5 cram-md5
>
> `----
>
> /etc/sasldb2, nach Erstellen der User-Einträge, habe ich in
> /var/spool/postfix/etc/ hineinkopiert:
>
> ,----[ /var/spool/postfix/etc/ ]
>
> | -rw-rw---- 1 root sasl 12288 May 22 22:17 sasldb2
>
> `----
>
> Der Benutzer postfix ist ebenfalls Mitglied der Gruppe sasl.
>
> Ich gebe zu, dass mir die ganze Geschichte mit REALM nicht ganz klar
> ist, deshalb habe ich testweise drei User auf unterschiedliche Arten
> angelegt:
>
> 1) saslpasswd2 -c -u `postconf -h myhostname` -a smtpauth test1
Hmm, um es mal erwähnt zu haben. "-a applicationname".
saslpasswd[2] wird dazu benutzt um im auxprop-Backend ein Passwort zu ändern
oder einen Eintrag/User zu erzeugen. "auxprop-Backend" meint nicht nur
sasldb, obwohl das der normalfall sein dürfte. Auch das sql-auxprop-plugin
unterstüzt das Anlegen bzw. Ändern von Einträgen. Da dazu jedoch
saslpasswd[2] eine hand voll Konfigurations-Optionen benötigt, server-name,
datenbankname, insert-Befehl braucht es eine Config-Datei. Der Standard-Name
dazu ist "saslpasswd.conf" im obligatorischen /usr/lib/sasl2/. Wenn man das
sql-Auxprop-Backend verwendet, hat man eh eine Konfig-Datei für die
Applikation (z.B. Postfix) "smtpd.conf". Wozu jetzt eine zweite für
saslpasswd[2]? Und hier kommt "-a applikationname" ins Spiel.
# saslpasswd2 -a smtpd -u domain.tld -c user
Benutzt jetzt die Optionen aus der smtpd.conf um im dort konfigurierten
Auxprop-Backend den Eintrag zu Ändern bzw. Anzulegen.
Da Du sicher keine "smtpauth.conf" im /usr/lib/sasl2/ rumliegen hast, ist die
Angabe absolut sinnlos.
Bei Debian bringt das natürlich noch weniger. Der Default-Pfad für die
smtpd.conf wurde in Postfix umgebogen. Ein "-a smtpd" bei Cyrus-SASL würde im
Default-Pfad von Cyrus-SASL suchen (/usr/lib/sasl2/).
> 2) saslpasswd2 -c -u `postconf -h myhostname` test2
> 3) saslpasswd2 -c test3
Ob, bzw. was das bringt hängt von den Werten $myhostname bzw.
$smtpd_sasl_local_domain ab. Da Du die wenn überhaupt nur unvollständig
gezeigt hast, kann man dazu nix sinnvolles sagen.
> Nach erneutem Einlesen der Konfiguration mache ich remote ein telnet auf
> den Mailserver und nach Senden des EHLO bekomme ich:
>
> ,----
>
> | 250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
> | 250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5
>
> `----
>
> Scheint also schon einmal zu funktionieren.
>
> Anschließend tippe ich
>
> AUTH PLAIN $BASE64-PASSWORT
"$BASE64-PASSWORT" ist falsch. Teste es am besten mit einem MUA oder smtptest
(Entweder im aktuellen cyrus-sasl 2.1.22 oder beim Cyrus-Imapd dabei).
> und in allen Fällen erhalte ich:
>
> ,----
>
> | 535 Error: authentication failed
>
> `----
>
> Hier mal die Logs:
>
> ,----[ mail.info ]
>
> | postfix/smtpd[31516]: smtpd_sasl_authenticate: sasl_method PLAIN,
> | init_response $BASE64-PASSWORT postfix/smtpd[31516]:
> | smtpd_sasl_authenticate: decoded initial response test2
> | postfix/smtpd[31516]: warning: SASL authentication failure: Password
> | verification failed postfix/smtpd[31516]: warning:
> | p5089D0FA.dip.t-dialin.net[80.137.208.250]: SASL PLAIN authentication
> | failed postfix/smtpd[31516]: >
> | p5089D0FA.dip.t-dialin.net[80.137.208.250]: 535 Error: authentication
> | failed
>
> `----
Wenn Du oben wirklich mit "$BASE64-PASSWORT" getestet hast, fehlen hier noch
ein paar Fehler.
Ansonsten wäre es hilfreich möglichst genaue und vor allem korrekte
Informationen zu bekommen.
Es muss lauten "user\0user\0password" und das base64-encoded. Das erste User
kann man auch weglassen ("\0user\0password"). Fallen sind hier "@"-Zeichen,
wenn Du es mit Perl machst und Passwörter die mit Zahlen anfangen. Am besten
prüfst Du nach der Erstellung mit einem decode ob auch das wieder
herauskommt, was Du eingegeben hast.
> Diese Meldung ist für alle drei Testbenutzer gleich. Dasselbe kommt
> übrigens heraus, wenn ich "smtpd_sasl_local_domain = $myhostname" gegen
> "smtpd_sasl_local_domain =" austausche
>
> ,----[ mail.warn ]
>
> | postfix/smtpd[31516]: warning: SASL authentication failure: Password
> | verification failed postfix/smtpd[31516]: warning: localhost[127.0.0.1]:
> | SASL PLAIn authentication failed
>
> `----
>
> ,----[ auth.log ]
>
> | saslpasswd2: setpass succeeded for test2
> | saslpasswd2: error deleting entry from sasldb: DB_NOTFOUND: No matching
> | key/data pair found
>
> `----
>
> Zu der Meldung aus dem auth.log habe ich Google befragt und zwar auch
> einige Einträge gefunden, aber irgendwie nichts, was mir weiterhilft.
>
> Hat jemand eine Idee? Ich hoffe, ich habe direkt genügend Informationen
> geliefert.
--
Andreas
Mehr Informationen über die Mailingliste Postfixbuch-users