Good to Know Database

CentOS 5: Postfix soll E-Mails über SMTP-Relay-Server versenden


Die folgende Anleitung soll Ihnen zwei Möglichkeiten zeigen, wie Sie von einem internen Mailserver über einen SMTP-Relay-Server oder auch Smarthost genannt, E-Mails an beliebige externe E-Mail-Adressen versenden können. Es werden hier als Beispiel die Mailserver von GMX.net und Web.de als Smarthosts verwendet. Damit Sie E-Mails über einen SMTP-Relay-Server versenden können, benötigen Sie in der Regel einen gültigen Account auf diesem Mailserver.

Das folgende Tutorial setzt voraus, dass Sie bereits wie auf der Seite CentOS 5: Postfix und Cyrus beschrieben einen Mailserver installiert haben.

E-Mails eines einzelnen Benutzers weiterleiten

In diesem Abschnitt wird Postfix so konfiguriert, dass nur ein einzelner Benutzer E-Mails an beliebige externe Adressen versenden kann.

Die Postfix-Konfiguration kann mit dem Befehl postconf bearbeitet werden. Zuerst geben wir die Adresse des Smarthosts mit dem Parameter relayhost an.

[root@centos5 ~]# postconf -e 'relayhost = [mail.gmx.net]'

Durch den Parameter smtp_sasl_auth_enable wird die SASL-Authentification für SMTP aktiviert.

[root@centos5 ~]# postconf -e 'smtp_sasl_auth_enable = yes'

Da wir keine anonyme Anmeldung verwenden wollen, wird der Parameter smtp_sasl_security_options mit dem Wert noanonymous gesetzt.

[root@centos5 ~]# postconf -e 'smtp_sasl_security_options = noanonymous'

Wenn es der jeweilige Smarthost unterstützt können Sie hier noch zusätzlich noplaintext setzen. GMX.net unterstützt dies leider nicht, was Postfix Ihnen mit der folgenden Fehlermeldung mitteilen würde.

SASL authentication failed; cannot authenticate to server mail.gmx.net[213.165.64.20]: no mechanism available

Damit Postfix dem lokalen Benutzernamen eine gültige Absenderadresse zuordnen kann, geben Sie mit dem Parameter sender_canonical_maps den Pfad zur entsprechenden Zuordnungstabelle an. Sendet der lokale Benutzer eine E-Mail, ändert Postfix die lokale Absenderadresse entsprechend der hier eingetragenen Zuordnung in eine externe Adresse um.

[root@centos5 ~]# postconf -e 'sender_canonical_maps = hash:/etc/postfix/sender_canonical'

Der Parameter smtp_sasl_password_maps gibt den Pfad zur Tabelle mit den Zugangsdaten des Smarthosts an.

[root@centos5 ~]# postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'

Mit dem folgenden Befehl erstellen Sie die Datei /etc/postfix/sender_canonical und ordnen dem lokalen Benutzer georg die externe E-Mail-Adresse email-adresse@gmx.net zu.

[root@centos5 ~]# echo "georg email-adresse@gmx.net" > /etc/postfix/sender_canonical

Damit nur der Benutzer root diese Datei lesen und bearbeiten kann, müssen Sie gegebenenfalls die Zugriffsrechte ändern.

[root@centos5 ~]# chown root:root /etc/postfix/sender_canonical
[root@centos5 ~]# chmod 0600 /etc/postfix/sender_canonical

Jetzt müssen Sie die Datei /etc/postfix/sender_canonical in ein für Postfix lesbares Format konvertieren.

[root@centos5 ~]# postmap /etc/postfix/sender_canonical

Der folgende Befehl erstellt die Datei /etc/postfix/sasl_passwd in welche die Zugangsdaten für den SMTP-Relay-Server eingetragen werden.

[root@centos5 ~]# echo "[mail.gmx.net] email-adresse@gmx.net:passwort" > /etc/postfix/sasl_passwd

Besonders auf diese Datei sollte kein unbefugter Benutzer zugreifen können, daher ändern Sie die Zugriffsrechte wie folgt.

[root@centos5 ~]# chown root:root /etc/postfix/sasl_passwd
[root@centos5 ~]# chmod 0600 /etc/postfix/sasl_passwd

Auch diese Datei wird mit dem Befehl postmap konvertiert.

[root@centos5 ~]# postmap /etc/postfix/sasl_passwd

Die Konfiguration von Postfix ist hiermit abgeschlossen und Sie können sie mit dem folgenden Befehl neu laden.

[root@centos5 ~]# service postfix reload

Um die korrekte Funktion sicherzustellen, senden Sie vom angegebenen Benutzer (hier georg) eine E-Mail an einen externen Empfänger und betrachten das Logfile /var/log/maillog.

[root@centos5 ~]# tail -f /var/log/maillog

Die Ausgabe sollte wie folgt aussehen.

Aug 10 18:49:03 centos5 postfix/pickup[26303]: 92CFE1C94B9: uid=500 from=<georg>
Aug 10 18:49:03 centos5 postfix/cleanup[26362]: 92CFE1C94B9: message-id=<20090810164903.92CFE1C94B9@centos5.home.lan>
Aug 10 18:49:03 centos5 postfix/qmgr[26304]: 92CFE1C94B9: from=<email-adresse@gmx.net>, size=338, nrcpt=1 (queue active)
Aug 10 18:49:04 centos5 postfix/smtp[26364]: 92CFE1C94B9: to=<empfaenger@domain.de>, relay=mail.gmx.net[213.165.64.21]:25, delay=1.3, delays=0.07/0.02/0.51/0.73, dsn=2.6.0, status=sent (250 2.6.0 Message accepted {mp005})
Aug 10 18:49:04 centos5 postfix/qmgr[26304]: 92CFE1C94B9: removed

SMTP-Relay-Server in Abhängigkeit des Absenders auswählen

Die Konfiguration aus dem vorhergehenden Abschnitt hat den Nachteil, dass nur ein SMTP-Relay-Server und nur eine externe Absenderadresse verwendet werden kann. Wenn Sie mehrere lokale Benutzer haben, welche E-Mails an externe Adressen senden wollen, funktioniert die beschriebene Methode nicht mehr. Seit der Version 2.3 kann Postfix je nach Absender die E-Mails über verschiedene SMTP-Server mit individuellen Authentifizierungsdaten versenden.

Die folgenden Befehle kennen Sie bereits aus dem vorhergehenden Abschnitt und werden hier nicht nochmals beschrieben.

[root@centos5 ~]# postconf -e 'smtp_sasl_auth_enable = yes'
[root@centos5 ~]# postconf -e 'smtp_sasl_security_options = noanonymous'
[root@centos5 ~]# postconf -e 'smtp_connection_cache_on_demand = no'
[root@centos5 ~]# postconf -e 'sender_canonical_maps = hash:/etc/postfix/sender_canonical'
[root@centos5 ~]# postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'

Zusätzlich zu den bekannten Parametern müssen Sie die Sender-abhängige Authentifizierung mit dem Parameter smtp_sender_dependent_authentication aktivieren und eine weitere Zuordnungstabelle angeben.

[root@centos5 ~]# postconf -e 'smtp_sender_dependent_authentication = yes'
[root@centos5 ~]# postconf -e 'sender_dependent_relayhost_maps = hash:/etc/postfix/sender_dependent_relayhost'

In der Datei /etc/postfix/sender_canonical werden den lokalen Benutzern wieder gültige externe Adressen zugeordnet.

[root@centos5 ~]# echo "georg email-adresse@gmx.net" >> /etc/postfix/sender_canonical
[root@centos5 ~]# echo "hans email-adresse@web.de" >> /etc/postfix/sender_canonical
[root@centos5 ~]# chown root:root /etc/postfix/sender_canonical
[root@centos5 ~]# chmod 0600 /etc/postfix/sender_canonical
[root@centos5 ~]# postmap /etc/postfix/sender_canonical

Die Datei /etc/postfix/sender_dependent_relayhost enthält die Zuordnungen von Absenderadresse und dem dazugehörigen SMTP-Relay-Server.

[root@centos5 ~]# echo "email-adresse@gmx.net [mail.gmx.net]" >> /etc/postfix/sender_dependent_relayhost
[root@centos5 ~]# echo "email-adresse@web.de [smtp.web.de]" >> /etc/postfix/sender_dependent_relayhost
[root@centos5 ~]# chown root:root /etc/postfix/sender_dependent_relayhost
[root@centos5 ~]# chmod 0600 /etc/postfix/sender_dependent_relayhost
[root@centos5 ~]# postmap /etc/postfix/sender_dependent_relayhost

Mit der Datei /etc/postfix/sasl_passwd ordnen Sie den Absenderadressen die dazugehörigen Zugangsdaten für die SMTP-Relay-Server zu.

[root@centos5 ~]# echo "email-adresse@gmx.net email-adresse@gmx.net:passwort" >> /etc/postfix/sasl_passwd
[root@centos5 ~]# echo "email-adresse@web.de email-adresse@web.de:passwort" >> /etc/postfix/sasl_passwd
[root@centos5 ~]# chown root:root /etc/postfix/sasl_passwd
[root@centos5 ~]# chmod 0600 /etc/postfix/sasl_passwd
[root@centos5 ~]# postmap /etc/postfix/sasl_passwd

Die Konfiguration von Postfix ist hiermit abgeschlossen und Sie können sie mit dem folgenden Befehl neu laden.

[root@centos5 ~]# service postfix reload

Um die korrekte Funktion sicherzustellen, senden Sie von einem lokalen Benutzer eine E-Mail an einen externen Empfänger und betrachten das Logfile /var/log/maillog.

[root@centos5 ~]# tail -f /var/log/maillog

Die Ausgabe sollte wieder wie folgt aussehen.

Aug 10 19:44:39 centos5 postfix/pickup[26735]: CBCF41C990C: uid=500 from=<georg>
Aug 10 19:44:39 centos5 postfix/cleanup[26763]: CBCF41C990C: message-id=<20090810174439.CBCF41C990C@centos5.home.lan>
Aug 10 19:44:39 centos5 postfix/qmgr[26736]: CBCF41C990C: from=<email-adresse@gmx.net>, size=333, nrcpt=1 (queue active)
Aug 10 19:44:41 centos5 postfix/smtp[26765]: CBCF41C990C: to=<empfaenger@domain.de>, relay=mail.gmx.net[213.165.64.20]:25, delay=1.2, delays=0.04/0.02/0.45/0.73, dsn=2.6.0, status=sent (250 2.6.0 Message accepted {mp025})
Aug 10 19:44:41 centos5 postfix/qmgr[26736]: CBCF41C990C: removed

Weiterführende Tutorials

CentOS 5: Empfängeradressen durch Postfix umschreiben
CentOS 5: Verbindungen zwischen Postfix und SMTP-Relay-Server mit TLS verschlüsseln


Dieser Eintrag wurde am 12.08.2009 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_727.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2016 by Georg Kainzbauer