ubuntuusers.de

[Gedankenspiel] Versand von Emails auf bestimmte Zeitpunkte verzögern

Status: Ungelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

TheDarkRose

Avatar von TheDarkRose

Anmeldungsdatum:
28. Juli 2010

Beiträge: 3459

Hallo Community,

da ich oft auch am Wochenende geschäftliche Emails verfasse, aber ich eigentlich will, dass dann als Datum Samstag oder Sonntag beim Empfänger aufscheint, speichere ich bis jetzt immer als Entwurf und verschicke sie dann Montags. Oft passiert mir es doch, dass ich darauf vergesse, wenn ich mal wieder unterwegs bin, und dann gehen diese erst Dienstags oder sogar Mittwochs raus.

Nun, wie könnte ich Postfix so manipulieren, dass bestimmte Mails zwar angenommen werden, aber die Auslieferung um einen bestimmten Zeitpunkt verzögert wird?

fbartels

Anmeldungsdatum:
30. Oktober 2007

Beiträge: 314

Wohnort: Hannover

Welchen Client nutzt du denn? Outlook kann sowas von Haus aus, für Thunderbird habe ich auf die Schnelle ein Addon gefunden.

TheDarkRose

(Themenstarter)
Avatar von TheDarkRose

Anmeldungsdatum:
28. Juli 2010

Beiträge: 3459

Evolution, aber Cluentseitig bringt mir gar nichts, weil wenn ich dann unterwegs bin, ist der Client ja nicht online.

fbartels

Anmeldungsdatum:
30. Oktober 2007

Beiträge: 314

Wohnort: Hannover

Das mit dem Senden, wenn der Client nicht mehr online ist in der Tat auch abhängig vom Server. Outlook + Exchange/Zarafa kann auch verspätet senden, wenn der Client nicht mehr zum Server verbunden ist.

Da ich das aber ein interessantes Projekt finde, habe ich noch mal ein bisschen weitergegrübelt. Das folgenden ist rein theoretisch und nicht getestet, könnte aber funktionieren.

1. Postfix main.cf um smtpd_sender_restrictions ergänzen: smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/hold

2. Cron der Freitags um 17 Uhr deine E-Mail Adresse im Muster "deine@email.de HOLD" in /etc/postfix/hold schreibt und anschließend ein postmap auf die Datei ausführt.

Alle deine Mails landen nun beim Postfix in der Queue und werden dort nicht weiterbearbeitet.

3. Cron der Montags um 9 Uhr deine E-Mail aus /etc/postfix/hold entfernt, wieder ein Postmap macht und "postsuper -r ALL" ausführt.

Edit: getestet, funktioniert.

TheDarkRose

(Themenstarter)
Avatar von TheDarkRose

Anmeldungsdatum:
28. Juli 2010

Beiträge: 3459

Als Linuxer Outlook nutzen, neeee 😈 Zarafa mag ich nicht, das klopft alle Mails in die DB. Ich bin bei meiner traditionellen Postfix/Dovecot/Roundcube Kombo hängen geblieben.

Das mit den Cron wäre eine Idee, trifft aber auf alle Mails von mir zu. Ein header_check auf die Mails wäre flexibler und könnte ich allen Usern anbieten ^^. Ich denke da muss ich selbst einen kleinen Daemon schreiben, der sich in die Queue hängt wie Spamassasin oder policyd und dann erst zum gegebenen Zeitpunkt die Mail an den Postfix wieder zurückschickt. Erfordert natürlich ein Plugin am Client, das einen Extra Header setzt mit dem Sendezeitpunkt, aber das könnte die feinste Lösung werden.

Na dann, bin mal coden 😉

fbartels

Anmeldungsdatum:
30. Oktober 2007

Beiträge: 314

Wohnort: Hannover

Jeder wie er mag.

Ich bin jetzt davon ausgegangen, dass du von deiner geschäftlichen E-Mail nur verzögerte Mails schicken willst. Sollte am Wochenende mal eine dringende Mail dabei sein, dann kannst du diese natürlich auch händisch aus der Queue raus lassen. Statt smtpd_sender_restrictions kannst du natürlich auch mit einem header_check arbeiten.

TheDarkRose

(Themenstarter)
Avatar von TheDarkRose

Anmeldungsdatum:
28. Juli 2010

Beiträge: 3459

Warum einfach, wenns auch kompliziert geht 😈 Na mal schauen, auf jeden Fall wäre es eine feine Lösung. Natürlich Open Source, versteht sich von selbst. Hätte ja gehofft, es gäbe da schon was fertiges ☺

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Du müsstest dann aber zumindest auch sicherstellen, dass der Mailserver noch einmal das Datum anpasst, das in der E-Mail enthalten ist (also den Date-Header). Sonst wird die E-Mail zwar später zugestellt, aber anhand des Headers ist immer noch zu erkennen, wann Du die E-Mail erstellt hast.

TheDarkRose

(Themenstarter)
Avatar von TheDarkRose

Anmeldungsdatum:
28. Juli 2010

Beiträge: 3459

Sodale, bin jetzt soweit, wenn ein X-Delay Header vorhanden ist, dass die Email gehalten wird. Gilt natürlich nur bei authentifizierter Einlieferung über den submission-Port. Wird die Email mit postsuper -r ''queueid'' wieder freigegeben, wird der Date und X-Delay Header gelöscht und dank Filterservice wird dann wieder ein neuer Date Header gesetzt.

Ich verwende VBox.Adm, daher ist die Ausgansbasis auch die master.cf, die von VBox.Adm mitgeliefert wird. Anfolgt zeige ich auch nur die veränderten bzw. relevanten Punkte in meiner master.cf:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
submission inet n       -       -       -       -       smtpd
  -o cleanup_service_name=clsubmsn
pickup    fifo  n       -       -       60      1       pickup
  -o cleanup_service_name=cldelay
  -o content_filter=smtp-proxy:[localhost]:10024
cleanup   unix  n       -       -       -       0       cleanup
  -o always_add_missing_headers=yes
clsubmsn  unix  n       -       -       -       0       cleanup
  -o header_checks=pcre:/etc/postfix/delay/header_checks
cldelay   unix  n       -       -       -       0       cleanup
  -o header_checks=pcre:/etc/postfix/delay/cleanup
# /etc/postfix/delay/header_checks
/^X-Delay:.*/ HOLD
# /etc/postfix/delay/cleanup
/^Date:.*/ IGNORE
/^X-Delay:.*/ IGNORE

Jetzt fehlt natürlich nur mehr ein Bashscript, dass regelmäßig die Mails in der hold Queue überprüft ob die Zeitangabe im X-Delay Header schon überschritten wurde und dann gegebenfalls die Mail freigibt ☺

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

TheDarkRose schrieb:

Sodale, bin jetzt soweit, wenn ein X-Delay Header vorhanden ist, dass die Email gehalten wird. Gilt natürlich nur bei authentifizierter Einlieferung über den submission-Port. Wird die Email mit postsuper -r ''queueid'' wieder freigegeben, wird der Date und X-Delay Header gelöscht und dank Filterservice wird dann wieder ein neuer Date Header gesetzt.

Den Received-Header müsstest Du vermutlich auch noch berücksichtigen.

TheDarkRose

(Themenstarter)
Avatar von TheDarkRose

Anmeldungsdatum:
28. Juli 2010

Beiträge: 3459

Ein neuer Date wird eh gesetzt. Den Received Header finde ich jetzt noch so schlimm, der wird eh vom Client nicht ausgewertet.

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Ach so, ich hatte Dich so verstanden, dass der Empfänger gar nicht sehen können soll, wann die E-Mail geschrieben wurde.

TheDarkRose

(Themenstarter)
Avatar von TheDarkRose

Anmeldungsdatum:
28. Juli 2010

Beiträge: 3459

Hmm, da muss man schon neugierig sein. Aktuell sieht der Received-Header einer Testemail so aus:

Received: from hn1.example.com (localhost [127.0.0.1]) by hn1.example.com
 (Postfix) with ESMTP id C6EE0484121B for <me@gmail.com>; Mon,
 15 Sep 2014 21:08:08 +0200 (CEST)
Received: by hn1.example.com (Postfix, from userid 106) id A8C9D48413B3;
 Mon, 15 Sep 2014 21:03:01 +0200 (CEST)
Received: from [IPv6:2001:15c0:xxx] (xxx.sixxs.net
 [IPv6:2001:15c0:xxx]) by hn1.example.com (Postfix) with ESMTPSA id
 AEC41484121B for <me@gmail.com>; Mon, 15 Sep 2014 21:00:25
 +0200 (CEST)

Klar könnte ich den Received-Header löschen. Zumindestens den ersten. Wäre sogar global schön, damit verschwinden dann alle User-IPs im Verlauf, das wäre sogar sehr schön ☺ Bisschen mehr Privatsphäre.

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Ich weiß ja nicht, wie Deine Anforderungen sind. 😉

TheDarkRose

(Themenstarter)
Avatar von TheDarkRose

Anmeldungsdatum:
28. Juli 2010

Beiträge: 3459

Naja, normal halt ^^. Aber trotzdem eine gute Idee, diesen zu entfernen ☺

Antworten |