[postfix-users] Postfix - Weiterleitung an speziellen Mailserver unterbinden
Hallo Postfix Gemeinde,
an der Uni Magdeburg können die Nutzer ihr Postfach auf einen von drei Servern haben:
- entweder sie sind auf exchange
- entweder sie sind auf cyrus
- entweder sie sind in der Medizin (dort läuft auch Exchange)
Wenn eine Mail auf unserem Relay eingeht (dort läuft Postfix) wird über den virtual_alias_maps Parameter eine LDAP-Abfrage initiiert. Im LDAP steht dann als Forwarding-Adresse entweder exchange, cyrus oder medizin (je nachdem wo der Kollege sein Postfach hat). Die Mail wird entsprechend weitergeleitet.
Jetzt die Frage:
Ich möchte für eine Nacht die Zustellung von Mails an die Medizin unterbinden, da dort der Server umgestellt wird. Wie mach ich das am sinnvollsten ohne das LDAP anzufassen?
Gibt es eine Möglichkeit die Mails für die Medizin auf dem Relay in der Queue zu halten und am nächsten morgen auf Knopfdruck die Zustellung an die Medizin wieder freizugeben, so dass Postfix dann auch die Mails in der Queue langsam wieder raussendet?
Stephan Jacob
Otto-von-Guericke Universität Magdeburg
Universitätsrechenzentrum (URZ)
Universitätsplatz 2
Gebäude 26 - 035
39106 Magdeburg
Tel.: 0391-67-58572
Fax: 0391-67-11134
Hi,
Am 17.07.2013 15:06, schrieb Stephan Jacob:
Wenn eine Mail auf unserem Relay eingeht (dort läuft Postfix) wird über den virtual_alias_maps Parameter eine LDAP-Abfrage initiiert. Im LDAP steht dann als Forwarding-Adresse entweder exchange, cyrus oder medizin (je nachdem wo der Kollege sein Postfach hat). Die Mail wird entsprechend weitergeleitet.
Jetzt die Frage:
Ich möchte für eine Nacht die Zustellung von Mails an die Medizin unterbinden, da dort der Server umgestellt wird. Wie mach ich das am sinnvollsten ohne das LDAP anzufassen?
Ich hätte jetzt spontan gesagt, wenn Du den Transport unterbrichts, also auf dem Medizin-Server kein Daemon lauscht, bzw das Interface down ist, oder Du eine Firewallregel hinzufügst, wird ppostfix automatisch queuen.
Gibt es eine Möglichkeit die Mails für die Medizin auf dem Relay in der Queue zu halten und am nächsten morgen auf Knopfdruck die Zustellung an die Medizin wieder freizugeben, so dass Postfix dann auch die Mails in der Queue langsam wieder raussendet?
Sobald der Maildienst dort wieder erreichbar ist, sollte Postfix auch alles zustellen.
Gruß
Helmut Weigel
DFB-Medien GmbH & Co. KG Otto-Fleck-Schneise 6 60528 Frankfurt
fon: +49 (69) 6788-319 fax: +49 (69) 6788-343 pcfax: +49 (511) 760770 76 - 259 email: helmut.weigel@dfbnet.de mailto:helmut.weigel@dfbnet.de Homepage: www.dfb-medien.de http://www.dfb-medien.de
-------------------------------------------- Hermann-Neuberger-Haus | Otto-Fleck-Schneise 6 | 60528 Frankfurt | DFB-Medien GmbH & Co. KG | Geschäftsführung: DFB-Medien Verwaltungs-GmbH, deren Geschäftsführer: Kurt Gärtner, Stefan Ludwig | Vorsitzender des Aufsichtsrates: Wolfgang Niersbach | HRA 30550 | Registergericht: Frankfurt
Am 17.07.2013 15:06, schrieb Stephan Jacob:
Hallo Postfix Gemeinde,
an der Uni Magdeburg können die Nutzer ihr Postfach auf einen von drei Servern haben:
entweder sie sind auf exchange
entweder sie sind auf cyrus
entweder sie sind in der Medizin (dort läuft auch Exchange)
Wenn eine Mail auf unserem Relay eingeht (dort läuft Postfix) wird über den virtual_alias_maps Parameter eine LDAP-Abfrage initiiert. Im LDAP steht dann als Forwarding-Adresse entweder exchange, cyrus oder medizin (je nachdem wo der Kollege sein Postfach hat). Die Mail wird entsprechend weitergeleitet.
Jetzt die Frage:
Ich möchte für eine Nacht die Zustellung von Mails an die Medizin unterbinden, da dort der Server umgestellt wird. Wie mach ich das am sinnvollsten ohne das LDAP anzufassen?
Gibt es eine Möglichkeit die Mails für die Medizin auf dem Relay in der Queue zu halten und am nächsten morgen auf Knopfdruck die Zustellung an die Medizin wieder freizugeben, so dass Postfix dann auch die Mails in der Queue langsam wieder raussendet?
evtl ein tmp restriction auf ip mit Hold
Stephan Jacob
Otto-von-Guericke Universität Magdeburg
Universitätsrechenzentrum (URZ)
Universitätsplatz 2
Gebäude 26 - 035
39106 Magdeburg
Tel.: 0391-67-58572
Fax: 0391-67-11134
postfix-users mailing list postfix-users@de.postfix.org http://de.postfix.org/cgi-bin/mailman/listinfo/postfix-users
Best Regards MfG Robert Schetterer
Am Mi, 17.07.13 um 15:06:40 Uhr schrieb "Stephan Jacob" Stephan.Jacob@ovgu.de:
Gibt es eine Möglichkeit die Mails für die Medizin auf dem Relay in der Queue zu halten und am nächsten morgen auf Knopfdruck die Zustellung an die Medizin wieder freizugeben, so dass Postfix dann auch die Mails in der Queue langsam wieder raussendet?
Sollte das nicht automatisch passieren? Der Server ist nicht erreichbar, mails bleiben in der queue.
Ansonsten gibts mehrere Varianten, wie immer. Von auf hold setzen über postfix vertrauen bis iptables.
In der Vergangenheit habe ich header_checks genommen:
in der main.cf:
header_checks = pcre:/etc/postfix/header_checks
In meiner Datei header_checks steht dann:
/^To:.*@lists.streibelt.net/ HOLD server_is_down
Oder Du machst halt 'nichts' und vertraust postfix, dann würde ich aber
- Die Lifetime der queue überprüfen, damit keine mails verloren gehen - delay warning time prüfen, damit keine notifications rausgesendet werden weil die mails 4h in der queue liegen oder so
z.B. so:
maximal_queue_lifetime = 7d delay_warning_time = 4d
Vorsicht: Wenn ich mich richtig erinnere schützt das auf HOLD setzen nicht davor, dass mails weggeworfen werden wenn die queue lifetime überschritten wird, sprich morgens released Du die mails und sie werden alle weggeworfen, weil die queue_lifetime auf einer Stunde war oder so.
Wenn der remote server wieder geht kannst Du per postsuper -H die mails freilassen, oder mit -r reschedulen, das verstehe ich dann so, dass sie nicht verworfen werden, wenn die lifetimer erreicht wurde:
Note: specify "postsuper -r" to release mail that was kept on hold for a significant fraction of $maximal_queue_lifetime or $bounce_queue_lifetime, or longer.
Specify "-H ALL" to release all mail that is "on hold". As a safety measure, the word ALL must be specified in upper case.
/Florian
* Stephan Jacob Stephan.Jacob@ovgu.de:
Hallo Postfix Gemeinde,
an der Uni Magdeburg können die Nutzer ihr Postfach auf einen von drei Servern haben:
entweder sie sind auf exchange
entweder sie sind auf cyrus
entweder sie sind in der Medizin (dort läuft auch Exchange)
Wenn eine Mail auf unserem Relay eingeht (dort läuft Postfix) wird über den virtual_alias_maps Parameter eine LDAP-Abfrage initiiert. Im LDAP steht dann als Forwarding-Adresse entweder exchange, cyrus oder medizin (je nachdem wo der Kollege sein Postfach hat). Die Mail wird entsprechend weitergeleitet.
Du verwirfst die Idee mit den virtual_alias_maps, denn Dein Server ist ein Boundary Filter, der Mails filtern und routen, aber nicht lokal in eine Storage (virtual_alias...) legen soll.
Dann baust Du Dir drei services in der master.cf. Kopier den relay-Service und nenne sie: exchange, cyrus und medizin.
Als nächstes nimmst Du die ovgu-Domain - und ihre gefühlten 20.000 Zusatzdomains - in die relay_domains auf und baust Dir eine relay_recipient_maps-Abfrage, die im LDAP prüft ob der Empfänger vorhanden ist - das hält viel Spam weg.
Jetzt zum Routing. Du willst für jedes Ziel einen eigenen Service (oben schon gebaut). Nun musst Du die Leute den Zielen zuordnen.
Bau Dir drei transport_maps-Abfragen in LDAP, die je recipient das passende Deiner drei Ziele als Wert zurückliefern wird. Warum drei Abfragen? Jede Abfrage lieft ein modifiziertes Ergebnis zurück. Für die Modifikation nimmst du den $result_format Parameter - der verändert das Ergebnis, das Postfix zu sehen bekommt.
In der ersten Map könnte z.B. folgendes stehen:
result_format = cyrus:[ip.von.cyrus]:25
In der Zweiten:
result_format = exchange:[ip.von.cyrus]:25
In der Dritten:
result_format = medizin:[ip.von.cyrus]:25
So, jetzt hast Du für jedes Ziel einen eigenen Transport. Und jetzt kannst Du Dein eigentliches Ziel umsetzen:
Ich möchte für eine Nacht die Zustellung von Mails an die Medizin unterbinden, da dort der Server umgestellt wird. Wie mach ich das am sinnvollsten ohne das LDAP anzufassen?
Setze nach den Edits folgendes in main.cf:
defer_transports = medizin
Jetzt wird Postfix Nachrichten für alles an "medizin" annehmen und die Zustellung an "medizin" anhalten, bis Du "medizin" wieder von defer_transports entfernst.
p@rick
Hallo Posftix Gemeinde,
danke für die vielen Hinweise. Besonders auf den von Patrick wäre ich so nicht gekommen. Er fordert ein grundlegendes umgestalten meiner Postfix-Konfigurationen, macht aber sehr viel Sinn. Mal sehen, ob ich dass bis zum Umstellungstermin am Montag realisieren kann. Ansonsten würde ich die Mails mit einem Mapping wohl aktiv in die Hold-Queue legen und diese anschließend einfach flushen.
Auf die Idee, Postfix sich selbst zu überlassen und zu sehen, wie es reagiert, wenn es die Mail nicht weiterleiten kann bin ich auch schon gekommen. Das muss ja funktionieren, solange die Lifetime hoch genug ist. Aber wie gesagt, ich war auf der Suche nach ein paar Denkanstößen für eine elegantere Lösung.
Dafür allen vielen Dank!
Stephan Jacob
Otto-von-Guericke Universität Magdeburg Universitätsrechenzentrum (URZ)
Universitätsplatz 2 Gebäude 26 - 035
39106 Magdeburg
Tel.: 0391-67-58572 Fax: 0391-67-11134
-----Ursprüngliche Nachricht----- Von: postfix-users [mailto:postfix-users-bounces+stephan.jacob=ovgu.de@de.postfix.org] Im Auftrag von Patrick Ben Koetter Gesendet: Mittwoch, 17. Juli 2013 22:01 An: postfix-users@de.postfix.org Betreff: Re: [postfix-users] Postfix - Weiterleitung an speziellen Mailserver unterbinden
* Stephan Jacob Stephan.Jacob@ovgu.de:
Hallo Postfix Gemeinde,
an der Uni Magdeburg können die Nutzer ihr Postfach auf einen von drei Servern haben:
entweder sie sind auf exchange
entweder sie sind auf cyrus
entweder sie sind in der Medizin (dort läuft auch Exchange)
Wenn eine Mail auf unserem Relay eingeht (dort läuft Postfix) wird über den virtual_alias_maps Parameter eine LDAP-Abfrage initiiert. Im LDAP steht dann als Forwarding-Adresse entweder exchange, cyrus oder medizin (je nachdem wo der Kollege sein Postfach hat). Die Mail wird
entsprechend weitergeleitet.
Du verwirfst die Idee mit den virtual_alias_maps, denn Dein Server ist ein Boundary Filter, der Mails filtern und routen, aber nicht lokal in eine Storage (virtual_alias...) legen soll.
Dann baust Du Dir drei services in der master.cf. Kopier den relay-Service und nenne sie: exchange, cyrus und medizin.
Als nächstes nimmst Du die ovgu-Domain - und ihre gefühlten 20.000 Zusatzdomains - in die relay_domains auf und baust Dir eine relay_recipient_maps-Abfrage, die im LDAP prüft ob der Empfänger vorhanden ist - das hält viel Spam weg.
Jetzt zum Routing. Du willst für jedes Ziel einen eigenen Service (oben schon gebaut). Nun musst Du die Leute den Zielen zuordnen.
Bau Dir drei transport_maps-Abfragen in LDAP, die je recipient das passende Deiner drei Ziele als Wert zurückliefern wird. Warum drei Abfragen? Jede Abfrage lieft ein modifiziertes Ergebnis zurück. Für die Modifikation nimmst du den $result_format Parameter - der verändert das Ergebnis, das Postfix zu sehen bekommt.
In der ersten Map könnte z.B. folgendes stehen:
result_format = cyrus:[ip.von.cyrus]:25
In der Zweiten:
result_format = exchange:[ip.von.cyrus]:25
In der Dritten:
result_format = medizin:[ip.von.cyrus]:25
So, jetzt hast Du für jedes Ziel einen eigenen Transport. Und jetzt kannst Du Dein eigentliches Ziel umsetzen:
Ich möchte für eine Nacht die Zustellung von Mails an die Medizin unterbinden, da dort der Server umgestellt wird. Wie mach ich das am sinnvollsten ohne das LDAP anzufassen?
Setze nach den Edits folgendes in main.cf:
defer_transports = medizin
Jetzt wird Postfix Nachrichten für alles an "medizin" annehmen und die Zustellung an "medizin" anhalten, bis Du "medizin" wieder von defer_transports entfernst.
p@rick
-- [*] sys4 AG
http://sys4.de, +49 (89) 30 90 46 64 Franziskanerstraße 15, 81669 München
Sitz der Gesellschaft: München, Amtsgericht München: HRB 199263 Vorstand: Patrick Ben Koetter, Axel von der Ohe, Marc Schiffbauer Aufsichtsratsvorsitzender: Florian Kirstein
_______________________________________________ postfix-users mailing list postfix-users@de.postfix.org http://de.postfix.org/cgi-bin/mailman/listinfo/postfix-users
participants (5)
-
Florian Streibelt
-
Helmut Weigel
-
Patrick Ben Koetter
-
Robert Schetterer
-
Stephan Jacob