Na konci roku 2015 jsem se rozhodl dát svým webovým stránkám větší rychlost a stabilitu připojení a přestěhovat je do cloudu. Předchozí provoz mých stránek jel vždy na mém „serveru“ na „domácí optické přípojce“. Několik let jsem tak bez problémů, fungoval a o svůj „server“ i jeho dostupnost se řádně staral. Vše se ale změnilo po náročném roce 2015, kdy mě čekalo v lokalitě, kde „server“ běžel několik výpadků energie, investice do UPS a také nutnost investice do dalšího disku. A tak jsem se rozhodl přestěhovat své servery do opravdové data centrály na opravdový server nikoliv na notebook důmyslně ukrytý v normální ložnici.
Po úspěšném přemigrování všech nutných služeb, dat i nastavení jsem stál před problémem, jak odesílat emaily ze serveru a přitom zabránit rozesílání spamu. V předchozím případě bylo nastavení jednoduché, server prostě poštu předával SMTP serveru dodavatele internetu. U odesílání pošty přímo v datových centrech je tomu trochu jinak a tak jsem se tehdy rozhodl zkonfigurovat server tak, aby poštu pomocí uživatelského jména a hesla předával přímo serverům google, kde mám emaily domény. Vše jsem nastavil pomocí funkce ssmtp. Vytvořil jsem pro tyto účely emailový účet a na vše po pár měsících 100% funkčnosti úspěšně zapomněl.
Já žil v blažené nevědomosti, že vše funguje správně. Když tu se mi ozval uživatel, že mu nepřišel email o registraci na portálu Agregatorblogu.cz. Tak jsem začal pátrat v paměti, jak jsem to kdysi dělal a proč to najednou nefunguje. Moc mi při tom pomohl fakt, že jsem o všem psal na blogu, takže vlastně stačilo použít vyhledávání a rázem jsem věděl, jak jsem vlastně nastavil odesílání pošty. Po pokusu odeslat testovací email jsem zjistil, že mě servery Google odmítají poštu převzít, kvůli překročení počtu odeslaných emailů. To mě zarazilo, protože mi přišlo divné, co by mohlo být příčinou, server většinou neodesílá více jak 20 emailu denně.
Přihlásil jsem se tedy do web mailu Google, abych si zkusil odeslat email z něj a nestačil jsem se divit, co na mě čekalo za překvapení. V přijatých emailech jsem našel přes 30 000 emailu s chybou, kterou odesílala plánovací funkce CRON. Ta měla byt přitom nastavena s parametrem, kdy k žádnému odesílání docházet nemělo. CRON je vlastně planovač, který se používá ke spouštění plánovaných úkolů a na mém serveru se stará teď primárně o robota agregatorablogu, který takto navštěvuje weby zapojené do projektu a zjišťuje na nich není nový obsah.
Za normálních okolnosti by nevadilo, že je služba nastavena na odesíláni emailu, ten totiž neputoval jinak než na lokální schránky. Nicméně bylo nutné časovač přenastavit tak, aby robot stihl zpracovávat rostoucí nároky a tak začalo docházet k tomu, že CRON odesílal 60 emailu s chybou každou hodinu. Tím tedy došlo k blokaci. Náprava byla velmi jednoduchá, stačilo přitom nastavit službu tak, aby emaily neodesílala vůbec a ignorovala tím parametr, který jsem buď to nastavil špatně nebo jej z nějakého důvodu služba ignorovala.
Chyba na serveru byla zřejmě dlouho, nicméně dokud nepřesáhl počet odeslaných chyb limitu, nevěděl jsem o ní. Je to krásný příklad toho, že chyby v systémech jsou všude kolem nás a některé jen trpělivě čekají, než se něco změní a oni se mohou naplno projevit. Až někdy budete číst například o nalezené chybě v zabezpečené nějakých aplikací nebo jinému problému, vzpomeňte si, že stačí zdánlivě málo a o problému se vlastně vůbec nemusíte dozvědět. Kdybych na serveru nerozjel další portál, který potřeboval využívat službu více, než předtím asi bych si ještě dlouho nevšiml že je někde problém.
Řešení popsaného problému
Vypnutí posílání emailu CRONU
crontab -e
na první řádek umístit text MAILTO=""
Mohlo by Vás zajímat
Web blíže k Vám nyní běžíme v Cloudu
Jak odesílat emaily pomocí funkce ssmtp
Portál spojující české a slovenské autory – www.agregatorblogu.cz
TlusŤjoch
2016-11-12 11:52:05Programátorské desatero: Odstaněním jedné chyby se do programu zavlečou dvě jiné.
Ijacek.007
2016-11-12 17:02:13TlusŤjoch tak uvidíme na kolik chyb ještě přijdeme :-)
hogreta
2017-03-17 21:52:15Ahoj, můžu se zeptat, v čem své webové aplikace programuješ? :) Zajímá mě to, protože se v této oblasti také pohybuju, i když já moc nerozumím frontendu, před nějakou dobou jsem se snažila něco psát v javascriptu a reactJS, ale upřímně mě to moc netáhne… takže zůstávám u backendu, většinou ho píšu v Javě – JavaEE, Spring, Spring Boot… Ale i když už jsem něco málo napsala, pořád se spíš učím. A čím víc se do problematiky zanořuji, tím víc vím, že nic nevím a že se musím naučit ještě tak milion věcí :-D. Tak mě zajímá, v čem je – například právě ten agregatorblogu – napsaný :).
Ijacek.007
2017-03-17 22:14:46Ahoj sve weby tvorim pomoci html php css a mysql. Ucim se kazdym kusem kodu.
Vložit komentář
* - vyžadované údaje. RSS kanál s komentáři