Absender "Displayname" umschreiben mit Variable
Hallo Liste,
ich dachte mir ich baue da mal schnell was, verzweifele jetzt aber. Ich möchte für eine Vielzahl von Linux-Servern eine Standard-Config ausrollen. Diese Server haben nur Postfix an Board um den Admin zu informieren, also für Cron etc. Da wir für unsere Server mehrere eigene DNS-Zonen betreiben (.server, .lanserver .etc) und ich auf dem zentralen Mailrelay Mails mit "solchen" Zonen zurückweise, habe ich folgendes gebaut:
myorigin = /etc/mailname mydestination = localhost, $myhostname relayhost = relay.foo.de sender_canonical_maps = regexp:/etc/postfix/sender_canonical
/etc/postfix/sender_canonical: /./ noreply@foo.de
noreply@foo.de ist auf dem zuständigen Relay ein blackhole, also /dev/null
Das ganze Funktioniert! Die Mails haben einen ordentlichen absender und werden ordentlich zugestellt. Antworten (Autoreply etc) werden direkt vernichtet. Super! Jetzt beschweren sich die Admins allerdings, dass im FROM leider immer "root noreply@foo.de" steht. Statt des Displaynames sollte dort der Hostname des sendenden Servers stehen, also ein FROM à la "WEB53.SERVER noreply@citkomm.de".
So, lange Vorrede, hier mein Problem:
Um den Displayname (oder wie auch immer der Text-Teil vor der Mailadresse heißt) umzuschreiben, brauche ich den Hostnamen oder ähnliches. Ich würde es am liebsten so machen: smtp_header_checks = regexp:/etc/postfix/header_checks
/etc/postfix/header_checks: /^From:[[:space:]]+(.*)/ REPLACE From: "$myhostname" noreply@citkomm.de
leider kann ich an der Stelle "$myhostname" keine Variable verwenden, zumindest habe ich dafür keine Lösung gefunden. Habt Ihr eine Idee, wie ich den Hostnamen "variabel" in den Header bekomme? Ziel soll es sein, dass die main.cf und alle anderen Dateien keine hostspezifischen Daten enthalten, also $myhostname u.s.w. wird von Postfix ermittelt, $myorigin kommt aus /etc/mailname sofern vorhanden.
Für Tipps/Ideen wäre ich sehr dankbar - allerdings bitte keine Diskussionen über die Randbedingungen ;)
VG Marc
On 22.06.2017 14:26, Marc Risse wrote:
Hallo Liste,
ich dachte mir ich baue da mal schnell was, verzweifele jetzt aber. Ich möchte für eine Vielzahl von Linux-Servern eine Standard-Config ausrollen. Diese Server haben nur Postfix an Board um den Admin zu informieren, also für Cron etc. Da wir für unsere Server mehrere eigene DNS-Zonen betreiben (.server, .lanserver .etc) und ich auf dem zentralen Mailrelay Mails mit "solchen" Zonen zurückweise, habe ich folgendes gebaut:
myorigin = /etc/mailname mydestination = localhost, $myhostname relayhost = relay.foo.de sender_canonical_maps = regexp:/etc/postfix/sender_canonical
/etc/postfix/sender_canonical: /./ noreply@foo.de
noreply@foo.de ist auf dem zuständigen Relay ein blackhole, also /dev/null
Das ganze Funktioniert! Die Mails haben einen ordentlichen absender und werden ordentlich zugestellt. Antworten (Autoreply etc) werden direkt vernichtet. Super! Jetzt beschweren sich die Admins allerdings, dass im FROM leider immer "root noreply@foo.de" steht. Statt des Displaynames sollte dort der Hostname des sendenden Servers stehen, also ein FROM à la "WEB53.SERVER noreply@citkomm.de".
dann sagst Du einfach, daß sender_canonical nur den Envelope-Sender umschreibt
sender_canonical_classes = envelope_sender
Um den Displayname (oder wie auch immer der Text-Teil vor der Mailadresse heißt) umzuschreiben, brauche ich den Hostnamen oder ähnliches. Ich würde es am liebsten so machen: smtp_header_checks = regexp:/etc/postfix/header_checks
/etc/postfix/header_checks: /^From:[[:space:]]+(.*)/ REPLACE From: "$myhostname" noreply@citkomm.de
Mir fiele spontan nur ein, /etc/postfix/header_checks beim Start automatisch durch ein init-Skript erzeugen zu lassen und dort eine Ersetzung vorzunehmen.
Z.B.
#!/bin/sh myhostname=$(uname -n) cat<<EOT>/etc/postfix/header_checks /^From:[[:space:]]+(.*)/ REPLACE From: "$myhostname" noreply@citkomm.de EOT
---- Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de
Marc Risse risse@citkomm.de wrote:
Hallo Liste,
Um den Displayname (oder wie auch immer der Text-Teil vor der Mailadresse heißt) umzuschreiben, brauche ich den Hostnamen oder ähnliches. Ich würde es am liebsten so machen: smtp_header_checks = regexp:/etc/postfix/header_checks
/etc/postfix/header_checks: /^From:[[:space:]]+(.*)/ REPLACE From: "$myhostname" noreply@citkomm.de
leider kann ich an der Stelle "$myhostname" keine Variable verwenden, zumindest habe ich dafür keine Lösung gefunden. Habt Ihr eine Idee, wie ich den Hostnamen "variabel" in den Header bekomme? Ziel soll es sein, dass die main.cf und alle anderen Dateien keine hostspezifischen Daten enthalten, also $myhostname u.s.w. wird von Postfix ermittelt, $myorigin kommt aus /etc/mailname sofern vorhanden.
Für Tipps/Ideen wäre ich sehr dankbar - allerdings bitte keine Diskussionen über die Randbedingungen ;)
Mir fiele spontan nur ein, /etc/postfix/header_checks beim Start automatisch durch ein init-Skript erzeugen zu lassen und dort eine Ersetzung vorzunehmen.
Z.B.
#!/bin/sh myhostname=$(uname -n) cat<<EOT>/etc/postfix/header_checks /^From:[[:space:]]+(.*)/ REPLACE From: "$myhostname" noreply@citkomm.de EOT
---- Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de
Am 22.06.2017 um 14:26 schrieb Marc Risse:
Hallo Liste,
ich dachte mir ich baue da mal schnell was, verzweifele jetzt aber. Ich möchte für eine Vielzahl von Linux-Servern eine Standard-Config ausrollen. Diese Server haben nur Postfix an Board um den Admin zu informieren, also für Cron etc. Da wir für unsere Server mehrere eigene DNS-Zonen betreiben (.server, .lanserver .etc) und ich auf dem zentralen Mailrelay Mails mit "solchen" Zonen zurückweise, habe ich folgendes gebaut:
myorigin = /etc/mailname mydestination = localhost, $myhostname relayhost = relay.foo.de sender_canonical_maps = regexp:/etc/postfix/sender_canonical
/etc/postfix/sender_canonical: /./ noreply@foo.de
noreply@foo.de ist auf dem zuständigen Relay ein blackhole, also /dev/null
Das ganze Funktioniert! Die Mails haben einen ordentlichen absender und werden ordentlich zugestellt. Antworten (Autoreply etc) werden direkt vernichtet. Super! Jetzt beschweren sich die Admins allerdings, dass im FROM leider immer "root noreply@foo.de" steht. Statt des Displaynames sollte dort der Hostname des sendenden Servers stehen, also ein FROM à la "WEB53.SERVER noreply@citkomm.de".
So, lange Vorrede, hier mein Problem:
Um den Displayname (oder wie auch immer der Text-Teil vor der Mailadresse heißt) umzuschreiben, brauche ich den Hostnamen oder ähnliches. Ich würde es am liebsten so machen: smtp_header_checks = regexp:/etc/postfix/header_checks
/etc/postfix/header_checks: /^From:[[:space:]]+(.*)/ REPLACE From: "$myhostname" noreply@citkomm.de
leider kann ich an der Stelle "$myhostname" keine Variable verwenden, zumindest habe ich dafür keine Lösung gefunden. Habt Ihr eine Idee, wie ich den Hostnamen "variabel" in den Header bekomme? Ziel soll es sein, dass die main.cf und alle anderen Dateien keine hostspezifischen Daten enthalten, also $myhostname u.s.w. wird von Postfix ermittelt, $myorigin kommt aus /etc/mailname sofern vorhanden.
Für Tipps/Ideen wäre ich sehr dankbar - allerdings bitte keine Diskussionen über die Randbedingungen ;)
VG Marc
Also ich hab so was aehnliches anders geloest, etliche devices via puppet, ebenfalls nur um status mails auszuliefern via relay ich hab dafuer ssmtp genutzt weil ich gar keinen "richtigen" Mailserver da haben will evtl eine Alternative fuer dich
https://sys4.de/de/blog/2015/11/04/einfaches-mail-setup-mit-ssmtp/ https://sys4.de/de/blog/2015/12/29/cron-alternative-cronie/
Best Regards MfG Robert Schetterer
participants (4)
-
Marc Risse
-
Peter Heitzer
-
Robert Schetterer
-
Walter H.