Navigationsleiste  |    Direktzugriff   |    SMTP Auth   |    Home  


Postfix mit SMTP Auth absichern


4.2 Eingehende Verbindungen

Diese Konfiguration dient dazu die eingehenden Emails, also alle Emails die Postfix annimmt zu überprüfen. Es ist erstmal egal ob die Emails lokal verteilt oder an den Relayhost geliefert werden.
Der Server soll so konfiguriert werden das er ohne Authentifizierung keine Emails mehr annimmt.

Dazu passen wir die Cyrus SASL Konfiguration an, diese steht in der Datei /usr/lib/sasl/smtpd.conf (oder evtl. /usr/local/lib/sasl/smtpd.conf ).
In dieser Datei steht drin, woher SASL die Usernamen und Paßwörter beziehen soll. Folgende Optionen gibt es:

pwcheck_method: pam Hier wird PAM benutzt; hiermit lassen sich Anmeldungen über LDAP, RADIUS oder NIS durchführen
pwcheck_method: shadow Es wird die Datei /etc/shadow gelesen. Problematisch da der Postfix-User Leserechte auf die Datei braucht
pwcheck_method: sasldb SASL benutzt seine eigene Datenbank
pwcheck_method: pwcheck Eine alternative zum Lesen der /etc/shadow. Hier wird ein pwcheck helper daemon benutzt
pwcheck_method: kerberos_v4 Authentifizierung mit Kerberos


Ich finde die Methode mit der SASL eigenen Datenbank am günstigsten (pwcheck_method: sasldb). Damit haben die Benutzer keinen weiteren Account im System. Allerdings geht das nur wenn die Emails nicht lokal gespeichert werden sollen ( Stichwort /var/spool/mail )

Nach der Installation aus den Quellen fehlt diese Datei, also legen wir sie an und benutzen hier erstmal die SASL-Datenbank (/usr/lib/sasl/smtpd.conf oder evtl. /usr/local/lib/sasl/smtpd.conf, bzw. in dem Verzeichnis in dem die libplain.so liegt) :

#Check mit SASL Datenbank
pwcheck_method: sasldb

Jetzt müssen wir unsere User noch anlegen, dazu dient das Programm saslpasswd :

[root]# saslpasswd -a smtpd -c tux
Password:
Again (for verification):
[root] :~# sasldblistusers
user: tux realm: benton mech: PLAIN
user: tux realm: benton mech: CRAM-MD5
user: tux realm: benton mech: DIGEST-MD5


Damit hat Benutzer tux sein Paßwort; das Programm sasldblistusers zeigt alle Benutzer und die Möglichkeiten der Anmeldung an( hier: PLAIN, CRAM-MD5 und DIGEST-MD5)
Hinter realm steht der Name des Servers (hier benton), diesen Namen merken.

So nun wird Postfix angepaßt, in der Datei /etc/postfix/main.cf muß folgendes zur normalen Installation hinzugefügt werden:

#SMTPD Auth
#SMTPD mit SASL-Authentification verwenden
smtpd_sasl_auth_enable = yes

#Der Wert von realm (meist der lokale Servername)
smtpd_sasl_local_domain = benton

#Zusatz-Optionen: Keine anonyme-Anmeldung verwenden
smtpd_sasl_security_options = noanonymous

#Wieder ein Workaround für ältere Clients und Outlook
broken_sasl_auth_clients = yes


#nur SASL Zugänge erlauben
#smtpd_recipient_restrictions = permit_sasl_authenticated, reject

# ODER meine Netze und SASL erlauben
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, check_relay_domains, reject  

Noch ein Hinweis zu den beiden letzten Einträgen:
Damit legst du fest wann du den Versand von Emails erlauben willst. Beim ersten (smtpd_recipient_restrictions = permit_sasl_authenticated, reject) wird nur noch per SMTP Auth angemeldeten User das Versenden von Emails erlaubt.
Bei der zweiten (smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, check_relay_domains, reject) wird den internen Netzen (permit_mynetworks, check_relay_domains,) und allen per SMTP Auth angemeldeten User das Versenden von Emails erlaubt.

Im nächsten Schritt überprüfen wir das Ganze:

[root]# postfix check
[root]# postconf
....
broken_sasl_auth_clients = yes
.....
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = benton
smtpd_sasl_security_options = noanonymous
...

postfix check sollte keine Fehler melden; aber Achtung: Es werden keine Schreibfehler gefunden !!


Achtung alle Debianer haben nun noch eine Falle:
Unter Debian läuft Postfix im chroot, das heißt Postfix wird eine kleinere System-Umgebung vorgegaukelt. Das hat den Vorteil, knackt ein Cracker deinen Postfix, findet er nur diese kleinere System-Umgebung und hat keinen Zugriff auf dein System.
Das Problem an der Sache ist aber, das Postfix nicht auf /etc zugreifen kann. Deswegen muß die Datei /etc/sasldb nach /var/spool/postfix/etc kopiert werden und evtl. die Rechte angepaßt werden (lesen für Postfix).

Test

Zuerst brauchst du einen Email-Client der SMTP Auth kann, die meisten können es aber.
Im Client gibst du deinen Benutzer-Namen und dein Paßwort an, bei Outlook unter Server "Server erfordert Authentifizierung" ein Häkchen setzen.

Damit wir etwas mehr in den Log-Files sehen, aktivieren wir die Debug-Option des smtpd in der Datei /etc/postfix/master.cf:

smtp unix    -    -    -    -    -    smtpd -v

Das -v ist das wichtige, bitte den smtpd nehmen und nicht den smtp. Danke!

Damit Postfix auch weiß was er machen soll, starten wir ihn wieder, bzw. erzwingen das Neueinlesen der Konfiguration:

[root]# postfix start     #Wenn kein Postfix läuft ODER
[root]# postfix reload    #Wenn Postfix läuft

In der Datei /var/log/mail.info (könnte auch anders heißen, einfach mal suchen) solltest du sowas sehen:

Jul 17 08:42:52 benton postfix/smtpd[27298]: connect from ac01.example.net [192.168.44.20]
Jul 17 08:42:55 benton postfix/smtpd[27298]: 54016CD85: client=ac01.example.net[192.168.44.20], sasl_method=PLAIN, sasl_username=markus

Was sagt uns das ??
Der Rechner ac01.example.net meldet sich beim Server ( connect from ac01.example.net ),
danach erfolgt die Authentifizierung, diese hier funktioniert ( client=ac01.example.net[192.168.44.20], sasl_method=PLAIN, sasl_username=markus ).

Sollte hier was anderes stehen, hast du einen Fehler ;-))
Achte auf die chroot (siehe oben); ob dein Postfix unter chroot läuft, findest du in der Datei /etc/master.conf:

 
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (50)
# ==========================================================================
smtp inet n - - - - smtpd ..... local unix - n n - - local ....

Nur wo in der Spalte chroot ein "n" steht, läuft Postfix NICHT im chroot, das heißt, fast alles läuft im chroot. (Dank an Lupe Christoph)


Wenn du das alles gelesen hast, hast du es geschafft!! Postfix empfängt die Emails mit Authentifizierung !!!
Nimm dir einen Keks und sei stolz ;-))

Aber du solltest das -v aus der master.cf wieder rausnehmen, sonst wird das Logfile sehr groß (denk nach der Änderung an das postfix reload)



Eingehende Verbindung Inhalt    Quellen, Doku und Links

Erstellt: 2002-07-25 Autor: Markus Ungermann     Kontakt
Letztes Update: 2003-02-27    URL: http://www.tuxhausen.de/postfix_smtp_auth.html