Mails mit Postfix versenden
Sobald Mailversand auf einem Server benötigt wird, muss der lokale MTA (Mail Transfer Agent) - z. B. Postfix - so konfiguriert werden, dass er sich beim Mailserver mit einem Benutzernamen und Kennwort anmeldet. Im folgenden wird eine minimale Postfix - Konfiguration inkl. SASL2 auf einem Debian Buster (10) erstellt und getestet.
Installation benötigter Pakete
Neben dem Paket für Postfix selber wird auch ein Paket mit den SASL2 - Modulen installiert. Für den Test wird das zusätzliche Paket mailutils
installiert in dem sich der Befehl mail
befindet.
$ sudo apt-get update
$ sudo apt-get install -y libsasl2-modules mailutils postfix
Sollte sich während der Installation ein Dialog zur Paket Konfiguration öffnen, dort den Punkt No configuration auswählen und mit Ok bestätigen.
SASL2 vorbereiten
In der Datei /etc/postfix/sasl_passwd
muss der Server gefolgt von dem Benutzernamen und dem Kennwort eingetragen werden. Dazu kann als Benutzer root
die Datei mit z. B. nano
editiert werden (sudo nano /etc/postfix/sasl_passwd
).
Dabei muss das folgende Format eingehalten werden:
[mx.mylinuxtime.de]:587 username:password
Im Beispiel ist das Name des Servers mx.mylinuxtime.de und erwartet auf Port 587 eine authorisierte Anmeldung mit dem Benutzer username und dem Kennwort password. Den Eintrag entsprechend der vorhandenen Daten anpassen.
Damit Postfix mit der Datei arbeiten kann muss sie in einen ein Datenbank - Format gewandelt werden. Dies geht über den Befehl postmap
$ sudo postmap hash:/etc/postfix/sasl_passwd
Es sollte sichergestellt sein, dass kein anderer Benutzer außer dem Benutzer postfix
Zugriff auf die Daten bekommt.
$ sudo chown postfix:postfix /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
$ sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
Server in die Postfix Konfiguration eintragen
Zum Eintragen der Konfiguration kann die Datei /etc/postfix/main.cf
mit einem Editor angepass werden. Einfacher geht es über das Kommando postconf
.
Zuerst setzen wir den lokalen Hostnamen:
$ sudo postconf -e myhostname=`hostname --fqdn`
Danach wird der in der Datei /etc/postfix/sasl_passwd
Server als relayhost
eingetragen. Der Eintrag muss dabei identisch angegeben werden:
$ sudo postconf -e relayhost='[mx.mylinuxtime.de]:587'
Zusätzlich muss SASL2 nun aktiviert und konfiguriert werden:
$ sudo postconf -e smtp_sasl_auth_enable=yes
$ sudo postconf -e smtp_sasl_security_options=noanonymous
$ sudo postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
$ sudo postconf -e smtp_use_tls=yes
$ sudo postconf -e smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt
Nach einem Neuststart steht der Postfix dann für die weitere Verwendung zur Verfügung:
$ sudo systemctl reload postfix@-.service
Testen der Konfiguration
Ein einfacher Test für die Konfiguration ist der Versuch eine E-Mail zu versenden. Entweder über das Programm mail
oder direkt mit Postfix über das Kommando sendmail
:
$ sudo sendmail recipient@elsewhere.com
From: you@example.com
Subject: Test mail
This is a test email
.
$ echo "body of your email" | mail -s "This is a Subject" -a "From: you@example.com" recipient@elsewhere.com
Meldungen seitens des Servers können im Journal mit dem folgenden Befehl angeschaut werden:
$ sudo journalctl --unit postfix@-.service -e
Quickinstall
Für diejenigen, die es eilig haben, einfach die Variablen ausfüllen und in die Konsole einfügen:
SERVER="[mx.mylinuxtime.de]:587"
USERNAME="username"
PASSWORD="password"
sudo apt-get update
sudo apt-get install -y libsasl2-modules mailutils postfix
echo "${SERVER} ${USERNAME}:${PASSWORD}"|sudo tee /etc/postfix/sasl_passwd
sudo postmap hash:/etc/postfix/sasl_passwd
sudo chown postfix:postfix /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo postconf -e myhostname=`hostname --fqdn`
sudo postconf -e relayhost="${SERVER}"
sudo postconf -e smtp_sasl_auth_enable=yes
sudo postconf -e smtp_sasl_security_options=noanonymous
sudo postconf -e smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
sudo postconf -e smtp_use_tls=yes
sudo postconf -e smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt
sudo systemctl reload postfix@-.service