Good to Know Database

CentOS 6: 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 6: 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@centos6 ~]# postconf -e 'relayhost = [mail.gmx.net]'

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

[root@centos6 ~]# 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@centos6 ~]# postconf -e 'smtp_sasl_security_options = noanonymous'

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@centos6 ~]# 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@centos6 ~]# 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@centos6 ~]# 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@centos6 ~]# chown root:root /etc/postfix/sender_canonical
[root@centos6 ~]# 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@centos6 ~]# 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@centos6 ~]# 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@centos6 ~]# chown root:root /etc/postfix/sasl_passwd
[root@centos6 ~]# chmod 0600 /etc/postfix/sasl_passwd

Auch diese Datei wird mit dem Befehl postmap konvertiert.

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

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

[root@centos6 ~]# 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@centos6 ~]# tail -f /var/log/maillog

Die Ausgabe sollte wie folgt aussehen.

Aug 31 10:32:16 centos6 postfix/pickup[26303]: 81CAE659A89: uid=500 from=<georg>
Aug 31 10:32:16 centos6 postfix/cleanup[26362]: 81CAE659A89: message-id=<20130831103116.81CAE659A89@centos6.home.lan>
Aug 31 10:32:16 centos6 postfix/qmgr[26304]: 81CAE659A89: from=<email-adresse@gmx.net>, size=338, nrcpt=1 (queue active)
Aug 31 10:32:17 centos6 postfix/smtp[26364]: 81CAE659A89: 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 31 10:32:17 centos6 postfix/qmgr[26304]: 81CAE659A89: 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@centos6 ~]# postconf -e 'smtp_sasl_auth_enable = yes'
[root@centos6 ~]# postconf -e 'smtp_sasl_security_options = noanonymous'
[root@centos6 ~]# postconf -e 'smtp_connection_cache_on_demand = no'
[root@centos6 ~]# postconf -e 'sender_canonical_maps = hash:/etc/postfix/sender_canonical'
[root@centos6 ~]# 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@centos6 ~]# postconf -e 'smtp_sender_dependent_authentication = yes'
[root@centos6 ~]# 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@centos6 ~]# echo "georg email-adresse@gmx.net" >> /etc/postfix/sender_canonical
[root@centos6 ~]# echo "hans email-adresse@web.de" >> /etc/postfix/sender_canonical
[root@centos6 ~]# chown root:root /etc/postfix/sender_canonical
[root@centos6 ~]# chmod 0600 /etc/postfix/sender_canonical
[root@centos6 ~]# 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@centos6 ~]# echo "email-adresse@gmx.net [mail.gmx.net]" >> /etc/postfix/sender_dependent_relayhost
[root@centos6 ~]# echo "email-adresse@gmx.de [mail.gmx.net]" >> /etc/postfix/sender_dependent_relayhost
[root@centos6 ~]# echo "email-adresse@web.de [smtp.web.de]" >> /etc/postfix/sender_dependent_relayhost
[root@centos6 ~]# echo "email-adresse@googlemail.com [smtp.googlemail.com]" >> /etc/postfix/sender_dependent_relayhost
[root@centos6 ~]# echo "email-adresse@gmail.com [smtp.gmail.com]" >> /etc/postfix/sender_dependent_relayhost
[root@centos6 ~]# echo "email-adresse@t-online.de [securesmtp.t-online.de]" >> /etc/postfix/sender_dependent_relayhost
[root@centos6 ~]# chown root:root /etc/postfix/sender_dependent_relayhost
[root@centos6 ~]# chmod 0600 /etc/postfix/sender_dependent_relayhost
[root@centos6 ~]# postmap /etc/postfix/sender_dependent_relayhost

Hinweis: Sollten Sie einen T-Online SMTP-Server als Relay-Server verwenden wollen, müssen Sie entweder smtpmail.t-online.de oder securesmtp.t-online.de in der /etc/postfix/sender_dependent_relayhost hinterlegen. Solange die Verbindung zum Relay-Server nicht mit TLS verschlüsselt wird müssen Sie smtpmail.t-online.de angeben. Sobald Sie die SMTP-Verbindung verschlüsseln wollen, müssen Sie hingegen securesmtp.t-online.de angeben.

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

[root@centos6 ~]# echo "email-adresse@gmx.net email-adresse@gmx.net:passwort" >> /etc/postfix/sasl_passwd
[root@centos6 ~]# echo "email-adresse@gmx.de email-adresse@gmx.de:passwort" >> /etc/postfix/sasl_passwd
[root@centos6 ~]# echo "email-adresse@web.de email-adresse@web.de:passwort" >> /etc/postfix/sasl_passwd
[root@centos6 ~]# echo "email-adresse@googlemail.com benutzername:passwort" >> /etc/postfix/sasl_passwd
[root@centos6 ~]# echo "email-adresse@gmail.com benutzername:passwort" >> /etc/postfix/sasl_passwd
[root@centos6 ~]# echo "email-adresse@t-online.de email-adresse@t-online.de:passwort" >> /etc/postfix/sasl_passwd
[root@centos6 ~]# chown root:root /etc/postfix/sasl_passwd
[root@centos6 ~]# chmod 0600 /etc/postfix/sasl_passwd
[root@centos6 ~]# postmap /etc/postfix/sasl_passwd

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

[root@centos6 ~]# 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@centos6 ~]# tail -f /var/log/maillog

Die Ausgabe sollte wieder wie folgt aussehen.

Aug 31 14:10:23 centos6 postfix/pickup[26735]: 59AF12A79C1: uid=500 from=<georg>
Aug 31 14:10:23 centos6 postfix/cleanup[26763]: 59AF12A79C1: message-id=<20130831141023.59AF12A79C1@centos6.home.lan>
Aug 31 14:10:23 centos6 postfix/qmgr[26736]: 59AF12A79C1: from=<email-adresse@gmx.net>, size=333, nrcpt=1 (queue active)
Aug 31 14:10:25 centos6 postfix/smtp[26765]: 59AF12A79C1: 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 31 14:10:25 centos6 postfix/qmgr[26736]: 59AF12A79C1: removed

Weiterführende Tutorials

CentOS 6: Postfix meldet "warning: SASL authentication failure: No worthy mechs found"
CentOS 6: Empfängeradressen durch Postfix umschreiben


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

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

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer