[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