Naplánované odeslání e-mailu v SMTP

Naplánované odeslání e-mailu v SMTP
« kdy: 21. 02. 2022, 08:58:32 »
Zdrarr, jak se na SMTP serveru řeší funkcionalita, když je požadována funkce naplánovat si odeslání mailuv určitý čas? (Bez spoluúčasti MUA, to by pak stačilo v AutoITu naskiriptovat kliknutí na tlačítko Odeslat  ;D). Jako vím, že e-maily cestují přes různé "stanice" a existují různé Outbound a Inbound fronty, nejlépe v tomhle Excello je jistý garážový poskytovatel  několika e-mailových domén  zprofanovaný tím, že jeho obětem nechodí e-maily díky právě tomu, že se maily se přehazují jak horký brambor  na vítrholci různým pochybným outsourcovaným službám typu emailfree.

Například google mail, toho času před 15 lety pionýr freemailu v google labs uměl beta featuru naplánovat odeslání v určitý čas.

No a mě zajímá, jaká komponenta mailového serveru to řeší a co je třeba doprogramovat, jak se to řeší (propojí) s MUA, jestli teoreticky  MUA může pozdější odeslání nasignalizovat hlavičkou X-Send-At: 12:45 nebo +3600.

Nebo je jiný způsob, že MUA může určit do jaké fronty odešle mail? Třeba X-To-Queue: Scheduled-send...

SMTP server už má nějakou svoji logiku , to mě až tak nezajímá, ale ta spolupráce mezi MUA/MSA a nebo alternativně v roundcube ..

Nebo jestli se to řeší nějak jinak na serveru, prasácky cronem nebo  voláním sleep 3600 ; send()
« Poslední změna: 21. 02. 2022, 09:11:25 od Petr Krčmář »


RDa

  • *****
  • 2 182
    • Zobrazit profil
    • E-mail
Re:Jak se na SMTP serveru řeší naplánované odeslání e-mailu.
« Odpověď #1 kdy: 21. 02. 2022, 09:13:10 »
Reseni je implementacne zavisle.

Treba postfix ma ve /var/spool/mail ruzne servisni adresare a pro kazdy email je tam offline objekt o stavu dorucovani, takze kdyz je email ve fronte deferred, vi se kolikrat nebyl poslan a kdy bude nasledovat jeho pristi pokus.

imho email standardne neumi odlozit odeslani na urcitou dobu, kdyby jo, tak urcite najdes nejake RFC a tam konkretni reseni signalizace. A pak podporu onoho RFC musis hledat v klientovi i serveru, abys dokazal predat informaci o planovanem casu odeslani.

Pokud to neumi tedy obe strany, tak ti nezbyva nez to resit na strane klienta, napr to muzes naskriptovat treba pres at + sendmail, a to co chces poslat ulozis jako .eml z mailoveho klienta, neco jako (ilustrativne, presne argumenty si dohledej):
Kód: [Vybrat]
echo 'mail <pozdeji.eml' | at 1800

Re:Naplánované odeslání e-mailu v SMTP
« Odpověď #2 kdy: 21. 02. 2022, 09:30:32 »
Řeší to MUA. MUA může mít svou část i na serveru – mohou tam být uložené schránky a složky, typicky pak nějaká složka budou „e-maily k odeslání“, kde může MUA implementovat tu funkcionalitu odložení odeslání.

Obecně to nejde řešit pomocí fronty MTA, protože to je interní věc MTA a MTA do ní nevidí. A běžnou funkcionalitou toho odloženého odeslání e-mailu je to, že e-maily naplánované k odeslání vidíte a můžete odeslání zrušit.

Což samozřejmě neznamená, že to proprietární řešení nemohou mít jinak – zejména když to je třeba jeden software a hranice mezi MUA, MSA, MTA a MDA tam nejsou pevně dané.

Re:Naplánované odeslání e-mailu v SMTP
« Odpověď #3 kdy: 21. 02. 2022, 11:27:37 »
Exceloje
Tyjo a já jsem si byl téměř jistý, že jsem to napsal bezmezery

A já myslel že zrovna fronty jsou to pravé ořechová na tenhle problém.
No tak přijímací strana, natož MDA už tohle vůbec nemá v kompentenci
MUA přeci z definice nemůže být na serveru. To ale neznamená MUA  tu zprávu MSA nějak nepředá. Musí tam být nějaké rozhraní, by to bylo na MUA nezávislé. (Nebo tak bych to aspoň chtěl)

Mimochodem na svém MUA (Mozilla) mám složku k odeslání, jenže ta je lokální a existuje i extension, který  tuhle funkci řeší. Jenže je to řešení na klientovi. Já právě hledám funkci na serveru, že"odešlu" mail, ukončím TheBat, zaklapnu víko, a  teď as se stará server
« Poslední změna: 21. 02. 2022, 11:34:08 od mikesznovu »

Re:Naplánované odeslání e-mailu v SMTP
« Odpověď #4 kdy: 21. 02. 2022, 11:52:28 »
No tak přijímací strana, natož MDA už tohle vůbec nemá v kompentenci
To také nikdo nepsal.

MUA přeci z definice nemůže být na serveru
Samozřejmě, že může – třeba všechny webmaily.

Musí tam být nějaké rozhraní, by to bylo na MUA nezávislé. (Nebo tak bych to aspoň chtěl)
Takové rozhraní obecně neexistuje. Jakmile MUA předá e-mail MSA nebo MTA, je ten e-mail připraven k odeslání a může být odeslán kdykoli, kdy MTA uzná za vhodné.

Já právě hledám funkci na serveru, že"odešlu" mail, ukončím TheBat, zaklapnu víko, a  teď as se stará server
Na to potřebujete na serveru aplikaci, která ve správný okamžik předá e-mail MSA nebo MTA. Může to být přímo MUA, případně něco, s čím bude váš MUA umět komunikovat a předat mu tu informaci, kdy se má e-mail odeslat. Může to být třeba IMAP server – IMAP podporuje i odeslání e-mailu a pomocí rozšíření by se asi dala připojit informace o plánovaném čase odeslání.