| Navigationsleiste | Direktzugriff | SMTP Auth | Home |
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).
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:
# ========================================================================== |
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 |