Postfix als SMTP relay einrichten und mit APTICRON Updatebenachrichtigungen per Mail erhalten Debian/Ubuntu

Hier zeige ich wie man Postfix unter Debian 10 oder Ubuntu 20.04 so einrichtet, dass es als SMTP-Relay agiert. Postfix sendet also über einen vorhandenen SMTP-Server Mails. Als kleinen Zusatz richten wir noch Apticron ein um eine Mail-Benachrichtigung bei neuen oder auch keine neuen Updates zu erhalten. Alle Angaben natürlich ohne Gewähr.

Ich gehe davon aus das bereits eine native Debian 10 oder Ubuntu 20.04 Instanz funktionsfähig läuft.

Ebenso gehe ich davon aus das Backups vorhanden sind die im Notfall wiederhergestellt werden können. Kein Backup, kein Mitleid 🙂

Falls ihr „sudo“ benutzen wollt fügt bitte allen Befehlen das sudo voran!

apt install sudo

Fangen wir an: Zuerst installieren wir Postfix und Mailutils sowie libsasl2

apt update -q4 && apt install -y postfix mailutils libsasl2-modules

Nun sichern wir uns erst mal die Original-Config main.cf

mv /etc/postfix/main.cf /etc/postfix/main.cf.bak

Jetzt löschen wir die Originale main.cf damit wir mit einer neuen leeren starten können

rm /etc/postfix/main.cf

nano /etc/postfix/main.cf

Hier fügen wir nun folgenden Inhalt ein und passen die mit XXX gekennzeichneten Felder an

biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 2
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
relayhost = SMTPSERVER.DE:587
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = ipv4
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps =  hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_use_tls = yes
smtp_enforce_tls = yes
smtputf8_enable = no

Nun speichern wir mit STRG+X und Y oder J und verlassen die Datei.

Jetzt erstellen wir uns eine Datei um die Zugangsdaten zu unserem SMTP-Server zu hinterlegen

nano /etc/postfix/sasl_passwd

Hier fügen wir folgendes ein

smtp.XXX.de XXX@yyy.de:PASSWORT

Das war es schon. Nun speichern wir mit STRG+X und Y oder J und verlassen die Datei.

Da in dieser Datei das Passwort im Klartext steht setzen wir die Berechtigung auf CHMOD600

chmod 600 /etc/postfix/sasl_passwd

Nun benötigen wir noch eine Datei um die Domain bekannt zu machen

nano /etc/mailname

Hier fügen wir folgendes ein. Bitte anpassen!

deine.domain.de

Das war es auch schon wieder. Nun speichern wir mit STRG+X und Y oder J und verlassen die Datei.

Nun teilen wir mit, mit welchem Systembenutzer welche Mail zugeordnet wird. Hierfür bearbeiten wir folgende Datei

nano /etc/postfix/sender_canonical

Hier fügen wir folgendes ein. Bitte anpassen!

root XXX@yyy.de
www-data XXX@yyy.de
default XXX@yyy.de
systembenutzerXXX@euerserverXXX.XXXlocal XXX@yyy.de

Nun speichern wir mit STRG+X und Y oder J und verlassen die Datei.

Nun müssen wir die Konfiguration kompilieren und Postfix neu starten

postmap /etc/postfix/sasl_passwd
postmap /etc/postfix/sender_canonical
service postfix restart

Jetzt sind wir bereit eine Testmail zu versenden. Die machen wir mit

echo "TESTMAIL VON POSTFIX" | mailx -s "TESTMAIL" empfänger@xyz.de

Ist die Mail angekommen passt soweit alles. Falls nicht könnte man hier im Log noch sehen an was es scheitert. Evtl. müssen Ports angepasst werden oder der SMTP-Server unterstützt irgendwas nicht...

tail -f /var/log/mail.log

Postfix Warteschlange ansehen:

mailq

Postfix Warteschlange nochmal versuchen zu versenden:

postfix flush

 

Machen wir weiter mit Apticron:

apt update -q4 && apt install -y apticron

Wir kopieren die Config ins Verzeichnis:

cp /usr/lib/apticron/apticron.conf /etc/apticron/apticron.conf

und bearbeiten die Config

nano /etc/apticron/apticron.conf

NOTIFY_NO_UPDATES="1" bedeutet dass man auch eine Benachrichtigungsmail bekommt wenn keine Updates anstehen. Dies hat einen Vorteil: Man weis dass der Dienst arbeitet... Falls man das nicht möchte NOTIFY_NO_UPDATES="0" und #CUSTOM_NO_UPDATES_SUBJECT='$SYSTEM: Keine neuen Updates verfügbar'

Nun speichern wir mit STRG+X und Y oder J und verlassen die Datei.

Jetzt führen wir Apticron zum Test aus. Wenn alles funktioniert bekommt man eine Mail von Apticron.

apticron

Jetzt sichern wir uns die Originale Apticron-Config für cron.d

cp /etc/cron.d/apticron /etc/cron.d/apticron.bak

und bearbeiten die Datei

nano /etc/cron.d/apticron

Den Eintrag der bereits vorhanden ist können wir aus# oder einfach löschen oder ändern und fügen stattdessen diesen ein

30 6 * * * root if test -x /usr/sbin/apticron; then /usr/sbin/apticron --cron; else true; fi

Apticron würde am Beispiel jeden morgen um 06.30 Uhr per Mail über aktualisierungen informieren. Dies kann man natürlich nach eigenen Bedürfnissen anpassen

Nun speichern wir mit STRG+X und Y oder J und verlassen die Datei.

Als Fleißaufgabe können wir jetzt noch eine Mailbenachrichtigung einrichten wenn sich jemand per SSH auf unseren Server verbindet:

nano /etc/profile

ganz unten fügen wir noch folgendes hinzu und passen die Empfänger E-Mail an

if [ -n "$SSH_CLIENT" ]; then
        echo 'Login on' `hostname` `date` `who -m` | mail -s "Login on `hostname` from `echo $SSH_CLIENT |
      awk '{print $1}'`" DEINE@MAILADRESSE.DE
fi

Nun bekommen wir auch eine Mail wenn sich jemand erfolgreich per SSH auf den Server verbunden hat.

Wir speichern mit STRG+X und Y oder J und verlassen die Datei.

Das wars... Ich hoffe ich konnte dies hier etwas verständlich ausführen und euch weiter helfen.