Heute stolperte ich im OSBN über den Beitrag Über fehlgeschlagenem Service per XMPP informieren von Fryboyter. Die Idee fand ich gut, aber ich würde mir lieber die Systemmails von Linux, die ich derzeit im Thunderbird abfrage, per XMPP zusenden lassen.
Nach kurzer Suche mit searx fand ich den englischen Blogpost SendXMPP mail forward on Debian Jessie. Ich bin ein klein wenig von der Anleitung abgewichen und möchte die Lösung auch für mich dokumentiert haben, falls der Blogeintrag mal verschwindet darum halte ich das Vorgehen hier auch noch mal fest.
Warnung
Es könnte sein, dass wichtige oder sensible Informationen in den Systemmails enthalten sind. Deshalb würde ich davon abraten diese über fremde Server zu senden.
Zuerst habe ich sendxmpp aus den Debian-Repositories installiert:
# apt install sendxmpp
Anschließend habe ich überprüft ob sendxmpp überhaupt Nachrichten zustellen kann. SENDER, SENDER_SERVER, EMPFAENGER, EMPFAENGER_SERVER, PASSWORT und PORT (wird nur benötigt, wenn nicht der Standardport 5222 verwendet wird) sind hier und im weiteren Verlauf natürlich an die eigene Konfiguration anzupassen.
$ echo 'Hallo Welt' | sendxmpp -t -u SENDER -j SENDER_SERVER:PORT -p 'PASSWORT' EMPFAENGER@EMPFAENGER_SERVER
Invalid or unreadable path specified for ssl_ca_path. at /usr/share/perl5/Stream.pm line 641
Ich bekam die gleiche Fehlermeldung wie Fryboyter und konnte das
Problem beheben indem ich wie in seinem Beitrag
beschrieben
in /usr/share/perl5/XML/Stream.pm
Zeile 223 folgendermaßen abänderte:
$self->{SIDS}->{default}->{ssl_ca_path} = '/etc/ssl/certs';
Als nächstes habe ich die Datei /etc/sendxmpp.conf
mit folgendem
Inhalt angelegt:
SENDER@SENDER_SERVER:PORT PASSWORT
Anschließend wurde die Datei ausschließlich für ihren Besitzer les- und
beschreibbar gemacht und der Besitzer zu Debian-exim
geändert:
# chmod 600 /etc/sendxmpp.conf
# chown Debian-exim:Debian-exim /etc/sendxmpp.conf
Nun habe ich die Datei /usr/local/bin/mail2xmpp
angelegt und folgendes
eingetragen:
#!/bin/bash
echo "$(cat)" | sendxmpp -t
-f /etc/sendxmpp.conf EMPFAENGER@EMPFAENGER_SERVER
Die Datei wurde anschließend noch ausführbar gemacht:
# chmod 755 /usr/local/bin/mail2xmpp
Um zu definieren wie die Mails zugestellt werden muss die Datei
/etc/aliases
bearbeitet werden, wobei USER natürlich anzupassen ist:
# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
root: USER
USER:,|/usr/local/bin/mail2xmpp
logcheck: root
Damit die Systemmails per pipe weitergereicht werden können muss die
Datei /etc/exim4/exim4.conf.localmacros
angelegt und diese Zeile
eingetragen werden:
SYSTEM_ALIASES_PIPE_TRANSPORT = address_pipe
Anschließend werden die neuen Aliase eingelesen und exim4
neu
gestartet:
# newaliases
# systemctl restart exim4.service
Abschließend wird noch getestet ob der Mailtransport über XMPP funktioniert:
$ echo "Das ist ein Test" | mail -s testmail root
An einem meiner Rechner bekam ich hier eine Fehlermeldung:
mail: Nachricht kann nicht gesendet werden: Prozess wurde mit einem von Null verschiedenen Status beendet
In den logs sah ich folgendes:
Sep 12 19:02:53 backup exim[446]: 2017-09-12 19:02:53 1droaL-00007C-Lt <= root@backup U=root P=local S=341
Sep 12 19:02:53 backup exim[446]: 2017-09-12 19:02:53 1droaL-00007C-Lt Cannot open main log file "/var/log/exim4/mainlog": Permission denied: euid=104 egid=109
Sep 12 19:02:53 backup exim[446]: exim: could not open panic log - aborting: see message(s) above
Das konnte ich ganz einfach beheben indem ich den Ordner
/var/log/exim4/
angelegt und Debian-exim
als Eigentümer festgelegt
habe:
# mkdir /var/log/exim4
# chown Debian-exim:Debian-exim /var/log/exim4
[Update 2017-09-12]
An einem meiner Rechner gab es nach der Einrichtung noch eine Fehlermeldung beim Versuch Nachrichten über XMPP weiterzuleiten. Ich habe den Beitrag dementsprechend erweitert.