Um auf einem Linux Server (in meinem Beispiel Ubuntu) Mails versenden zu können, kann Postfix als SMTP Server konfiguriert werden.
Postfix installieren
Postfix lässt sich am schnellsten mit den Mail-Utils installieren
sudo apt update
sudo apt install mailutils
Während der Installation fragt Postfix nach dem Modus in dem es installiert werden soll
Als Standard-Option ist «Internet Site» vorbelegt. Dies ist für unseren Anwendungsfall korrekt. Sollte diese Meldung während der Installation nicht erfolgen, so kann dies mit folgenem Befehl die Konfiguration von Postfix nochmals durchgeführt werden:
sudo dpkg-reconfigure postfix
Anschliessend den Namen des Servers festlegen. Der System-E-Mail-Name muss gleich sein wie der Name, welcher deim erstellen des Servers diesem zugewiesen wurde.
Konfiguraton von Postfix
Nun muss die Konfiguration von Postfix angepasst werden, so dass die E-Mails über einen externen SMTP Server versandt werden können.
sudo nano /etc/postfix/main.cf
Folgende Zeilen müssen angepasst werden (bestehende Werte ersetzen)
inet_interfaces = loopback-only
mydestination = localhost.$mydomain, localhost, $myhostname
SMTP Authentification über SASL aktivieren
In der main.cf folgende weiteren Zeilen erweitern (relayhost ist bereits im File vorhanden)
smtp_use_tls = yes
smtp_tls_wrappermode = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
relayhost = [mail.domain.ch]:465
–> relayhost muss mit dem genutzten Mailserver ergänzt werden.
sasl_passwd Datei erstellen
Nun die sasl_passwd Datei erstellen
sudo nano /etc/postfix/sasl_passwd
Folgenden Inhalt einfügen:
Anschliessend die Datenbank hashen[mail.domain.ch]:port user:pass
sudo postmap /etc/postfix/sasl_passwd
Nun Postfix neustarten
sudo service postfix restart
Test-E-Mail versenden
Über folgenden Befehl kann nun getestet werden ob E-Mails über Postfix versandt werden können:
echo "Das ist der E-Mail Inhalt!" | mail -s "Betreff des Mails" -a "From: absender@domain.ch" empfaenger@domain.ch
Sollte kein E-Mail ankommen, so kann im Logfile nachgeschaut werden was Postfix zurückmeldet:
tail -100 /var/log/mail.log
Absenderadresse fix einstellen
Je nach dem kann es sinn machen, eine fixe E-Mailadresse als Absender einzustellen, da über den SMTP Server nur definierte E-Mailadressen oder Domains verwendet werden können. Diese Konfiguration ändert die Absenderadressen sowohl von lokalem als auch von weitergeleitetem SMTP-Mailverkehr:
In der /etc/postfix/main.cf folgendes einfügen:
sender_canonical_classes = envelope_sender, header_sender
sender_canonical_maps = regexp:/etc/postfix/sender_canonical_maps
smtp_header_checks = regexp:/etc/postfix/header_check
Rewrite der Absenderadresse von E-Mails, die vom Server selbst stammen.
In der /etc/postfix/sender_canonical_maps folgendes hinterlegen:
/.+/ adresse@domain.ch
Rewrite von Adressen welche über SMTP relayed wurden
In der /etc/postfix/header_check folgendes hinterlegen:
/From:.*/ REPLACE From: adresse@domain.ch