Raspberry Pi: E-Mail-Versand einrichten

Raspberry Pi: E-Mail-Versand einrichten

letzte Aktualisierung: 15. Februar 2023
#
Ungefähre Lesezeit: 3 min

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 starten
  • sudo postmap hash:/etc/postfix/sasl_passwd – Datei sasl_passwd.db anlegen
  • sudo postmap /etc/postfix/sender_canonical – Datei sender_canonical.db anlegen
  • sudo postqueue -p – Anzeigen der Postfix Warteschlange
  • sudo postsuper -d ALL – Warteschlange löschen
  • sudo postqueue -f – Manuelles senden der Email in der Warteschlange
  • sudo tail -f /var/log/mail.log – letzte Einträge Logfile anschauen

Installation

  • benötigte Pakete installieren
    sudo apt install postfix libsasl2-2 sasl2-bin libsasl2-modules mutt
Bild 1: Installation notwendiger Pakete

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.
postfix Konfiguration als smarthost
Bild 2: Konfigurations-Typ Internet mit Smarthost
  • Domainname
    Der vorgegebene Domainname kann übernommen werden.
postfix Konfiguration Domainname
Bild 3: Konfiguration Domainname
  • 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)
Bild 4: Konfiguration Relay-Host

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

Artikelaufrufe: 4662
Nach oben