[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

postfix: Mails mit Verzögerung abschicken?



Title: postfix: Mails mit Verzögerung abschicken?

Hallo,

 

gibt es eigentlich eine Möglichkeit, postfix mitzuteilen, dass eine Mail, die jetzt übergeben wurde, erst ein später paar Stunden an den Relayserver weitergereicht werden soll? Bei meiner Suche nach "postfix delay mails" bin ich nur auf Fehlermeldungen gestoßen, wo angemeckert wurde, dass Mails mit Verzögerung rausgehen.

 

Hintergrund: Ich habe mir ein Script gebastelt, mit dem ich zwischen dem 1. und 24. Dezember jeden Tag eine individualisierte Mail an Freunde und Bekannte schicke -- eine Art Adventskalender. Das Script wird per anacron gestartet und läuft in der Regel kurz nach Mitternacht. Nun hat sich ein guter Freund, der mittlerweile in Canada lebt, über "Mails aus der Zukunft" beschwert -- er lebt halt in einer anderen Zeitzone und für ihn kommen die Mails  immer einen Tag zu früh an. Wie ich ihn kenne, war seine "Beschwerde" nicht wirklich ernst gemeint, aber mir lässt nun die Frage keine Ruhe, ob ich irgendwie postfix dazu bringen kann, bestimmte Mails zu verzögern.

 

Sicher gäbe es andere Möglichkeiten:

1) Script generell per normalem cron-job starten, um sicherzustellen, dass es erst zu einer bestimmten Zeit läuft. Nachteil: Sollte der Rechner zu dieser Zeit einmal ausgeschaltet sein, wird das Script nicht ausgeführt; anacron dagegen holt versäumte Jobs nach.

 

2) Script in verschiedenen Instanzen starten (per anacron für unverzögerte Mails, per cron für die mit Verzögerung). Nachteil: Wie bei 1) -- ist der Rechner aus, verfällt der eine Job; immerhin würden aber die Mails an die anderen rausgehen.

 

3) In der vom Script genutzten Adressdatei sind ohnehin schon zu jeder Adresse bestimmte Einstellungen (z.B. From-Adresse, weil ich verschiedene Mailaccounts habe, die ich für verschiedene Leute nutze, und Anrede/Schlussformel) gespeichert, die dann vom Script ausgelesen und Variablen zugewiesen werden. Ich könnte vielleicht noch einen Wert für Verzögerungen einfügen. Wenn die entsprechende Variable gesetzt ist, könnte ich mit  date prüfen, ob beim Empfänger schon "heute" ist (dann würde die Mail sofort verschickt) und ansonsten mit at das Script für diesen Empfänger zu einem späteren Zeitpunkt noch einmal starten. Nachteil: Das sieht doch nach einem üblen Hack aus, der zwar jetzt funktionieren würde, aber problematisch werden könnte, falls irgendwann einmal noch mehr Zeitzonen ins Spiel kommen sollten. Außerdem würde das Script von at erst am nächsten Tag ausgeführt werden, wenn der Rechner zum kritischen Zeitpunkt aus sein sollte.

 

Das einfachste -- wenn so etwas überhaupt gehen sollte!  -- wäre eben, wenn ich direkt bei postfix ansetzen könnte: Der sollte ja immer laufen, wenn der Rechner aktiv ist, und einen entsprechenden Mechanismus scheint es dort ja auch zu geben. Ist etwa gerade kein Netz verfügbar, verschwindet eine Mail ja ncht einfach ins Nichts, sondern postfix versucht (in immer länger werdenden Intervallen), sie doch noch zuzustellen.

 

Übrigens verwende ich Debian/sid postfix 3.3.1-1+b1. Im Script nutze ich s-nail (14.9.11-1), um die Mails an postfix weiterzureichen. Jede Mail wird individuell zusammengestellt; es wäre also kein Problem, bei einzelnen Mails zusätzliche Header einzufügen.

 

Was meint ihr: Gibt es irgendeine Möglichkeit, wie ich mein Ziel erreichen kann? Es ist natürlich nur Spielerei von eher fragwürdigem praktischen Nutzen -- aber auch spielend kann man etwas lernen! :-)

 

Schönen Gruß

 

Andreas

Attachment: pgps5IAIXLAIN.pgp
Description: PGP signature


Reply to: