Zadejte hledaný výraz...

Jak na rozesílání emailů na pozadí větších portálů?

David Musil
verified
rating uzivatele
(69 hodnocení)
19. 12. 2016 08:22:24
Ahoj,
v souvislosti s vývojem většího portálu, bych si rád nechal poradit ohledně způsobu, jak rozesílat emaily uživatelům, aby to co nejméně zatěžovalo server a emaily chodily rychle. V podstatě nemám ani páru, jak se tato problematika řešit.
Ve zkratce:
- uživatel pošle soukromou zprávu jinému uživateli a ten chce na to být upozorněn emailem
- skončí nějaký inzerát, opět se posílá email
- potvrzení akce uživatelem pomocí zaslaného jednorázového hesla do emailu, atd.
V podstatě zde na Webtrhu funguje to samé. Někdo vám pošle zprávu, dostanete email. Skončí vám poptávka, nabídka, aukce - dostanete email.
Mají se emaily posílat hned, jak se provede skript, který provádí operaci, kdy by se ten email měl poslat? Někdo pošle někomu zprávu, hned se pošle email. Nebo se tohle dělá cronem třeba každých 5 minut s tím, že emaily se řadí do jakési fronty a jsou odesíláný podle jakési určené priority?
Když chci poslat email, že někdo někomu napsal interní zprávu, tak to 5 minut klidně počká. Když chci ale zaslat odkaz na obnovení hesla, tak uživatel rozhodně 5 minut čekat nebude, než mu email přijde.
Děkuji za tipy a rady.
19. 12. 2016 08:22:24
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244294
Holicz
verified
rating uzivatele
(5 hodnocení)
19. 12. 2016 08:26:18
Na větším webu bych použil nějaký job systém. Dáváš úkoly ke zpracování a workeři si je hned berou a udělají. Pokud ti tam přijde jeden úkol za dvě sekundy, tak ti bohatě stačí jeden worker, ale dá se to škálovat, takže workerů se dá pustit neomezeně, kdyby úkolů chodilo hodně.
Takový systém je třeba RabbitMQ - https://www.rabbitmq.com
19. 12. 2016 08:26:18
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244293
Martin
verified
rating uzivatele
(62 hodnocení)
19. 12. 2016 08:28:08
Osobně si myslím, že posílat stejným scriptem určitě ne. Odeslání může dlouho trvat, nebo spadnout úplně. Já dám email do fronty a každou minutu to cronem zkontroluju a emaily odešlu.
19. 12. 2016 08:28:08
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244292
David Musil
verified
rating uzivatele
(69 hodnocení)
19. 12. 2016 08:32:59
Napsal Martin Kejzlar;1347277
Osobně si myslím, že posílat stejným scriptem určitě ne. Odeslání může dlouho trvat, nebo spadnout úplně. Já dám email do fronty a každou minutu to cronem zkontroluju a emaily odešlu.
Martine díky, zdálo se mi to jako logičtější řešení. Máš u nějakého projektu, kde jdeš touto cestou, vlastní server nebo máš klasický hosting? Jde mi pouze o nějaký rozumný počet těhle emailů, které najednou odeslat. Chápu, že je to na domluvě s hostingem a na jeho kapacitě, ale ať mám určitou představu pro srovnání.
19. 12. 2016 08:32:59
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244291
TomasX
verified
rating uzivatele
(4 hodnocení)
19. 12. 2016 08:34:47
jasně, hodit do fronty, klidně do db, nepotřebuješ ani rabbita. Záleží na množství, ale už při několika desítkám tisíc rozeslaných emailů do čech začneš mít problém se seznamem a centrumem, jednání s nimi je občas komplikované.
Dej ale velký pozor na spam filtry, sleduj stav odeslaných emailů a odpovědí vzdálených serverů, stejně jako tady na webtrhu, když se ti email nepovede několikrát poslat, invaliduj emailovou adresu a chtěji znovu její ověření.
Snaž se sdružovat zprávy z více emailů do jednoho a začni přemýšlet, že k emailům bys přidal i další kanály typu privátní zprávy na sociálních sítích, ty si notifikaci přes push zprávy na mobilech zařídí. Pořád značná část běžné populace má na mobilu spíše facebook než email.
19. 12. 2016 08:34:47
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244290
Martin
verified
rating uzivatele
(62 hodnocení)
19. 12. 2016 08:44:57
Napsal musil.david;1347279
Martine díky, zdálo se mi to jako logičtější řešení. Máš u nějakého projektu, kde jdeš touto cestou, vlastní server nebo máš klasický hosting? Jde mi pouze o nějaký rozumný počet těhle emailů, které najednou odeslat. Chápu, že je to na domluvě s hostingem a na jeho kapacitě, ale ať mám určitou představu pro srovnání.
Nemám moc přehled jaká mají omezení běžné hostingy, ale asi nebudou mít možnost nastavit Cron po minutě a bude i drasticky limitovaný počet odeslaných emailů. Případně se budou odesílat z IPčka, které je někde na blacklistu. Osobně mám managed VPS, kde mám limit 1000 za hodinu a vlastní IP.
19. 12. 2016 08:44:57
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244289
Martin Bárta
verified
rating uzivatele
(28 hodnocení)
19. 12. 2016 11:39:36
U nás v e-shopu jsme si to udělali taky do CRONu po jedné minutě. Aktuálně už z toho chodí jen newslettery a další nepříliš důležité e-maily - ty transakční o objednávkách, registraci atp potřebuje mít zákazník okamžitě a minuta někdy může přijít moc dlouhá. Během ní už i stihnou zavolat, že jim ten e-mail nepřišel.
Proto ty důležité e-maily odesíláme okamžitě. Díky dobrýmu nastavení a respektování veškerých DKIM, DMARC, SPF se Seznamem nemáme problém.
19. 12. 2016 11:39:36
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244288
TomasX
verified
rating uzivatele
(4 hodnocení)
19. 12. 2016 11:44:03
vždyť frontu můžeš odbavovat hned a ne každou minutu. Je potřeba občas email poslat opakovaně ať už se jedná o nějaké soft bounced nebo plnou schránku. Seznam je samozřejmě pořád problém, jakmile na něj jde desítky tisíc emailů denně, cuká se a občas je jejich servery prostě nepříjmou, toť realita.
19. 12. 2016 11:44:03
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244287
Oleg
verified
rating uzivatele
(53 hodnocení)
19. 12. 2016 12:25:12
@davide
Resime neco podobneho na nasem novem projektu.
Maily momentalne rozesilame pres SMTPs (zabezceny) server kde je nastaveno SPF a DKIM, primo v nasi web app.
Typy mailu se daji rozdelit, jak pises sam, do tri kategorii:
1) registrace uzivatele;
2) vnitrni komunikace - uzivatel-uzivatel (jenze my toto posilame dvakrat - kopii odesilateli + prijemci);
3) transakcni maily (nakup, prodej, poptavka apod.);
4) newsteller;
Pricemz prvni tri kategorii odesilame ihned, bez cekani. Provozujeme to zatim na limitovanem SMTP. Newsletter jsme zatim resili jednou, neotravujeme lidi, pouzili jsme na to MailChimp.
Prvni tri kategorie je dulezite aby mely format mailu HTML a plain text, vystizny predmet a spravne strukturovany text. Ma to taky vliv na dorucitelnost.
Pokud prozatim mas malo odebiratelu, vystacis si s SMTP limitem 500/1500 mailu denne.
Na newsletter premyslime o pouziti externiho nastroje. Pokud SMTP limity precerpame, premyslime o nakupu SMTP serveru u jine spolecnosti. Neco nabizi Zoner, konkretne Cloud Mail.
19. 12. 2016 12:25:12
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244286
kojot6
verified
rating uzivatele
20. 12. 2016 22:40:25
Jako ono to zní logicky řešit frontu na úrovni aplikace, ale podle mě to není ten správný přístup.
Pokud má člověk vlastní SMTP server, tak odeslání vlastnímu SMTP serveru proběhne hned. O doručování mailu se pak stará SMTP server, který už má vlastní frontu, a tak by mi přišla rozumnější konfigurace zde.
Nějaké info třeba tady - http://serverfault.com/questions/110919/postfix-throttling-for-outgoing-messages
Logičtější je rozhodně konfigurace postfix než programování logiky aplikace.
20. 12. 2016 22:40:25
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244285
Messa
verified
rating uzivatele
20. 12. 2016 23:37:50
Často se pro newslettery a transakční maily používají služby, jako je Mandrill, Mailgun, Sendgrid, nebo třeba Amazon SES. Obsah e-mailu se jim pošle přes REST API a ony se už postarají o jeho doručení. Výhodou těchto služeb je, že se někdo aktivně stará, aby to fungovalo. Freemaily, jako Seznam, Google atd. mají svá omezení motivovaná bojem proti spamu, typu maximální počet odeslaných mailů z jedné IP adresy nebo domény za hodinu, graylisting, nebo co ten e-mail má všechno splňovat. Abyste toho samého docílili na home-made řešení, tak opravdu nestačí na svém (často jediném) VPS pustit "apt-get install postfix" a doufat, že to bude fungovat. Samozřejmě nevýhodou je, že tyto služby jsou placené, ale zase - pokud máte malý objem, neplatíte zase tolik, pokud máte velký objem, měli byste při home-made řešení problémy (s doručitelností) a náklady na jejich řešení ještě větší.
Ať už budete ten mail posílat z aplikace přes nějaké SMTP, nebo přes API služeb, co jsem zde vyjmenoval, rozhodně doporučuju použít frontu (RabbitMQ, databázi). Nejen že to zrychlí dobu odpovědi vašeho webu, ale pokud to API/SMTP/... bude mít náhodou výpadek, tak se nic neděje a worker zpracovávající frontu to zkusí po nějaké době znovu - žádný e-mail se neztratí. Zkuste tohle řešit v rámci zpracování HTTP odpovědi, která by neměla trvat déle než max. pár sekund.
Další bonus těch mailingových služeb - často poskytují analytiku odeslání, bounců, otevření, kliknutí na odkazy v těch e-mailech.
20. 12. 2016 23:37:50
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244284
kojot6
verified
rating uzivatele
21. 12. 2016 09:48:15
Amazon SES je zrovna na spoustě blacklistů. Ale jinak souhlas, konfigurace vlastního mailového serveru je docela overkill. Já například informace o stroji doručuji přes klasický mailbox s autorizovaným SMTP, problém je, že je tam limit 50 zpráv denně, což třeba mě zrovna stačí.
21. 12. 2016 09:48:15
https://webtrh.cz/diskuse/jak-na-rozesilani-emailu-na-pozadi-vetsich-portalu/#reply1244283
Pro odpověď se přihlašte.
Přihlásit