Ano, bylo by to možná lepší, ale ten server opravdu existuje, dá se o něm něco i zjistit (třeba dig), a doména testemail.cz mi přišla dostatečně jasně "testovací". Když jsem se snažil to přepsat na něco neutrálního, vnášelo to jen chyby. Server je navíc asi 20x přeinstalovaný kvůli ověření, že opravdu vše funguje a v návodu nic nechybí a i pro mě bylo jednodušší, když návod obsahoval skutečné údaje (kromě hesel).
Rozumim, existenci serveru jsem vsak nekontroloval. Volba .test/.example mi prijde proste vhodnejsi (RFC 2606) zvlast pokud clovek nechce zverejnovat info o infrastrukture, kterou spravuje, nebo naopak podprahove cilit skrytou reklamou :))
Ale nic proti gustu...
Ano, z domény testemail.cz hodlám udělat největší veřejný mail server a toto je reklama na něj :D Jak říkám, přemýšlel jsem nad tím, ale tohle vyšlo pro mě jednodušší. Bohužel se mi nějak nedostává času, takže jsem na tom pracoval po nocích a i tak mi z toho hrabalo. Výsledkem je třeba zapomenutý FW na IPv6, který se snad do článku doplní. Jinak tu doménu plánuju využít k dalším zajímavým aktivitám okolo konfigurace mailů, už jsem začal pracovat na nějakých testovacích skriptech ohledně domén, message reflektorech atd. A slavnostně slibuji, že tam nikdy nebude reklama ;)
Je to samozřejmě pravda, ale taky by se k tomu dalo dodat, že server nemá být hostovaný na cizím VPS, protože spoustu věcí lze vyčíst z memory dumpu, na konzoli lze zachytávat klávesnici atd atd. Proto tuto část bezpečnosti v návodu příliš neřeším a proto tam neřeším ani šifrování dat. Prostě to nemá smysl. Na serveru generuji v návodu klíč proto, protože to prostě funguje a nemusím řešit, jak vygenerovat klíč v Linuxu, Windowsu, Macu a já nevím, kde ještě. Jsou to drobné ústupky, ale na druhou stranu je to pořád lepší, než root s heslem 1234 a povoleným přihlášením odkudkoliv.
ad 1. To samé se dá říci i o NetworkManageru, ale konfigurace serveru je statická, takže dynamický firewall je zbytečnost. Při hromadné správě (kontejnery) by se nad tím dalo uvažovat. Obě to jsou technologie pro stroje které často mění síťové připojení a je zbytečné mít na serveru další běžící (a chybové a zdroje žeroucí) daemony. A líbí se mi ta pragmatičnost autora, která nezachází tak daleko (např. vypnutím SELinuxu).
kedze je to mail server tak server bude otvoreny na cely internet a vy napisete ze "dynamický firewall je zbytečnost" a iptables niesu dynamicke potom kedze firewalld iba vola iptables ?
Obě to jsou technologie pro stroje které často mění síťové připojení - nie niesu...
A ja som pisal, ze vypinat je to skoda a nie ze je to zle.
Este raz chvalim autora za clanok.
Zkuste mi napsat co navíc oproti statickým pravidlům mi přinese použití firewalld na mailserveru? Já své důvody, proč je podle mého názoru zbytečný, popsal.
A ano, iptables nejsou dynamické (ač třeba autorem použitý modul recent tuto představu nabourává :-) v tom smyslu v jakém dynamiku ve své definici používá firewalld.
Tvuj argument je naprosto mimo ... standardni instalace ti nahodi Xka kde/gnome/ ... a muzu argumentovat, ze neni duvod to tam nemit, protoze je to prece defaultni soucasti systemu ...
Prvni pravidlo jakykoli bezpecnosti je zcela vzdycky minimalismus. Tzn terminovat cokoli co neni nezbytne nutny.
K argumentům pro iptables-service
bych přidal to, že všude na internetu je plno návodů na iptables. Jakmile to máte něčím obalené (ať už jsou to „jen“ distribuční skripty, nebo je nad tím celá aplikace), komplikuje použití všech těch materiálů – přečtete si, jak něco nakonfigurovat v iptables, pak musíte zjistit, jak firewalld mapuje věci na iptables a pak to nakonfigurovat tak, aby vám z firewalld nakonec vypadla ta pravidla pro iptables, která jste znal na začátku. Přičemž třeba u těch distribučních skriptů to bývá tak, že ten postup transformace z konfiguráku do pravidel iptables není nikde zdokumentován, takže nezbývá než najít si to v příslušném skriptu. Skript, na kterém musím dělat nejdřív reverzní inženýrství, mi nijak nepomáhá, právě naopak. Samozřejmě také může nastat případ, kdy daná nadstavba příslušnou věc nepodporuje vůbec, a pak musím ještě řešit, jak skloubit tu nadstavbu s nativními iptables.
Podobné je to často s konfigurací sítě. To byl můj největší problém, když jsem kdysi začínal s Linuxem – přečetl jsem si návod, nakonfiguroval síť a firewall pomocí ip
a ipchains
, a pak jsem zjistil, že distribuce má na konfiguraci sítě jakési podivné soubory, které na ip
vůbec nepasují (bodejť by také pasovaly, když skripty ještě používaly ifconfig
).
Takže pokud někdo využije ty služby, které poskytuje nějaká nadstavba, ať ji používá. Ale pokud je to obecný návod, je podle mne mnohem lepší použít základní nástroj, protože si to pak každý může transformovat pro tu svou nadstavbu, kterou používá.
V čem je problém? Debianí triky fungují i na Fedoře a naopak.
Největší rozdíl v návodech na konzolu je rpm/yum/dnf versus apt. Jinak se v podstatě liší jenom verze balíčků repozitáře, na Debianu asi nebude moc dostupný třeba RPMFusion...
Co je v /etc/ je většinou stejný, nezávisí to ani tak na distru, ale na konkrétní službě (zmíněný firewalld / iptables). Všechno se chová stejně na OpenWRT (router), Raspbianu (HTPC s Raspberry) i na Fedoře na desktopech.
Je to zvláštní, ale je to velký problém, pokud to má fungovat. Ty drobný odchylky v konfiguracích jsou otravný. Většinou jsem používal Debian, ale když jsem (už koncem minulého roku) začal dávat dohromady tento návod, tak mi Debian přišel nějakej dost zuboženej. Politiky SELinuxu neexistovaly, daly se sice nainstalovat starší, ale ty se přestaly udržovat pro svoji rozbitost a každému u Debianu to bylo jedno... neměl jsem z toho dobrý pocit. Návod se samozřejmě dá aplikovat s přiměřeným úsilím na jinou distribuci.
A to je zase nevýhoda i takhle dobrých tutoriálů. Dají vzniknout instalacím, které nainstaluje neznalý člověk a dále se o ně nezajímá. Proto chválím autora, že se to pojal šířeji než jen jako instalaci postfixu a dovecotu na ideální server. O mailserver (a obecně o jakýkoliv server) je potřeba se starat, minimálně aktualizovat a reagovat na trendy v oblasti spamu a bezpečnosti.
Ano, internet je plný návodů, podle kterých to "nějak" funguje, ale většinou je třeba slepit několik konfigurací dohromady. Jen na velmi málo místech je alespoň základní popis toho, proč a co se nastavuje a tak se jen kopíruje. Občas je člověku smutno, když se dostane k nějakému serveru a koukne do poslepovaného main.cf a master.cf. V lepším případě jsou z toho drobnosti typu dvakrát podepsaný email DKIMem (např. iinfo.cz :D ), v horším to pak končí jako open relay.
Přesně tak, sa-update. Ale ani to není vždy výhra, Je potřeba se smířit s tím, že žádný server není zcela bezúdržbový a občas je potřeba něco přizpůsobit aktuální situaci ručně. Jinak samozřejmě to v návodu bude, ale zázraky nečekejte. Zrovna toto jsou věci, u kterých je nejlepší variantou mít pod tím silnou udržovanou distribuci a příliš si to neohýbat, protože to stojí neúměrné množství času a výsledek je často katastrofální, ve srovnání s defaultním stavem.
Díky, mrknu na to. Jak často jsou nové aktualizace? Koukám, že se to dá konfigurovat na různé kanály, máte tipy na dobré? Realita je taková, že když nastoupí nová vlna spamu (obden?), bylo by potřeba to aktualizovat v řádech minut. Tipuju si, že velcí mailprovideři mají své lidi, kteří to sledují a aktualizují své filtry obratem. Takový kanál by se mi líbil... :-)
V první řadě, bych na moderní mailserver SA necpal a poohlédnul se po něčem z tohoto století. Konkrétně Rspamd. V 1.6.x verzi bude dost novinek a za sebe mohu jen doporučit - v jednoduchosti správy, logice nastavení/konfigurace, možnosti úprav a v neposlední řadě také rychlosti/výkonu.
Ona volba SW byla dost problém, rozhodoval jsem se mezi klasikou a modernou, nakonec to až na RainLoop vyhrála klasika. On by někdo chtěl nginx, někdo unbound, někdo exim, někdo spamd, clamav většinou v produkci taky nepoužívám a raději nasazuju komerční řešení, ale tak to prostě je. On protokol SMTP je taky z minulého století/tisíciletí ;) A právě to překotné nasazování novinek není vždy to nejlepší. Stejně už teď počítám s tím, že to doplním alespoň o ten RoundCube, možná SOGo, pokud bude zájem, je možné dodatečně doplnit i další změny. Ale nejdříve by to měl být funkční a konzistentní systém a potom je možné si s tím hrát a experimentovat.
"Návod počítá s alespoň základní znalostí práce s OS Linux"
tak toto su imho uplne nedostacujuce poziadavky. to ako keby instruktor zacinajucemu letcovi (ktory v lietadle sedel iba raz a aj to len na nejakej prehliadke) pocas jeho prveho letu vravel: "tak teraz potiahni tuto paku a lietadlo zacne stupat. a teraz ju potlac a zacne klesat...". cize ten letec nema sajnu o lietani. takze najprv teoria, potom prax...
Ja by som este pridal do Vasej ctenej pozornosti "Anti Spam SMTP Proxy" (ASSP).
Vid
https://sourceforge.net/projects/assp/
https://sourceforge.net/p/assp/wiki/Main_Page/
Viac ako desat rokov sme ho s velkym uspechom pouzivali vo firme, nez dosli novi managori a presadili "komercne" riesenie.
Velkou vyhodou ASSP je, ze okrem toho, ze pokryva viacero bezpecnostnych vrstiev v postovej prevadzke (i v clanku spominanych), umoznuje a sprostredkuje dalsie sluzby v oblasti transportu, uzivatelov, notifikacii a pod.
Kedze pocet nastavitelnych parametrov je niekolko sto, vyhodou je prehladne administratorske rozhranie cez web.
Kdepak, graylisting veci zbytecne komplikuje - casto se stava, ze je potreba email dorucit rychle a z jine adresy... lepsi je nasazeni Nolistingu - https://www.computer.org/csdl/proceedings/dsn/2016/8891/00/8891a562-abs.html
"je potreba email dorucit rychle "
Tohle ti nezaruci naprosto zadny opatreni a je uplne jedno jestli pouzivas nebo nepouzivas greylist.
Pokud nekdo potrebuje neco dorucit rychle, a snazi se o to emailem, tak pouziva naprosto spatnej nastroj. Email funguje totiz exaktne stejne jako posta - hodis neco do shranky a mozna, nekdy (nekomu) neco dojde.
Pozor, ja nikde netvrdim, ze je email nejakou sluzbou s garatnovanym doprucenim a navic v garantovanem case. (Naopak uz jsem za ty roky co se tim zabyvam zazil leccos). To je jen casty priklad z praxe, kdy se nestihaji terminy, dotycny to podesila ze sveho napr. soukromeho emailu, pac je na cestach.... a pak se divi, ze to neprichazi a zrovna ted kdyz se specha.
Dle RFC 5321 by MĚL BÝT čas mezi pokusy alespoň 30 minut, ale téměř nikdo to nedodržuje.
Konkrétně postfix se v tomto řídí několika volbami:
queue_run_delay - default je 300s, znamená to, jak často se snaží znovu projet deferred queue - frontu odmítnutých zpráv
minimal_backoff_time - default opět 300s - po jaké době nejdříve zkusit další doručení. Tato doba se z každým pokusem pro konkrétní mail zdvojnásobuje až do horní hranice, což je další volba
maximal_backoff_time - default 4000s - maximální čas čekání mezi dvěma pokusy
maximal_queue_lifetam - default 5d, maximální čas, po který se snaží doručit mail, poté je zahozen jako nedoručitelný
delay_warning_time - default 0 (vypnuto) - po jak dlouhé době se odesílateli oznámí, že mail čeká ve frontě a zatím nebyl doručen.
Ve výchozím nastavení to tedy znamená, že druhý pokus je někde mezi 300 a 599 vteřinami a pokud problém trvá, odesílatel se to dozví po 5ti dnech!
Třeba Postgrey má výchozí čas pro druhé doručení tuším 300 vteřin, což je kouzelné, protože jestli se nepletu, třeba MS Exchange má default retry po jedné minutě.
Větší servery mívají retry i několik hodin, protože jejich deferred queue bývá dlouhá jak pohádka...
a teď si vyberte... řídit se RFC, neřídet se RFC, čekat hodiny na maily... nedává to smysl. Navíc, jak jsem psal, servery spammerů bývají často nastaveny líp, jak ty nespamovací, aby měly vůbec šanci něco doručit. Graylisting toho opravdu víc rozbije, než zachrání.
2Tuxik: Tohle si nepojal uplne stastne IMO ... pokud confis firewall, tak si mozna mel vyjmenovat veci, ktery tam pobezej a proc, a udelat to na jenom miste vsechno ...
2Buki: Tak v tuhle chvili si ani neodesles/nedorucis mail. Protoze nemas povolenou tu zminovanou 25. A pak nejspis bude nasledovat nejakej ten klient, kterej by se prozmenu na 25 pripojovat vubec nemel, takze nejaka ta 587 nejspis. Mno a pak si ty maily taky budes chtit precist, takze pocitam imap 993 ... mno a nejakej ten webmail pripadne, takze 443.
Jinak tam chybi jeste jedna pomerne zasadni vec, a to povoleni loopbacku, bez toho taky spousta veci nebude fungovat vubec.
A na druhou stranu, ICMP si zaslouzi nejakej ten limit (specielne nektery typy).
Přijde mi logičtější povolovat věci až dle potřeby, jsou potom jasnější souvislosti. Věci na loopbacku budou povoleny taky jen potřebné, server nemá sám se sebou co kecat :) Co se týče ICMP, ano, stačilo by povolit request a reply. Jenomže když se do toho vnoříme pořádně, tak jen nastavení firewallu by bylo na samostatný seriál a nikdy nebudou spokojení všichni, protože každej má svoje postupy, svoje oblíbený pravidla a každej je má samozřejmě nejlepší :D Proto nechci zabíhat do nějakých extrémních podrobností. Ano, je co zlepšovat, v produkci by to bylo ještě úplně jinak, ale mělo by to být celkem dostatečný.
ICMP Echo rozhodně nestačí. Potřebuješ ještě přinejmenším ICMP destination unreachable, kvůli fragmentaci/MTU linky. Jinak se může stát, že si nepopovídáš s některými servery a klienty, kteří jsou za několika vnořenými tunely. (Třeba teredo nebo jiná forma IPv6 over IPv4). A zrovna na tohle se těžko ladí, protože to vypadá jako chyba druhé strany. Ostatním to přeci funguje.
Nevim, jestli nenosim drivi do lesa, ale za sebe bych po instalaci delal prvne aktualizace a az pote resil klice a vse ostatní.
Co se tyce casu, tak casovou zonu si lze nastavit uz v instalatoru, vcetne povoleni ntp synchronizace, coz pak instaluje a spousti chrony. Tezko rict, jestli ma ntpd nejake zasadni vyhody.
zdar,
urcite +1 za snahu na root-u udelat zas technictejsi serial :)
a FYI: na abclinuxu cca 2009 takovy serial vysel, diky panu jelinkovi a jeho 17x dilum -- http://www.abclinuxu.cz/clanky/site/stavime-postovni-server-1-postfix
hezky den, j3
Což vůbec ničemu nevadí, protože zatím není potřeba. Vše co bude potřeba bude povoleno, až na to přijde čas. Ten návod už existuje kompletní a ten server funguje, což by asi se zaříznutým loopbackem úplně nešlo. Jsem zvyklej zaříznout úplně všechno, včetně loopbacku a podle situace povolit jen to, co je opravdu potřeba. Někdo to dělá jinak a loopback povoluje komplet, někdo se vůbec nestará o OUTPUT, někdo chce používat firewalld, protože je v CentOSu výchozí, někdo volá po větší univerzálnosti a nevázání se na jednu distribuci... omlouvám se, ale opravdu není v mých silách udělat radost úplně všem...
narazil jsem náhodou na něco podobného, ale pro Ubuntu - https://mailinabox.email/ (nemám vyzkoušené)
K tomu FW bych doplnil jedno varování. Politika DROP je dobrá volba, ale nese s sebou jedno riziko - nikoli bezpečností, ale pro toho, kdo ten FW nastavuje. Velmi snadno se může stát, že si uřízne veškeré spojení na server, což ve chvíli, kdy je dál než ve vedlejší místnosti, je docela problém. Takže doporučuju po dobu ladění pravidel nějaká zadní vrátka (u VPS to může být třeba přímý přístup na konzoli přes web).