Devět důkazů, že nejsem spammer
V sobotu večer, pár minut po jedenácté, mi přišel e-mail od poskytovatele internetu. Oznamoval, že z mé přípojky odchází spam, a proto mi zablokoval porty 25 a 465 — tedy přesně ty dva, kterými se posílá pošta.
Spam jsem neposílal. Posledních třicet minut jsem testoval, jestli mailserver, který jsem právě dostavěl, posílá poštu správně. Otevřel jsem asi padesát spojení na mailové porty, abych ověřil, že šifrování funguje, certifikát sedí, podpisy se ověří a zpráva dorazí do schránky místo do spamu.
Heuristika na routeru neviděla obsah. Viděla frekvenci. A padesát spojení na port 25 za půl hodiny vypadá jako infikovaný počítač, ať už se tam děje cokoli.
Tohle je příběh o tom, co všechno musí být v pořádku, aby vám dnes někdo přijal e-mail — a proč to nakonec stejně nemusí stačit.
Proč to vůbec dělat
Když si dnes chcete posílat maily, uděláte to přes Google, Microsoft nebo Seznam. Je to zdarma nebo skoro zdarma, funguje to, a nemusíte nic nastavovat.
Cena se neplatí penězi. Platí se tím, že vaše korespondence leží na cizím disku, prochází cizími klasifikátory a podléhá pravidlům, která nikdo nevyjednával. Když se poskytovateli něco nezdá, účet zmizí a odvolání se řeší přes formulář, kterému neodpovídá člověk.
To je pro většinu lidí přijatelný kompromis. Pro mě ne — mám několik projektů s vlastními doménami a nechci, aby jejich komunikace závisela na rozhodnutí, které nemůžu ovlivnit ani zpochybnit.
Takže vlastní server. Jeden virtuální stroj, software, doména. V roce 2026 by to mělo být otázka odpoledne.
Nebylo.
Čas, který vám nepatří
První problém se objevil dřív, než jsem nainstaloval cokoli souvisejícího s poštou.
Server, který jsem si pořídil, není plnohodnotný virtuální stroj, ale kontejner. Sdílí jádro operačního systému s hostitelským počítačem, což ho dělá rychlejším a levnějším. Má to jeden důsledek: nemůže si nastavovat vlastní hodiny.
Zkusil jsem spustit službu, která synchronizuje čas, a dostal jsem strohé odmítnutí. Operace není povolena.
Vypadá to jako maličkost. Není.
Moderní autentizace stojí na čase. Tokeny mají v sobě zapsáno, kdy byly vydané a do kdy platí. Jednorázová hesla z mobilní aplikace se počítají z aktuálního času v třicetisekundových oknech. Podepsané zprávy nesou razítko. Když se vašemu serveru rozjedou hodiny o dvě minuty, přestanou fungovat věci, které s časem zdánlivě nesouvisí — a chybové hlášky vám o tom neřeknou nic užitečného.
Nakonec to dopadlo dobře. Hostitel drží čas s odchylkou pod čtvrt milisekundy, takže jsem nechal službu běžet v režimu, kdy čas jen měří a nesahá na něj. Ale je to první z několika věcí, které na tom serveru nemám pod kontrolou a musím se spolehnout, že je někdo jiný dělá správně.
Adresa, kterou vám nikdo nevěří
Než jsem nainstaloval mailserver, musel jsem vyřešit tři věci, které se nedají odbýt a každá trvá dny.
Otevřený port. Porty jsou očíslované vstupy, kterými do počítače přichází provoz. Číslo 25 je vyhrazené pro poštu mezi servery a naprostá většina poskytovatelů ho má zavřený. Důvod je prostý: většina spamu na světě odchází z infikovaných domácích počítačů, takže je jednodušší ten port zavřít všem a otevřít ho na požádání těm, kdo ho opravdu potřebují.
Takže první úkol při stavbě mailserveru není nainstalovat mailserver. Je to napsat žádost.
Zpětný záznam. Každá adresa na internetu má číslo. Když váš server někam pošle poštu, příjemce se zeptá: „tohle číslo, komu patří?" Ta otázka se jmenuje reverzní záznam a odpověď musí souhlasit s tím, čím se váš server představil. Když se představíte jako mail.priklad.cz, ale číslo ukazuje na vps-4471.hosting.example, vypadáte podezřele. Ne proto, že byste lhali — spam z takových adres prostě chodí častěji.
Nastavuje se to v administraci poskytovatele a trvá to hodiny, než se to rozšíří po internetu.
Čistá historie. Tohle je ta nejzrádnější část. Adresy se recyklují. Když před vámi na téže adrese seděl někdo, kdo rozesílal spam, zdědíte jeho pověst. A pověst se na internetu nemaže — existují seznamy problematických adres, ze kterých se odstraňuje pomalu a někdy vůbec.
Než jsem cokoli nainstaloval, zkontroloval jsem svou adresu ve čtyřech takových seznamech. Byla čistá. Kdyby nebyla, jediné rozumné řešení by bylo požádat o jinou a začít znovu.
Devět mechanismů a jedna doména
Pak přišla ta část, kvůli které tenhle text píšu.
Aby vám dnes velký poskytovatel přijal e-mail a nehodil ho do spamu, musí sedět řada nezávislých mechanismů. Vznikaly postupně za posledních dvacet let, každý řeší jinou díru, a žádný z nich sám o sobě nestačí.
Kdo smí posílat za vaši doménu. V nastavení domény uvedete, které servery mají právo odesílat poštu vaším jménem. Příjemce si to ověří a když zpráva přijde odjinud, odmítne ji. Řeší to podvržení odesílatele — bez toho by vám kdokoli mohl poslat mail, který vypadá, že je od vaší banky.
Digitální podpis. Každou odchozí zprávu server podepíše kryptografickým klíčem. Veřejná část klíče je zveřejněná v nastavení domény, takže si příjemce může ověřit, že zpráva cestou nikdo nezměnil a že skutečně pochází od vás.
Tady jsem narazil na věc, která mi přišla jako předzvěst všeho ostatního.
Existují dva algoritmy, kterými se dá podepisovat. Starší je postavený na velkých číslech, podpisy jsou dlouhé a výpočet pomalejší. Novější používá eliptické křivky, je rychlejší a podpis je kratší. Zapnul jsem oba, protože to nic nestojí.
Když jsem si poslal testovací zprávu na Gmail a otevřel podrobnosti, uviděl jsem tohle:
dkim=neutral (no key) ... moderní algoritmus
dkim=pass ... starší algoritmusGoogle ten novější neumí ověřit. Označí ho jako „nemám klíč" a přeskočí. Kdybych nasadil jen ten moderní — ten správný, rychlejší, doporučovaný — Gmail by můj podpis neověřil vůbec a moje pošta by se chovala, jako by nebyla podepsaná.
Celý ten článek je vlastně o tomhle. Uděláte to podle nejlepší praxe a systém vám to nepozná.
Co dělat, když něco nesedí. Třetí mechanismus je instrukce pro příjemce: „když u zprávy z mé domény selže kontrola podpisu nebo oprávnění, zahoď ji." Zároveň říká, kam poslat denní hlášení o tom, co se dělo.
Zvolil jsem nejpřísnější variantu. Znamená to, že jakákoli chyba v mé konfiguraci se neprojeví jako mail ve spamu, ale jako mail, který nikam nedorazil a nikdo mi o tom neřekne. Zjistím to z hlášení. Druhý den.
Vynucené šifrování. Když si dva mailservery předávají zprávu, dohodnou se na šifrování. Problém je, že ta dohoda se dá odposlechem shodit — útočník vyhodí z konverzace nabídku šifrování a oba servery si myslí, že protistrana ho neumí. Existují dva mechanismy, které tomu brání, každý jinak.
Ten první publikuje na webu dokument, kde stojí „mé servery umí šifrování, nevěřte nikomu, kdo tvrdí opak". Ten druhý ukládá do nastavení domény otisk certifikátu, takže příjemce pozná, jestli mluví se správným serverem.
Nasadil jsem oba. A u toho druhého jsem viděl v praxi, jak selhává.
Když mechanismus proti spamu zastaví hlášení o spamu
Můj server automaticky rozesílá denní hlášení o tom, jakou poštu dostal a jak dopadla kontrola podpisů. Je to zdvořilost — druhá strana se díky tomu dozví, že se za ni někdo vydává.
Jedno takové hlášení jsem posílal slovenské firmě, ze které mi opakovaně chodil spam. A nedoručilo se.
DANE authentication failed
Message rescheduled for deliveryTen druhý mechanismus — ten s otiskem certifikátu — u nich nefunguje. Mají v nastavení domény zapsaný otisk, který neodpovídá certifikátu, který skutečně nabízejí. Můj server to zkontroloval, zjistil nesoulad a odmítl doručit.
Zachoval se správně. Přesně tak, jak má.
Výsledkem je, že firmě, která rozesílá spam, nemůžu doručit hlášení o tom, že rozesílá spam. Protože má rozbitý bezpečnostní mechanismus, jehož účelem je spam omezovat.
Nikdo jim to neřekne, protože nikdo jiný jim taky nedoručí. A oni to nevědí, protože jim nic nechodí.
Vlastní server, který si sám zakáže vstup
Mailservery se brání hrubé síle. Když z jedné adresy přijde několik neúspěšných přihlášení za sebou, adresa se zablokuje. Je to standardní a funguje to.
Po jednom restartu se můj poštovní klient v počítači pokusil připojit se starým heslem. Zkusil to, nepovedlo se, zkusil to znovu. A znovu. Klienti to dělají automaticky, aniž by se ptali.
Server mou domácí adresu zablokoval. Kompletně — nejen poštu, ale i webové rozhraní, přes které se ta blokace ruší.
Takže jsem se nemohl přihlásit do administrace svého serveru, abych odblokoval svou adresu, protože moje adresa byla zablokovaná.
Vyřešil jsem to přes mobilní data. Ale je v tom stejná logika jako ve všem ostatním: mechanismus funguje přesně tak, jak byl navržený, a výsledek je absurdní.
Reputace, kterou si nekoupíte
Když jsem měl všechno nastavené, pustil jsem svou zprávu přes nástroj, který hodnotí pravděpodobnost, že skončí ve spamu. Dostal jsem 6,3 z 10.
Rozpis vypadal takhle:
+ podpis platný
+ podpis z vaší domény
+ oprávnění k odesílání ověřeno
- podezřelá koncovka domény -0,5
- podezřelá koncovka domény -2,0
- nedůvěryhodná koncovka domény -1,0Tři a půl bodu za to, že moje doména končí na .xyz.
Ta koncovka je levná, takže ji používají lidé, kteří potřebují hodně domén nakrátko. Tedy hlavně spammeři. Filtry se to naučily a penalizují ji plošně, bez ohledu na to, co se za ní skrývá.
S tím se nedá nic dělat. Není žádný proces, kterým se z toho dá vyvázat. Buď si koupíte jinou doménu, nebo s tím žijete.
Zajímavější je, co to znamená obecně. Doména za dvě stě korun ročně vám dá horší výchozí pozici než doména za pět set. Ne kvůli technické kvalitě, ale kvůli statistice o tom, kdo si levné domény kupuje. Je to regresivní daň zabudovaná do infrastruktury.
Přeložil jsem si to takhle: pokud posíláte faktury, nepoužívejte .xyz.
Zahřívání
Pak přišla věc, o které se moc nemluví. Nová adresa nemá historii, a poskytovatelé nedůvěřují nikomu, o kom nic nevědí.
Doporučený postup se jmenuje warm-up. První týden posíláte desítky zpráv denně. Pak postupně přidáváte. Trvá to týdny.
Když nová adresa začne ze dne na den chrlit stovky zpráv, chová se jako spammer. Nezáleží na tom, že vaše zprávy jsou legitimní — vzor je stejný.
Je to rozumné opatření a dává smysl. Zároveň to znamená, že mezi „mám server" a „můžu ho používat na cokoli důležitého" leží měsíc trpělivosti.
Někdo se dívá
Deset minut po tom, co jsem otevřel poslední port, se v záznamech objevilo tohle:
Invalid EHLO command ... remoteIp = 121.228.43.8 ... domain = "User"
Authentication not allowed ... remoteIp = 121.228.43.8Čínský sken. Server se představil neplatným jménem a zkusil se přihlásit na portu, kde se přihlašovat nemá. Můj server ho odmítl.
Během dne přibyly další. Výzkumný projekt, který indexuje celý internet. Firma, která analyzuje bezpečnost mailových serverů — ta se během dvaceti sekund připojila padesátkrát.
Nic z toho nebylo nepřátelské a nic neuspělo. Ale je to dobré vědět: jakmile něco vystavíte na internet, je to do několika minut v databázích, které si nikdo nevyžádal.
A potom ten mail od poskytovatele
Vrátím se na začátek.
Když jsem měl všechno hotové, chtěl jsem si ověřit, že to funguje. Poslal jsem testovací zprávy na Gmail, na Seznam, na jednu firemní adresu. Ověřil jsem šifrování na čtyřech portech. Zkontroloval jsem otisk certifikátu. Nechal jsem dva nezávislé nástroje oskenovat konfiguraci.
Bylo to asi padesát spojení během půl hodiny. Z domácí přípojky.
Router poskytovatele viděl neobvyklou intenzitu provozu na portech, kterými se posílá pošta, a udělal přesně to, co má. Zablokoval je na čtyřiadvacet hodin a poslal mi oznámení, ve kterém zdvořile navrhuje, abych zkontroloval počítač na škodlivý kód.
Mail je mimochodem napsaný dobře. Vysvětluje, co se stalo, nabízí kontakt, blokaci ruší automaticky. Nemám jim co vyčítat.
Ale je v tom shrnuto všechno ostatní.
Strávil jsem několik dní nastavováním devíti mechanismů, jejichž jediným účelem je dokázat, že nejsem spammer. Podepisuju zprávy dvěma klíči. Mám zveřejněnou politiku, která říká příjemcům, ať zahodí cokoli, co neprošlo kontrolou. Publikuju otisk certifikátu, aby nikdo nemohl odposlouchávat.
A když jsem si šel ověřit, že to celé funguje, systém mě označil za spammera.
Ne kvůli tomu, co jsem posílal. Kvůli tomu, jak často.
Co si z toho vzít
Vlastní mailserver je dnes technicky dostupnější než kdy dřív. Software je dobrý, certifikáty jsou zdarma, dokumentace existuje. Ta část, která byla kdysi těžká, je dneska hotová za odpoledne.
Těžké je něco jiného. Je to devět nezávislých mechanismů, které musí souhlasit současně. Je to reputace, kterou nemáte a musíte si ji odsloužit. Je to infrastruktura, která předpokládá, že mailserver provozuje buď velká firma, nebo spammer — a s ničím mezi tím nepočítá.
Nefunguje to náhodou. Funguje to přesně tak, jak to bylo navrženo. Každý ten mechanismus vznikl jako reakce na skutečné zneužití a každý dává samostatně smysl. Jenže jejich součet je bariéra, kterou překoná jen ten, kdo má čas a trpělivost.
Což je mimochodem přesně ta definice centralizace. Ne zákaz, ale náklad. Nikdo vám nezakazuje provozovat vlastní poštu. Jen je to natolik náročné, že to skoro nikdo nedělá.
Já to dělám dál. Server běží, pošta chodí, Gmail i Seznam ji doručují do hlavní schránky. Certifikáty se obnovují samy, podpisové klíče se automaticky mění každé tři měsíce.
Ale rozumím tomu, proč to skoro nikdo nedělá. A rozumím tomu líp než před týdnem.