Hallo Pit,
erstmal danke für die sehr angenehme und konstruktive Session gestern!
Ich denke wir sind fast am Ziel: Ich habe heute meine erste "schöne" Mail vom EPGSearch bekommen!
wir haben noch zwei Baustellen:
a) der nullmailer installiert zwei Hilfpsprogramme (qmqp und smtp) nach /usr/lib/nullmailer/, sucht sie aber unter /usr/libexec/nullmailer
ich denke da ist noch eine Kleinigkeit im Aufruf von configure anzupassen (ich hab das gestern eh aus dem Augenwinkel gesehen, aber nachdem die zwei Dateien dann unter /usr/lib/nullmailer kamen, hab ich mir erst ncihts weiter gedacht). Ich habe das temporär "gehackt" indem ich /usr/lib/nullmailer nach /usr/libexec/nullmailer kopiert habe (das ist aber uncool)
b) Logging mit syslog: macht er noch nicht, wäre aber wichtig. Das Hilfsprogramm "logger" wäre installiert und funktioniert auch; ich vermute da gehört in der /etc/init.d/nullmailer noch was eingebaut... da habts ihr sicher (von anderen Paketen?) eine Vorlage wo man abschreiben kann.
Kurzer Auflug ins debugging: Beim nullmailer arbeiten ein paar Programme Hand in Hand, und das ist anfangs etwas komplex zu verstehen...
1. /usr/bin/sendmail: das ist ein kleines Frontend zu nullmailer-inject (siehe 2). Wichtig: Das Ding funktioniert nicht wie "mail", sondern erwartet einen kompletten Body (mit Headern!) nach RFC irgendwas. Also ein simples "ech Hallo | sendmail michael@reinelt.co.at" funktioniert zwar, die Mail sieht aber entschieden sehr eigenartig aus. Das ist aber kein großes Problem, weil zB das EPGSearch-Plugin den sendmail bereits korrekt versorgt. Wollte man aber eine "generelles" Mail-Benachrichtigung einbauen, wäre noch ein Frontend (zB bsd-mailx) nötig.
PS das Ding bildet wirklich den guten alten sendmail nach, und über den habe ich ein ca. 8 cm dickes Buch im Regal stehen :-)
2. /usr/bin/nullmailer-inject: der nimmt die Mail (zB von sendmail) entgegen, bastelt noch etwas an den Headern rum, und stellt die Mail dann nach /var/spool/nullmailer/queue. Wenn man sich das ansehen möchte, ist es wichtig dass nullmailer-send NICHT läuft (also vorher mit "/etc/init.d/nullmailer stop" stoppen), dann kann man sich die Datei ansehen
Beispiel für so eine Datei:
system@reinelt.co.at
michael@reinelt.co.at
Received: (nullmailer pid 12684 invoked by uid 0);
Sun, 12 Dec 2021 12:58:14 -0000
Subject: Output from your job 1
To: root@mld.reinelt.local
Date: Sun, 12 Dec 2021 13:58:14 +0100
Message-Id: <1639313894.402414.12619.nullmailer@mld.reinelt.local>
From: root <root@mld.reinelt.local>
/usr/bin/appstarter.sh: line 24: startsurf: not found
1. Zeile: (gültiger!) Absender (Envelope)
2. Zeile: Empfänger (Envelope)
Leerzeile
Mail-Header (die sind zwar für den Versand nicht wichtig, weil Envelope sind die ersten beiden Zeilen, aber wenn die fehlen oder falsch sind, sieht die Mail eigenartig aus)
Leerzeile
Mail-Body
3. nullmailer-send: das ist der Daemon der laufen sollte (und per /etc/init.d/nullmailer) gestartet wird. Dieser überwacht die Queue bzw. das Fifo, und verschickt die Mail dann
Hilfreich ist vielleicht noch meine (lauffähige) Konfigurarion:
/etc/nullmailer/me:
mld.reinelt.local
enthält die Mail-Domäne des Absenders, aber nur für den Header (nicht Envelope!). Wenn also "root" eine Mail schickt, und da drinnnen wie bei mir "mld.reinelt.local" steht, dann kommt die Mail von "root@mld.reinelt.local". Normalerweise würde nullmailer den "Quasi-Standard" etc/mailname dafür verwenden, aber die gibts in der MLD nicht.
/etc/nullmailer/adminaddr:
michael@reinelt.co.at
Das ist ein Fallback, damit man eine Mail an "somebody@localhost" senden kann, der Empfänger wird dann entsprechend umgeschrieben (kann nie schaden)
/etc/nullmailer/allmailfrom:
system@reinelt.co.at
Die Datei ist ggf. wichtig: Hier steht der Envelope-Absender drinnen, der bei allen Mails eingesetzt wird. Wichtig insofern, als dass mein Mail-Provider nur (Envelope-) Absender akzeptiert, die er kennt (Spam-Vermeidung). Eine Mail von "viagra@reinelt.co.at" würde nicht akzeptiert, auch wenn sonst alles (Authentifizierung etc) passen würde (wenn ist würdelos) passte.
/etc/nullmailer/remotes:
bsmtp.a1.net smtp --port=587 --user=system@reinelt.co.at --pass=******* --starttls --insecure
Hier wird der Remote-Mailserver konfiguriert, der die Mail schlussendlich wirklich entgegennehmen und weiterleiten soll. "--starttls" ist der Grund für meinen Aufstand hier, ohne TLS akzeptiert mein Business-Account (deswegen bsmtp.a1.net) keine Mails. "--insecure" verzichtet auf die Zertifikatsprüfung (kann man, muss man nicht)
Das wars eigentlich...
PS falls jemand verwirrt ist wegen "Envelope": Stellts euch das so vor: Die Standard-Header (From, To, CC, Subject, ... stehen im Briefkopf "Briefpapier", dieses Briefpapier wird aber in einen Briefumschlag (Envelope) gesteckt (damit kann die Post natürlich den Briefkopf nicht lesen) und auf den Briefumschlag wird dann nochmal Absender und Empfänger draufgeschrieben. Niemand sagt dass Header und Envelope identisch sein müssen...
schönen Sonntag noch! Michi