Jakub Jelínek oznámil vydání verze 15.1 (15.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 15. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL, Wikipedie). Staronovým vedoucím zůstává Andreas Tille.
Jason Citron končí jako CEO Discordu. Od pondělí 28. dubna nastupuje nový CEO Humam Sakhnini, bývalý CSO Activision Blizzard.
Článek na Libre Arts představuje baskytarový multiefekt Anagram od společnosti Darkglass Electronics. S Linuxem uvnitř (licence, GitHub).
Městský soud v Praze vyhlásil rozsudek, který vyhověl žalobě novináře Jana Cibulky, který s podporou spolku IuRe (Iuridicum Remedium) požadoval omluvu od státu za to, že česká legislativa nařizuje operátorům uchovávat metadata o elektronické komunikaci. To je přitom v rozporu s právem. Stát se musí novináři omluvit a zaplatit náklady řízení. Především je ale součástí přelomové rozhodnutí o nelegálnosti shromažďování dat a o
… více »Americké technologické firmy Apple a Meta Platforms porušily pravidla na ochranu unijního trhu, uvedla včera Evropská komise (EK). Firmám proto vyměřila pokutu – Applu 500 milionů eur (12,5 miliardy Kč) a Metě 200 milionů eur (pět miliard Kč). Komise to oznámila v tiskové zprávě. Jde o první pokuty, které souvisejí s unijním nařízením o digitálních trzích (DMA). „Evropská komise zjistila, že Apple porušil povinnost vyplývající z nařízení
… více »Americká společnost OpenAI, která stojí za chatovacím robotem ChatGPT, by měla zájem o webový prohlížeč Chrome, pokud by jeho současný majitel, společnost Google, byl donucen ho prodat. Při slyšení u antimonopolního soudu ve Washingtonu to řekl šéf produktové divize ChatGPT Nick Turley.
Po roce vývoje od vydání verze 1.26.0 byla vydána nová stabilní verze 1.28.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.28.
Byla vydána nová verze 10.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 211 vývojářů. Provedeno bylo více než 2 800 commitů. Přehled úprav a nových vlastností v seznamu změn.
42 svobodných a otevřených projektů získalo finanční podporu od NLnet Foundation (Wikipedie).
Proč si jako základ poštovního systému zvolit právě programy Postfix a Dovecot? Odpověď není až tak úplně jednoduchá, přesněji řečeno důvody jsou různé a většinou se jich uplatní hned několik najednou. Jsou samozřejmě případy, kdy bude vhodnější použít jiné programy, ale zmíněné dva bezproblémově vyhoví v široké škále situací, se kterými se setkáváme.
Vzhledem k té obsáhlosti zdůvodnění jsem se rozhodl zahájit seriál dvěma články, které budou věnovány obecnému popisu obou programů (tedy v tomto článku to bude Postfix, v příštím Dovecot) a představení důvodů, proč jsou tak vhodnými kandidáty pro nasazení na poštovních serverech.
Postfix je poštovní server (Mail Transfer Agent, MTA), který plní základní úkoly při přenosu zpráv elektronické pošty. Mezi takové úkoly patří přebírání od klientů a od jiných poštovních serverů, směrování, předávání jiným serverům a doručování do schránek (jeho hlavním protokolem je SMTP, resp. ESMTP). Nestará se o přístup k poště (přes protokoly POP3 a IMAP4, ani přes webové rozhraní apod.), o ochranu proti spamu a virům (kromě využití „vhodného nastavení“, o kterém bude řeč v dalších dílech seriálu) ani o filtraci, třídění zpráv, automatické odpovídání a další „pokročilé“ funkce.
Že Postfix postrádá mnoho z funkcí, bez kterých si moderní poštovní server nelze představit, není vůbec na závadu. Lze ho totiž velmi snadno doplnit jinými programy, které tyto úkoly zastanou, a přitom není Postfix zbytečně zesložiťován a nafukován v případech, kdy takové funkce potřeba nejsou.
Program Postfix začal vyvíjet Wietse Zweitze Venema v IBM Thomas J. Watson Research Center ve druhé polovině 90. let. 14. prosince 1998 zveřejnila firma IBM tiskovou zprávu, kterou ohlásila vydání produktu Secure Mailer, což nebylo nic jiného, než program nazvaný též Postfix. Již před tímto oficiálním aktem byla k dispozici betaverze programu, tehdy pracovně nazvaného VMailer.
Cílem od samého počátku bylo nahradit dosud dominantní program Sendmail
(který tehdy trpěl bezpečnostními chybami a byl obtížně konfigurovatelný) něčím
mnohem bezpečnějším, robustnějším a snadněji spravovatelným. Na rozdíl od
v zásadě monolitického Sendmailu byl VMailer/Postfix od počátku navržen jako
silně modulární. Postfix je poskytován pod licencí
Přestože měl Wietse Venema původně v plánu po dokončení programu tento předat jiným lidem k další údržbě (aby se mohl věnovat jiným projektům), dodnes zůstává hlavním vývojářem a nové verze Postfixu stále vznikají poměrně rychlým tempem. Například nyní je aktuální řada 2.6.x (verze 2.6.0 byla vydána 12. 5. 2009), předchozí řada 2.5.x byla odstartována vydáním verze 2.5.0 dne 24. 1. 2008, již se připravuje řada 2.7.x. Aktuálně jsou (kromě řady 2.6.x) udržovány také řady 2.3.x, 2.4.x a 2.5.x.
Před podrobnějším rozvedením jednotlivých důvodů (včetně nezbytného technického pozadí) bude nejlepší uvést všechny tyto důvody pohromadě:
Postfix je flexibilní. Lze ho v prakticky neomezené míře přizpůsobovat konkrétním potřebám. Může sloužit jako pouhý jednoduchý odesílací nástroj pro linuxový stroj, ale také jako server pro velkou firmu (s přenosem mnoha zpráv za sekundu) nebo pro hostingové řešení (tedy mnoho schránek na velkém počtu domén atd.). Data pro svou práci může získávat ze široké škály různých zdrojů. Se zprávami může nakládat mnoha způsoby.
Postfix je škálovatelný. Pro svůj běh si vystačí s omezeným prostředím, ale je-li třeba (a je-li správně nastaven), může stejně tak využít i možnosti poskytované mnohaprocesorovým strojem s velkou pamětí a rychlými síťovými rozhraními.
Postfix je funkčně bohatý. Přestože řadu úkolů poštovního serveru vůbec neřeší (třeba komplexní antispamovou filtraci), ve své funkční doméně toho nabízí opravdu hodně. Týká se to způsobu směrování, doručování a předávání zpráv, možností autentizace a autorizace, formálních kontrol zpráv a relací, komunikace s pomocnými programy atd.
Postfix je snadno spravovatelný a konfigurovatelný. Konfigurační soubor je složen z jednoduchých pravidel typu parametr=hodnota, není potřeba znát žádnou speciální syntaxi, všechno je dobře zdokumentováno. Pokud něco nefunguje nebo se chová anomálně, Postfix to dá srozumitelným způsobem vědět do logu.
Postfix je stabilní, robustní a bezpečný. Modulární koncepce znamená, že problémy jedné komponenty neohrožují funkci ostatních komponent. Havaruje-li některá komponenta, je restartována, ale s ohledem na zátěž systému. Bezpečnost je zajišťována hned několika způsoby – minimalitou práv, důslednou separací práv mezi moduly, možností zcela izolovat většinu modulů pomocí chroot, definicí různých omezení v konfiguraci a dalšími pomocnými metodami.
Postfix má nízké systémové nároky. Běží jen ty komponenty, které se skutečně používají. Nevyužívají se žádné paměťově náročné knihovny ani žravé algoritmy. Náročnost lze ještě dále snížit vhodnou konfigurací.
Postfix je složen z hlavního modulu nazvaného master
a z výkonných modulů, realizujících konkrétní úkoly. Modul master
(v závislosti na své konfiguraci) výkonné moduly spouští a kontroluje jejich funkci. V případě, že nějaký modul neočekávaně skončí, master
ho restartuje. Pokud jsou ale s nějakým modulem nadále problémy, čeká se po stanovenou dobu (výchozí hodnota je 1 minuta), aby nebyl systém zbytečně zatěžován neúspěšnými starty.
Lze určit, kolik instancí (procesů) kterého modulu smí maximálně běžet, jak
dlouho má služba čekat na příchozí spojení před svým ukončením, jak často má
master
probouzet určitý modul atd. Těmito parametry lze ovlivňovat spotřebu prostředků (a na druhou stranu i rychlost odezvy a průchodnost) v závislosti na konkrétních potřebách a možnostech. Tak lze například seškrtit spotřebu tam, kde není potřeba vysoký výkon, a naopak poskytnout dostatečné možnosti na silném stroji a při velkých nárocích na výkon.
Modul master
může spravovat i komponenty, které nejsou součástí programu Postfix. Typicky se může jednat třeba o situaci, kdy finální doručení do schránky provádí nějaký doručovací agent (třeba z programu Dovecot, bude popsán v příštím dílu seriálu). Dále může také stejná komponenta vystupovat ve více rolích, tedy master s ní nakládá různým způsobem (toto zase využíváme například při externí antispamové filtraci).
Součástí systému jsou samozřejmě také nástroje pro jeho ovládání. Přímo v balíku jsou k dispozici jednoduché konzolové utility, ale Postfix lze ovládat i jinými programy – ať už přímo, nebo nepřímo (přes zmíněné utility).
Cesta zpráv celým systémem může být poměrně komplikovaná. Bez dostatečného poznání, jaký úkol má na této cestě který modul, se však Postfix špatně konfiguruje. Ve velmi obecné rovině to ukazuje následující obrázek:
Zpráva se může do systému dostat několika cestami. Nejčastěji bude přijata
přes síťovou SMTP relaci (případně přes QMQP, ale to je hodně vzácná věc),
u lokálně odesílaných zpráv (od běžných poštovních klientů, ale třeba i od
systémových programů nebo od PHP skriptů) také přes rozhraní „sendmail“ (příkaz
se syntaxí odpovídající stejnojmennému programu, byť zde tuto funkcionalitu
zajišťuje Postfix). Při síťovém příjmu zprávu přijímá modul smtpd
(zajišťuje komunikaci na serverovém socketu).
Na vstupu zprávu zpracuje modul cleanup
, který se postará o opravu a doplnění hlaviček, případně provede expanzi cílových obálkových adres (může využít
služeb modulu trivial-rewrite
) a vloží zprávu do fronty příchozích zpráv (incoming
). Poté notifikuje správce fronty (qmgr
), že je ve frontě nová zpráva.
Správce si udržuje „aktivní frontu“, což je jakési okno do skutečných front
(příchozích a odložených zpráv) – tyto zprávy zkouší předávat dál. Pokud se
mu to podaří, zpráva se odebere z fronty. Nepodaří-li se to, zpráva se umístí
do fronty deferred
(odložené zprávy), pokud tam dosud nebyla, a po nějaké době se opět aktivuje pro další doručovací pokus.
Další osud zprávy může být velmi rozličný. Starají se o něj doručovací agenty,
konkrétně moduly smtp
, lmtp
, local
,
virtual
nebo pipe
. Modul smtp
je SMTP
klient, předává tedy zprávu nějakému dalšímu SMTP serveru – tím může být cílový
server, relay server nebo třeba nějaký filtrační mechanismus. Totéž platí i pro
modul lmtp
, jehož protokol LMTP se však používá poměrně zřídka.
Modul local
doručuje místním příjemcům (uživatelům počítače),
modul virtual
pak virtuálním příjemcům (typická funkce pro poštovní
hosting). A konečně pipe
předává zprávy spouštěnému externímu programu.
Speciálními případy doručovacích agentů jsou moduly discard
a error
. Ty totiž ve skutečnosti nikam dál nedoručují. Modul
discard
zprávu prostě zahodí, error
ji vrátí
s dočasnou chybou retry
nebo trvalou chybou error
.
Takové chování těchto speciálních agentů se využívá v situacích, kdy nelze
z nějakého důvodu zprávu někam normálně doručit.
Kromě uvedených modulů se nakládání se zprávami a dalších činností poštovního serveru Postfix účastní ještě další moduly. Následující seznam bude jen heslovitý, protože na detailní popis jednotlivých modulů nastane pravý čas později.
trivial-rewrite
– jednoduchá kontrola a vyhodnocení adres (s využitím tabulek transportů a relokací)bounce
– generování zpráv o (ne)doručení zprávy (včetně zpráv o dočasném nedoručení)flush
– udržuje informace o zprávách podle cílů (urychluje vyžádané doručení, např. pomocí ETRN
)proxymap
– služba pro společný přístup k mapovacím tabulkámscache
– sdílená cache odchozích spojeníshowq
– poskytování informací o frontě zprávspawn
– spouštění externích programů (obdoba inetd
)tlsmgr
– správa generátoru pseudonáhodných čísel a TLS klíčůverify
– kontrola zpráv ještě před jejich přijetímanvil
– udržování statistik o počtu a četnosti připojení (pro zabránění zahlcení serveru)Přítomnost jednotlivých modulů v běžícím serveru a jejich interakce s jinými moduly závisí na konfiguraci serveru. Například modul tlsmgr
se spouští jen v případě, že se používá TLS komunikace. Většina modulů může běžet s minimálními právy (a v prostředí chroot), takže lze omezit potenciální bezpečnostní rizika, která by z nich pramenila.
Postfix může využívat celou škálu informačních zdrojů (tabulek). Co si pod tímto obecným pojmem představit? Z pohledu významu třeba seznamy doručovaných domén, mapování adres na schránky, aliasy, blacklisty a whitelisty, autentizační informace apod. Jednotlivým modulům stačí mít k dispozici potřebné informace a nezáleží na tom, odkud a jak se získají. Z pohledu člověka, který rozhoduje o způsobu nasazení a správy serveru, to však samozřejmě důležité je.
Proto Postfix podporuje řadu různých metod, jak potřebné informace získávat. Lze tak na jednu stranu velmi rychle zprovoznit jednoduchý server, ale současně také mít možnost pracovat s externími databázemi různého typu. Toto jsou obecně podporované metody:
hash
– hešové tabulky (typicky předem vytvářené z textových souborů)btree
– vyvážené stromy (dtto)cdb
, dbm
, sdbm
– jednoduché databáze uvedených typůregexp
, pcre
– regulární výrazy (POSIXové, resp. perlové)tcp
– dotazování pomocí jednoduchého protokolu nad TCPcidr
– tabulky ve formátu CIDR (Classless Inter-Domain Routing)ldap
– dotazování protokolem LDAPenviron
– využití proměnných prostředínis
, nisplus
– databáze NIS, resp. NIS+static
– pevně definované hodnotynetinfo
– databáze Netinfo (známá např. ze systémů Mac OS X)mysql
– databáze MySQLpqsql
– databáze PostgreSQLunix
– standardní unixová databáze uživatelůproxy
– využití modulu proxymap
(vždy se kombinuje s jinou metodou přístupu, ke které se přes proxy přistupuje)Ne vždy jsou všechny metody k dispozici (vyžadují zakompilování do serveru a často také podporu v systému, např. u databází), navíc ne vždy lze každou z nich použít, též samozřejmě různé metody jsou vhodné v různých případech. Například metodu unix
nelze použít k ničemu jinému, než je ověřování uživatelů. Proměnné prostředí nebo statické hodnoty se zase hodí jen pro skutečně primitivní informace.
V každém případě tato široká škála poskytuje dostatek možností, jak si server maximálně přizpůsobit „k obrazu svému“, tedy pro určité použití. Komu by přece něco scházelo, existují implementace dalších metod, případně si lze vytvořit něco vlastního (ať už přímo přes příslušné API nebo třeba pomocí dotazování přes TCP). Jinak pro ověřování uživatelů Postfix podporuje standardizovanou metodu SASL, což lze s výhodou využít například při jeho spolupráci s programem Dovecot, ale i v jiných případech.
Zatím ano. Toto byl jen takový velice letmý průlet tím, co Postfix všechno umí. Výčty modulů a metod jsou tu jen pro ilustraci šíře záběru tohoto programu. Mnohem zajímavější to ale bude, až se ukáže v praxi. To bude ale až přespříště, protože příště se stručně představí jeho společník: program Dovecot. Bez přístupu k poště by poštovní server rozhodně nebyl plnohodnotný. A Dovecot toho má skutečně dost co nabídnout, ve vzájemném porovnání je Postfixu zcela rovnocenným soupeřem.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
nebo se chová abnomálně
Dík za článek. Nedávno jsem taky hledal, našel jsem http://flurdy.com/docs/postfix/.
To nevim jak moc bude pouzitelne -- sice ta maji vyvesene docela nove datum posledni aktualizace, ale amavis je uz roky mrtvy projekt.
Fajn, dík za zhonocení. I takováhle konfrontace myšlenek mi přijde užitečná. Přesto ... RC ke stažení jsou, poslední z června 2009, fakt je mrtvý?
fakt je mrtvý?Není, Jakub si zřejmě popletl původní amavis a nový amavisd-new. A z toho června je nejen RC, ale (z 25.6.) i ostrá verze 2.6.4.
amavis je uz roky mrtvy projektAmavis ano, amavisd-new ne. Navíc amavisd-new bohužel nemá srovnatelnou náhradu (nejlépe takovou, která by nebyla v Perlu).
Postfix se mi nikdy příliš nepozdával. Používám Courier-MTA, protože je mnohem flexibilnější. Záležitosti jako podpora pro IMAP nebo POP3 jsou pro něj samozřejmostí. Není třeba hledat žádný další program. A co je nejdůležitější: ESMTP, IMAP i POP3 mají společnou správu přihlašovacích údajů a uživatelských účtů. Tohle Postfix jednoduše neumí.
Záležitosti jako podpora pro IMAP nebo POP3 jsou pro něj samozřejmostí. Není třeba hledat žádný další program.Ano, pro někoho, kdo chce mít vše v jednom. Někdo chce mít ale řešení složené z komponent, které mu lépe vyhovují - tak si vybere něco jiného.
A co je nejdůležitější: ESMTP, IMAP i POP3 mají společnou správu přihlašovacích údajů a uživatelských účtů. Tohle Postfix jednoduše neumí.Neumí, protože neumí IMAP a POP3. Když se ale dá dohromady například Postfix a Dovecot, je společná správa samozřejmostí (protože Postfix využívá SASL z Dovecotu).