Postfix fuer ausgehende Mails einrichten

Viele Anwendungen müssen Mails verschicken: Passwort-Reset, Benachrichtigungen, Cronjob-Outputs.
Postfix als lokaler Mail-Relay ist dafür die sauberste Lösung ohne einen externen SMTP-Dienst einzubinden.

Installation

sudo apt-get install postfix

Beim Setup-Dialog "Internet Site" auswählen und den Hostnamen eingeben.

Konfiguration für ausgehende Mails

sudo nano /etc/postfix/main.cf

Wichtige Einstellungen.

myhostname = server.meinedomain.de
mydomain = meinedomain.de
myorigin = $mydomain
inet_interfaces = loopback-only
mydestination =
relayhost =

inet_interfaces = loopback-only sorgt dafür dass Postfix nur lokale Verbindungen annimmt und nicht von außen erreichbar ist.

sudo systemctl restart postfix

Test

echo "Testmail vom Server" | mail -s "Test" mail@beispiel.de

Falls mail nicht vorhanden ist.

sudo apt-get install mailutils

Warum Mails im Spam landen

Ohne SPF, DKIM und einen sauber konfigurierten Reverse-DNS-Eintrag landen Mails von eigenen Servern oft direkt im Spam.
Für transaktionale Mails die ankommen müssen ist ein dedizierter SMTP-Dienst wie Mailgun, Postmark oder SES die zuverlässigere Wahl.

Postfix als lokaler Relay reicht aber für Benachrichtigungen, Monitoring-Mails und Cronjob-Ausgaben bei denen es nicht schlimm ist wenn mal eine verloren geht.

Relay über externen SMTP

Wer einen SMTP-Account hat kann Postfix als Relay konfigurieren.

relayhost = [smtp.mailgun.org]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
echo "[smtp.mailgun.org]:587 benutzer@domain:passwort" | sudo tee /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
sudo systemctl restart postfix