Nutzt man einen Raspberry Pi für Steuerungsanwendungen, Smarthome oder Logging Aufgaben, wird man früher oder später den Wunsch / die Notwendigkeit haben, sich über erledigte oder fehlgeschlagene Aufgaben informieren zu lassen. Denn was nutzt es wenn man sein Heim automatisiert hat, die Bewässerungsanlage aber durch einen Fehler nicht funktioniert und der Garten des Wochenendhauses vertrocknet, weil man die letzten 3 Wochen nicht anwesend war und darauf vertraut hat das alles funktioniert…
Zu diesem Zweck richten wir alle notwendigen Pakete ein, um einen E-Mail-Versand über Postfix und Mutt realisieren zu können. Postfix dient dabei als E-Mail-Server zum senden und empfangen von E-Mails, wobei Mutt als E-Mail-Client eine einfache Möglichkeit zum senden von E-Mails über Scripte dient.
Voraussetzungen
- Raspberry Pi 4 Model B revision 1.2
(cat /sys/firmware/devicetree/base/model
) - Operating System / Kernel: Raspbian GNU/Linux 10 (buster) / Linux 5.10.63-v7l+
(hostnamectl
)
Kurzbefehle
sudo systemctl restart postfix
– postfix neu startensudo postmap hash:/etc/postfix/sasl_passwd
– Datei sasl_passwd.db anlegensudo postmap /etc/postfix/sender_canonical
– Datei sender_canonical.db anlegensudo postqueue -p
– Anzeigen der Postfix Warteschlangesudo postsuper -d ALL
– Warteschlange löschensudo postqueue -f
– Manuelles senden der Email in der Warteschlangesudo tail -f /var/log/mail.log
– letzte Einträge Logfile anschauen
Installation
- benötigte Pakete installieren
sudo apt install postfix libsasl2-2
sasl2-binlibsasl2-modules mutt
Einrichtung postfix
Um auf dem Raspberry Pi E-Mails versenden zu können, müssen wir einen MTA (Mail Transfer Agent) installieren und konfigurieren. Früher kam für diese Aufgabe der MTA Sendmail zum Einsatz, der jedoch schwer zu konfigurieren ist. Heutzutage greift man standardmäßig auf postfix zurück, der weit verbreitet und einfach einzurichten ist.
Während der Installation von postfix werden verschiedene Schritte zur Ersteinrichtung angefragt.
- Mailserver-Konfiguration-Typ
Je nach Einsatzzweck ist der Typ für den Mailserver auszuwählen. Der direkte Versand über SMTP (Internet-Site) kann zu Fehlern bei der Zustellung führen, ich empfehle hier die Nutzung von Internet mit Smarthome.
- Domainname
Der vorgegebene Domainname kann übernommen werden.
- SMTP-Relay-Host
Der SMTP-Relay-Host wird für den Versand der E-Mails genutzt. Ich nutze STRATO als E-Mail-Anbieter. Die Angabe ist entsprechend der eigenen Anforderungen anzupassen. Der Eintrag kann auch frei gelassen werden und ist dann später in der main.cf zu konfigurieren. (siehe unten)
Konfiguration am Beispiel von STRATO
Die E-Mail Konfiguration von postfix erfolgt über: /etc/postfix/main.cf
- main.cf – Einstellungen für STRATO
sudo nano /etc/postfix/main.cf
- am Ende der Datei einfügen
smtp_sasl_auth_enable = yes
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_enforce_tls = yes
smtp_tls_enforce_peername = no
smtp_tls_security_level = encrypt
# für All-Inkl.com smtp_tls_security_level = [leer lassen]
smtp_tls_wrappermode = yes
- ggf. ist der Eintrag
relayhost=
in der main.cf an den eigenen Anbieter anzupassen, soweit dieser bei der Paketkonfiguration noch nicht eingegeben wurde - sollten Fehlermeldungen in Bezug auf IPv6 auftreten, kann man postfix mit folgendem Eintrag zur alleinigen Nutzung von IPv4 „überreden“
inet_protocols = ipv4
E-Mail-Zugangsdaten konfigurieren
- in der Konfigurationsdatei sasl_passwd werden die Zugangsdaten hinterlegt
(muss zunächst einmalig angelegt werden)sudo nano /etc/postfix/sasl_passwd
- Format E-Mail-Server:Port E-Mail-Adresse:Passwort
[smtp.strato.de]:465 max.mustermann@mail.de:passwort
Die eckigen Klammern weisen Postfix an, daß nach dem A-Record (=der IP-Adresse) von mailserver1.example.com gesucht werden soll. Würden die eckigen Klammern fehlen, so sucht Postfix nach dem MX-Record und (falls dieser nicht vorhanden ist) erst dann nach den A-Record. - Damit postfix nun auch die Daten lesen kann, ist die Datei in eine db-Datei umzuwandeln.
(nach jeder Anpassung der Datei erforderlich)sudo postmap /etc/postfix/sasl_passwd
- Anpassung der Zugriffsrechte
sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db - postfix neu starten, damit Änderungen übernommen werden
sudo systemctl restart postfix
E-Mail-Absendernamen anpassen (Alias anlegen)
Die meisten E-Mail-Anbieter erwarten, dass man seine Post mit einer „richtigen“ Absenderadresse verschickt, also nicht „pi@hostname“ (den Default-Hostname, kann man in der Datei /etc/hostname ändern). Einige akzeptieren nur die eigene, korrekte Adresse. Deshalb muss man Postfix anweisen, die lokalen Adressen durch die gewünschte offizielle Adresse zu ersetzen.
- in der Konfigurationsdatei sender_canonical werden die Absendernamen hinterlegt
(muss zunächst einmalig angelegt werden)sudo nano /etc/postfix/sender_canonical
- Alias anlegen / anpassen
pi email@meineadresse.de
user1 email@meineadresse.de
user2 email@meineadresse.de - Datei in eine db-Datei umwandeln (nach jeder Anpassung)
sudo postmap /etc/postfix/sender_canonical
- Anpassung der Zugriffsrechte
sudo chown root:root /etc/postfix/sender_canonical /etc/postfix/sender_canonical.db
sudo chmod 0600 /etc/postfix/sender_canonical /etc/postfix/sender_canonical.db - postfix neu starten, damit Änderungen übernommen werden
sudo systemctl restart postfix
Testen der Einstellungen
- Versand einer Mail mit dem Betreff Test-Email ohne Anhang mit dem Inhalt Test E-Mail
echo 'Test E-Mail' | mutt empfänger@domain.de -s "Test-Email ohne Anhang"
- bei Problemen kann die letzten Einträge der Logfiles prüfen
sudo tail -f /var/log/mail.log
sudo tail -f /var/log/mail.err
Quellen
- strobelstefan.org – E-Mail-Versand für den Raspberry Pi konfigurieren
- dirk-hagedorn.de – Mailversand mit Postfix
- netzmafia.de – E-Mail mit Postfix auf dem Raspberry Pi
- speefak.spdns.de – Postfix Installation ( Relayhost / Satellitensystem)