Problem:
Ein Server soll als Relayhost (oder auch Smarthost) dienen. (Z.B. innerhalb eines (Firmen-)Netzwerks.)
Er soll also ausgehende Emails annehmen und diese an einen Mail-Server (nicht den Bestimmungsserver) weiterleiten, der den weiteren Versand dann übernimmt.
Evtl. ist es auch nur ein interner/experimenteller Webserver, der hin und wieder Emails (Forum, Blog, Ticket-System, Rechnungen, etc.) verschicken soll.
Aber die Emails werden wegen einer dynamischen IP von anderen Mailservern nicht angenommen.
Ein anderer Grund für solch eine Konfiguration wäre z.B. auch ein MX-Backup-Server, der erstmal Emails an nimmt, wenn der primäre MX nicht antwortet/ausgefallen ist. Er versucht dann solange die Emails an den primären MX-Server zu zustellen, bis er sie endlich wieder annimmt.
Lösung:
In der Postfix-Konfiguration /etc/postfix/main.cf müssen folgende Ergänzungen gemacht werden:
#Externen-Server benennen:
#mit MX-Auflösung:
relayhost = mail.externer-server.de
#ohne MX-Auflösung:
relayhost = [mail.externer-server.de]
#SMTP mit SASL-Authentification verwenden
smtp_sasl_auth_enable = yes
#Die Passwort-Datei
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
#Identifikationsmethode:
smtp_sasl_security_options = noanonymous
Nun brauchen wir die darin genannte <code>smtp_auth<code> als Map-Datei:code>code>
mail.externer-server.de user:passwort
Erstellen der Map-Datei:
postmap smtp_auth
Postfix neu starten:
/etc/init.d/postfix restart
Anmerkung:
Natürlich muß man <code>relayhostcode> nur einmal angeben. Entweder mit MX-Auflösung oder ohne. (Letzteres wäre Empfohlen.)
Mails die lokal zugestellt werden sollen, werden natürlich nicht über den Relayhost geroutet.
Probleme:
Falls Probleme auftauchen, die nicht direkt aus dem Maillog ersichtlich sind, kann man noch den Loglevel für den SMTP-Versand in der Datei <code>/etc/postfix/master.cfcode> erhöhen:
smtp unix - - - - - smtp -v
Bei manchen Home-/Firmen-Servern kann es sein, dass die Sasl-Libary fehlt. Dieses muss entsprechend nachinstalliert. Bei Debian heißt das benötigte Paket z.B. <code>libsasl2-modulescode>.