Postfix Konfiguration für CLI Mail

Alle Jahre wie­der will mein klei­ner Raspberry nicht mehr und ich muss ihn neu auf­set­zen. Unter ande­rem benö­ti­ge ich für ein klei­nes Monitoring-Skript die Möglichkeit, aus einem Bash-Skript her­aus Mails zu ver­sen­den. Da ich mei­ne Webseite bei all-inkl.de hos­te, habe ich dort natür­lich auch Zugriff auf einen Mailserver, den ich zum Versenden die­ser Mails nut­zen möch­te. Den all-inkl Server benut­ze ich dann als Relay, d.h. der Raspberry sen­det die Mails nicht direkt an den Empfänger, son­dern benutzt den Mailserver von all-inkl zum Versenden. Ich bin kein Experte in Sachen smtp (Simple Mail Transport Protokoll), also dem Protokoll mit dem der Raspberry mit dem Mailserver kom­mu­ni­zie­re, also bin ich auf die Quellen im Netz ange­wie­sen, die aber jedes­mal eini­ge Fragen offen las­sen, die ich hier­mit end­lich mal doku­men­tie­re.

1.Installation der benötigten Software

Ich benut­ze Postfix als MTA (Mail Transfer Agent) und das Linux-Programm /usr/bin/mail.
Ein MTA ist ein Dienst, der die auf dem loka­len Rechner erstell­ten Mails an den eigent­li­chen Mailserver wei­ter­lei­tet und sich dabei dem smtp bedient. /usr/bin/mail ist das Programm, mit dem die Mails auf der Kommandozeile erstellt und an den Mailserver wei­ter­ge­lei­tet wird.
Beides kann mit fol­gen­dem Aufruf instal­liert wer­den:

sudo apt install mailutils

2. Konfiguration

Nach der Installation star­tet sofort die ers­ten Konfigurationschritte von Postfix mit fol­gen­dem Bildschirm:

Mit einem Tab erreicht man den Ok-Button, mit Return gelangt man zum nächs­ten Bildschirm:

Hier strei­ten sich die Geister, ob man „Internet Site” oder „Internet mit Smarthost” ein­trägt. Ich habe bis­her nur mit dem Eintrag „Internet Site” Erfolg gehabt.

Der nächs­te Bildschirm ist dann der letz­te in die­ser Reihe. Hier ände­re ich am vor­ge­ge­be­nen Eintrag nichts. In mei­nem Fall ist das „ubun­tu”, weil das der Name mei­nes Raspberries ist.

Nach Bestätigung star­tet eine Installationsroutine, die noch wei­ter Programme und Bibliotheken instal­liert und sowie eini­ge wei­te­re Konfigurationen vor­nimmt.

Für die spä­te­re Authentifizierung am Mailserver wird noch ein wei­te­res Modul benö­tigt, das ggf. noch nicht instal­liert ist, daher soll­te der fol­gen­de Befehl aus­ge­führt wer­den. Bei mei­nem Ubuntu 23.04 kam dann aber die Meldung, dass schon alles in der neu­es­ten Version vor­han­den instal­liert war.

sudo apt install libsasl2-modules

Die übri­gen Einstellungen wer­den in der Datei /etc/postfix/main.cf vor­ge­nom­men. Es emp­fiehlt sich, vor dem Editieren ein Backup der Datei anzu­le­gen, falls man wie­der von vor­ne anfan­gen muss.

sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.back
sudo nano /etc/postfix/main.cf

Ich füge den unte­ren Codeblock in die Zeile „relay­host =” ein, natür­lich mit den für mei­nen Mailserver ange­pass­ten Werten.

relayhost = mailserver.com:25 
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous 

3. Letzte Schritte

Nun muss Postfix der Mailserver und zusam­men mit Mailbenutzer bekannt gemacht wer­den. Dazu muss eine Datei asl_passwd erstellt wer­den.

sudo nano /etc/postfix/sasl_passwd

Als Inhalt wird dann fol­gen­des ein­ge­fügt:

mailserver.com:25 user:passwd

Anschließend wird die­se Datei in ein spe­zi­el­les Format kon­ver­tiert und die bei­den Dateien mit chmod 660 geschützt.

sudo postmap /etc/postfix/sasl_passwd
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db

Zuletzt müs­sen die loka­len Benutzer des Raspberries auf den Mailaccount gemappt wer­den. Da ich nur einen exter­nen Mailaccount nut­ze, ist das recht ein­fach. Ich habe kei­nen Ahnung, wie die Konfiguration aus­se­hen muss, wenn ich für ver­schie­de­ne Benutzer auf dem Raspberry auch ver­schie­de­ne Accounts auf dem Mailserver nut­zen möch­te.

sudo nano /etc/postfix/sender_canonical

Ich hier tra­ge hier neben mei­nen loka­len Benutzer auch root ein, für den Fall, dass root aus irgend­ei­nem Admin-Skript her­aus eine Mail ver­schi­cken möch­te.

lokaleruser      user@mailserver.com
root             user@mailserver.com

Wie schon bei den Zugangspasswort müs­sen noch fol­gen­de Befehle aus­ge­führt wer­den:

sudo postmap /etc/postfix/sender_canonical
sudo chmod 0600 /etc/postfix/sender_canonical /etc/postfix/sender_canonical.db

Nach einem Neustart des Postfix-Dienst, soll­te das ver­sen­den von Mails über die Kommandozeile funk­tio­nie­ren.

sudo systemctl restart postfix

4. Ein erster Test

Vor dem Absenden der ers­ten Mail noch ein Tipp, um zu sehen, was Postfix so anstellt um die Mail wei­ter­zu­lei­ten, ein­fach in einem extra Terminalfenster fol­gen­den Befehl ein­ge­ben. Eigentlich soll­ten kei­ne Fehler auf­tre­ten, aber wenn doch, kann man die­se live im Log ver­fol­gen.

tail -f /var/log/mail.log 

Der ers­te Test erfolgt dann ein­fach mit dem Befehl:

mail -s "Dies ist eine Testmail" empfänger@example.com

Nach einem Return wird nach dem „cc” gefragt, die Abfrage auch ein­fach mit Return bestä­ti­gen. Dann even­tu­ell noch einen klei­nen Text ein­ge­ben und mit Ctrl‑D abschi­cken. Ich habe mal in alter Zeit auch auf der Kommandozeile Mails lesen, schrei­ben und ver­schi­cken müs­sen, da war das Programm aber so ein­ge­stellt, das ein „Punkt” am Anfang der Zeile das ver­schi­cken aus­lö­se. Das läßt sich irgend­wo so ein­stel­len, aber mir erscheint Ctrl‑D mitt­ler­wei­le siche­rer.

Das war’s, eine Mail kann so von einem loka­len Ubuntu-Rechner per Kommandozeile oder auch per Shellscript über einen exter­nen Mailserver ver­schickt wer­den.

Die Übertragung zum Server scheint auch sicher zu sein, denn wenn ich in der main.cf die Zeile „smtp_tls_loglevel = 1” ein­fü­ge, erscheint im Logfile die Meldung „Trusted TLS con­nec­tion estab­lished”. Dies gilt zumin­dest für mei­nen all-inkl.de Mailserver.

Diese Vorgehensweise habe ich mir aus ver­schie­de­nen Anleitungen zusam­men­bas­telt, falls ich hier oder da noch eine Verbesserung ein­bau­en könn­te, bin ich für jeden Hinweise dank­bar.

Da Postfix im loka­len Netzwerk läuft, kann eine Kommunikation vom Mailserver nicht direkt mit Postfix ange­sto­ßen wer­den, daher kann Postfix nicht zum Empfangen von Mails ver­wen­det wer­den, was aber für mei­nen Anwendungsfall nicht not­wen­dig ist. Eine Lösung für die auch das emp­fan­gen von Mails vom Mailserver ermög­licht kann mit fetch­mail rea­li­siert wer­den.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert