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 sudoFangen wir an: Zuerst installieren wir Postfix und Mailutils sowie libsasl2
apt update -q4 && apt install -y postfix mailutils libsasl2-modulesNun sichern wir uns erst mal die Original-Config main.cf
mv /etc/postfix/main.cf /etc/postfix/main.cf.bakJetzt löschen wir die Originale main.cf damit wir mit einer neuen leeren starten können
rm /etc/postfix/main.cfnano /etc/postfix/main.cfHier 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_passwdHier fügen wir folgendes ein
smtp.XXX.de XXX@yyy.de:PASSWORTDas 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_passwdNun benötigen wir noch eine Datei um die Domain bekannt zu machen
nano /etc/mailnameHier fügen wir folgendes ein. Bitte anpassen!
deine.domain.deDas 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_canonicalHier 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.deNun 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 restartJetzt sind wir bereit eine Testmail zu versenden. Die machen wir mit
echo "TESTMAIL VON POSTFIX" | mailx -s "TESTMAIL" empfänger@xyz.deIst 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.logPostfix Warteschlange ansehen:
mailqPostfix Warteschlange nochmal versuchen zu versenden:
postfix flush
Machen wir weiter mit Apticron:
apt update -q4 && apt install -y apticronWir kopieren die Config ins Verzeichnis:
cp /usr/lib/apticron/apticron.conf /etc/apticron/apticron.confund bearbeiten die Config
nano /etc/apticron/apticron.confNOTIFY_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.
apticronJetzt sichern wir uns die Originale Apticron-Config für cron.d
cp /etc/cron.d/apticron /etc/cron.d/apticron.bakund 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; fiApticron 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/profileganz 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.
