[Postfixbuch-users] SMTP_AUTH

Patrick Ben Koetter p at state-of-mind.de
So Feb 8 10:33:55 CET 2004


* Jim Knuth <jk at jkart.de> [040208 02:58]:
> > Also da fehlen alle parameter für SMTP AUTH.
> > Du brauchst:
> > # SASL SUPPORT FOR CLIENTS
> > # The following options set parameters needed by Postfix to enable 
> > # Cyrus-SASL support for authentication of mail clients. 
> > # 
> > smtpd_sasl_auth_enable = yes
> > smtpd_sasl_security_options = noanonymous
> > smtpd_sasl_local_domain = $myhostname
> > broken_sasl_auth_clients = yes
> > ... 
> > smtpd_recipient_restrictions = 
> >    permit_sasl_authenticated, 
> >    ...
> >> --snap
> >> Ich habe "noch" kein sasl2 nur sasl
> > Dann sieh mal in /usr/lib/sasl/ nach, ob da eine smtpd.conf liegt. wenn
> > nicht, dann lege eine als root an und schreibe folgendes rein:
> > pwcheck_method: saslauthd
> > dann ruf bitte mal 'saslauthd -v' auf und poste den output.
> 
> so bin einen Schritt weiter.
> --snip
> # saslauthd -v
> saslauthd 2.1.17

So so, ein Update... :)

> authentication mechanisms: getpwent pam rimap shadow
> --snap

Gut, dann check mal ob es ein sog. state dir für saslauthd gibt, in dem
der daemon v.a. seinen socket etablieren darf. Typische Pfade sind
/var/state/saslauthd oder /var/run/saslauthd. Wenn es das noch nicht
gibt, dann als 'root' erstellen.

Danach checkst Du, ob Dein syslog auth infos loggt:
# cat /etc/syslog.conf
...
auth.*                          /var/log/auth
...

Wenn nicht, dann eintragen und syslog neu starten.


> Wo setze ich jetzt in der main.cf die Authentifiezierungsmethode?

Also in der main.cf definierst Du, wie der smtpd daemon sich den clients
gegenüber verhalten soll:

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes

smtpd_sender_restrictions =
   permit_sasl_authenticated,
   ...


Da Du jettz auf Cyrus-SASL.2.x upgegradest hast, mußt Du als nächstes
nicht mehr in /usr/lib/sasl, sondern (!) in /usr/lib/sasl2 eine
smtpd.conf erstellen. In der Datei definierst Du für Postfix smtpd
daemon, an welchen 'password verification service' es sich wenden soll:

# vi /usr/lib/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login

Die mech_list kontrolliert, welche Mechanismen angeboten werden sollen.
saslauthd kann 'nur' plaintext Mechanismen, wie PLAIN und LOGIN. Biete
nichts anderes an, damit nicht ein mail client auf die Idee kommt, er
würde gerne z.B. NTLM oder OTP haben und saslauthd kann dann gar nicht
damit umgehen...

So, jetzt reloades Du mal Postfix und checkst mit einem 'telnet localhost
25' ob er nach einem 'EHLO foo' "AUTH PLAIN LOGIN" anbietet. Wenn nicht,
dann stimmt was nicht ;)

Wenn Postfix AUTH anbietet, dann starte saslauthd mit Angabe des Pfades
und der gewünschten Methode (z.B.  shadow) im Debug Modus '-d' (nicht über
init-skripte...)

# saslauthd -m /pfad/zu/state_dir -a methode -d

Dann prüfst Du, ob saslauthd jetzt seinen socket im state dir erstellt
hat. Wenn er das hat, dann kannst Du Authentisierung testen. Dazu
brauchst Du entweder die Software 'testsaslauthd', die nicht in
vielen|allen Distributionen dabei ist, oder Du benützt einen Postfix
telnet session.

In jedem Fall ist ein gültiger username mit entsprechendem password
nötig.

Wenn Du einen telnet session machst, dann erstell Dir mit 

# perl -MMIME::Base64 -e 'print encode_base64("username\0username\0password");'

den auth string und dann geht's los:

S: 220 mail.example.com ESMTP Postfix (1.1.7)
C: EHLO example.com
S: 250-mail.example.com
S: 250-PIPELINING
S: 250-SIZE 10240000
S: 250-VRFY
S: 250-ETRN
S: 250-AUTH DIGEST-MD5 CRAM-MD5 GSSAPI PLAIN LOGIN
S: 250-AUTH=DIGEST-MD5 CRAM-MD5 GSSAPI PLAIN LOGIN
S: 250-XVERP
S: 250 8BITMIME

C: AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz

Du gibst AUTH, dann den Mechanismus und dann den string an

S: 235 Authentication successful

Wenn das hier dann da steht, läufts so wie es soll...

C: QUIT
S: 221 Bye

Wenn nicht, dann wirf einen Blick auf die shell in der saslauthd im
Debug Modus läuft und ins log /var/log/auth.

Denk daran, dass man den auth string super einfach wieder DE-coden kann.
Wenn Du den also auf die Liste hier postest, sollte es nur ein
'testuser' sein ;)

p at rick


-- 
Patrick Koetter <p at state-of-mind.de>
http://postfix.state-of-mind.de/patrick.koetter/




Mehr Informationen über die Mailingliste Postfixbuch-users