Postfix und SMTP-AUTH unter Debian Woody / Sarge
Nachdem ich es schon 2-3 mal probiert habe und jedesmal gescheitert bin, habe ich es jetzt endlich geschafft - SMTP-AUTH unter Debian funktioniert. Einige Provider wie z.B. 1&1 und der ganze Schlund.de-Verbund haben Ihre MailServer so umgestellt, dass man zum abliefern von Mails sich zunächst autentifizieren muss - so wie man es beim Abrufen der Mails via POP3 oder IMAP ja auch tun muss.
Hierbei kann man zwei unterschiedliche Stellen definieren, an denen SMTP-AUTH eingesetzt wird, je nachdem ob der annehmende Mailserver ( z.B. von 1&1 - also am Maileingang) oder der abliefernde Mailserver (z.B. der eigene - also am Mailausgang) mt SMTP-AUTH konfiguriert werden soll.
benötigte Programme
Wie sich jetzt heraus gestellt hat, scheiterte meine Installation vorher immer, weil ich nicht alle Pakete installiert hatte. Folgende Pakete habe ich installiert
- postfix
- postfix-tls
- sasl-bin
- libsasl2
- libsasl-modules-plain
- libsasl-digestmd5
- libsasl2-modules-kerberos-heimdal
- libsasl2-modules-gssapi-heimdal
- libsasl2-modules
Ob ich wirklich alle Pakete brauche, habe ich nicht ausprobiert - ich schreibe diese Anleitung jetzt gerade aus dem Kopf und anhand der Systemlogfiles auf, nachdem ich endlich das erste System erfolgreich konfiguriert habe.
SMTP AUTH am Eingang
SMTP AUTH am Eingang bedeutet, dass der eigene Mailserver nur dann Mails annimmt, wenn der Benutzer sich vorher mit Name und Passwort authentifiziert hat. Das habe ich bis dato noch nicht eingerichtet - kommt aber ggf. noch.
SMTP-AUTH am Ausgang
SMTP-AUTH am Ausgang bedeutet also, dass der eigene Mailserver sich authentifiziert, wenn er Mails am Relayhost abgiibt.
Konfiguration
Die Konfiguration wird in die Datei /etc/postfix/main.cf eingetragen.
- smtp_sasl_auth_enable = yes
- smtp_sasl_security_options = noanonymous
- smtp_always_send_ehlo = yes
- smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
relayhost = <der.server.des.providers.mit.smtp-auth>
Die Datei /etc/postfix/smtp_auth enthält die Passwörter für die einzelnen Mailserver gegenüber denen sich der eigene Mailserver authentifizieren können soll. Für jeden Mailserver fügt man eine Zeile der Form "Mailserver Benutzername: Passwort". (Anmerkung: hinter dem Doppelpunkt kommt kein Leerzeichen, ab sonst hat mir das Wiki da einen Link eingefügt) hinzu. Diese Datei muss man anschließend noch ins Hash-Format bringen. Dazu dient der Befehl "postmap /etc/postfix/smtp_auth". Die beiden Dateien smtp_auth und smtp_auth.db sollte man abschließend noch dringend nur für root zugänglich machen (chmod 600 smtp_auth[.db]).
Test
Vor einem Test, sollte man dafür sorgen, dass mehr Einträge ins Logfile gemacht werdern, damit die Log-Files aussagekräftiger sind. Hierzu in der Datei master.cf den Eintrag für das smtp-Commando (nicht für smtpd!!) um ein -v erweitern. Vor dem Test muss noch sichergestellt werden, das Postfix mit der aktuellen Konfiguration arbeitet. Hierzu einfach ein "postfix reload" ausführen.
Wenn nun eine Mail vom eigenen Mailserver an den Mailserver mit SMTP-AUTH gesendet wird, dann sollten sich Einträge der folgenden Form im Logfile /var/log/mail.info finden
linuxserver postfix/smtp[3189]: < authmailonline.kundenserver.de[212.227.15.132]: 250-SIZE 20971520
linuxserver postfix/smtp[3189]: < authmailonline.kundenserver.de[212.227.15.132]: 250-PIPELINING
linuxserver postfix/smtp[3189]: < authmailonline.kundenserver.de[212.227.15.132]: 250-AUTH=PLAIN LOGIN
linuxserver postfix/smtp[3189]: < authmailonline.kundenserver.de[212.227.15.132]: 250-AUTH PLAIN LOGIN
linuxserver postfix/smtp[3189]: < authmailonline.kundenserver.de[212.227.15.132]: 250-STARTTLS
linuxserver postfix/smtp[3189]: < authmailonline.kundenserver.de[212.227.15.132]: 250 HELP
- ...
linuxserver postfix/smtp[3189]: > authmailonline.kundenserver.de[212.227.15.132]: AUTH PLAIN Y2M4NDY4NDc3LTUAY2M4NDY4NDc3LTUASm1EcmFnMG4x
linuxserver postfix/smtp[3189]: < authmailonline.kundenserver.de[212.227.15.132]: 235 Authentication succeeded
- ...
linuxserver postfix/smtp[3189]: 244E37F37: to=<xxxx>, relay=authmailonline.kundenserver.de[212.227.15.132], delay=2, status=sent (250 OK id=1AcPjM-0002TW-00)
Anmerkungen:
auth.mail.onlinehome.de ist der Load-Balancer von 1&1 hinter dem sich mehere Mailserver befinden, die dann unteranderem authmailonline.kundenserver.de heissen.
- zunächst begrüßt der Mailserver des Providers den eigenen Mailserver und bietet u.a. auth plain login an.
- der eigne Mailserver authentifiziert sich anhand der smtp_auth.db am Mailserver des Providers der das ganze bestätigt.
- am Ende der Übertragung steht die Bestätitigung des Übersenden der Email
Abschließendes
Wenn alles Funktioniert, sollte der "smtp -v" Eintrag aus der master.cf wieder entfernt werden, damit das Logfile nicht so groß wird und nochmals die Konfiguration mit "postfix reload" neu einlesen.