Mailcow: Postfix MTA auf dem Docker Hostsystem verwenden

Auf Linux werden Mails mit einem MTA (Mail Transfer Agent) übermittelt. Dabei spielt es keine Rolle, ob der empfangende Mailserver auf dem gleichen Host läuft oder am anderen Ende der Welt steht. In der Regel sollte maximal ein MTA auf einem System installiert sein, zumal es sonst zu Problemen bei der Portbindung und Übermittlung von Mails kommen kann.

Ist auf dem Hostsystem bereits ein MTA installiert, sei es nur in einem Docker-Container, sollte kein zweiter MTA verwendet werden. Der Port 25, welcher für die Übermittlung von Mails zuständig ist, wird von diesem nämlich bereits belegt. Damit können vom Hostsystem ohne Weiteres keine Statusmails mehr versendet werden. Ein auf dem Hostsystem installierter MTA kann nicht mehr auf besagten Port zugreifen.
Dennoch kann es in der ein oder anderen Situation erforderlich sein Statusinformationen vom Hostsystem zu erhalten. Dies können zum Beispiel Benachrichtigungen bei einem SSH-Login, verfügbare Updates oder sonstige Fehlermeldungen sein.

Installieren von Postfix

Doch wieso wird nun doch ein zweiter MTA installiert? Es läuft doch bereits ein Postfix im Mailcow-Container?
Das ist richtig. Dennoch benötigen Sie einen MTA zum Versenden von Emails. Sie werden Postfix aber so konfigurieren, dass er die Mails nicht eigenständig versendet, sondern lediglich an den Docker-MTA weiterreicht. Zudem werden Sie Postfix den Empfang von Mails untersagen. Diese Aufgabe soll weiterhin von Mailcow übernommen werden.

Installieren Sie Postfix und mailutils über den Paketmanager:

apt-get install postfix mailutils 

Während der Installation erscheint eine Abfrage welche Konfiguration verwendet werden soll. Wählen Sie „Internet Site„.
Es folgt eine weitere Abfrage nach dem Hostnamen des Systems.
Wichtig: Damit es nicht zu Problemen kommt, muss sich der Hostname von Postfix von dem in Mailcow Eingerichteten unterscheiden. In der Regel handelt es sich hierbei um den MX-Record. In diesem Tutorial lautet der in Mailcow verwendete Hostname mail.voiceoverit.de. Für Postfix lautet der Hostname fwd.mail.voiceoverit.de (fwd – forward – weiterleiten). Wählen Sie einen Namen der zu Ihrem Projekt passt.

Postfix konfigurieren:

Erstellen Sie sich zunächst eine Beispielkonfiguration aus der Datei main.cf.proto:

cp /etc/postfix/main.cf.proto /etc/postfix/main.cf

Werfen Sie nun einen Blick in die main.cf. Ergänzen Sie hier erneut den zuvor gewählten Hostnamen bei den Einträgen myhostname und mydomain. Setzten Sie zudem ein Doppelkreuz vor alle nicht benutzten Settings wie sendmail_path oder newaliases_path:

#Hostname und mydomain angeben:
myhostname= fwd.mail.voiceoverit.de
mydomain = fwd.mail.voiceoverit.de
#Doppelkreuz vor nicht konfigurierte Settings setzen:
#sendmail_path =
#newaliases_path =
#mailq_path =
#setgid_group =
#html_directory =
#manpage_directory =
#sample_directory =
#readme_directory =

Nun müssen Sie die Docker Gateway-IP als ein Relayhost für Postfix eintragen. Die folgenden Einstellungen sorgen dafür, dass Postifix die Emails nicht eigenständig versendet, sondern Sie lediglich an Mailcow zur Übermittlung weiterreicht. Die Einstellungen werden von postconf ebenfalls in die main.cf geschrieben. Führen Sie die Commands in der Shell aus:

postconf -e 'relayhost = 172.22.1.1'
postconf -e "mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128"
postconf -e "inet_interfaces = loopback-only"
postconf -e "relay_transport = relay"
postconf -e "default_transport = smtp"

Damit es nun zu keinen Komplikationen mit Mailcow kommt, deaktivieren Sie kurzerhand den Listener von Postfix. Dazu öffnen Sie die /etc/postfix/master.cf und setzen ein Doppelkreuz (#) vor der Zeile mit „smtp“. Postfix wird sich nun nicht mehr an den Port 25 binden. Auch diese Aufgabe kann somit weiterhin Mailcow übernehmen.

#smtp      inet  n       -       y       -       -       smtpd

Tragen Sie ihren gewählten Hostnamen für Postfix noch in /etc/mailname ein:

user@voiceoverit.de: nano /etc/mailname
fwd.mail.voiceoverit.de

Starten Sie Postfix anschließend neu:

/etc/init.d/postfix restart

Testen:

Um Ihre Einstellungen zu testen, können Sie eine Mail aus der Shell heraus versenden. Hierfür können Sie folgenden Command benutzen:

echo "Test Email von Postfix" | mail -s "Postfix test" email@example.com

Weitere Artikel zum Thema Mailcow:
Mailcow bei Voiceoverit.de

Weiterführende Links / Quellen:
Mailcow Documentation

Einzelbildnachweis:
Header-Bild: Pixabay.com – Autor: ribkhan

Ein Kommentar

  1. DANKE! Hat auf Anhieb auf meinem Mailcow-dockerized System funktioniert, ich bin begeistert! Super wäre noch eine Ergänzung, wie man die root-Systemmails auf ein Mailkonto der Mailcow weiterleitet.

Kommentare sind geschlossen.