28.4.12
Stavíme mailový server: Postfix - Root.cz
ROOT.CZ
Webové servery Apache a protokol SPDY od Google Hry Steam pro Linux bude za pár měsíců Hry Starší linuxová hra jako šetřič času Nástroje a utility Avahi: bez konfigurace na síť Root.cz » Softw are » Stavím e m ailový s e rve r: Pos tfix
Stavíme mailový server: Postfix 27. 10. 2003 0:00 Petr Kulhavý
V prvním dílu jsme si popsali, jak nainstalovat a nakonfigurovat základní systém a software OpenBSD. V tomto dílu si řekneme, jak nakonfigurovat a spustit mailový program Postfix.
Konfigurace Postfixu Při instalaci balíku postfix se automaticky vytvoří skupina _postdrop a uživatel a skupina _postfix. Ve starších verzích Postfixu jméno uživatele a skupiny neobsahovalo na začátku podtržítko, což je poměrně nová a užitečná konvence. Podtržítko značí, že nejde o normálního uživatele nebo skupinu, ale o uživatele systémového určeného např. pro běh nějakého daemona. Upravíme /etc/group, aby obsahoval tyto skupiny (čísla skupin se mohou lišit, záleží na vašem konkrétním systému):
_postfix:*:507:_postfix _postdrop:*:508: _amavisd:*:510: _spam:*:511: _nospam:*:512: _clamav:*:513: Příkazem vipw upravíme /etc/passwd, aby obsahoval uvedené skupiny (opět čísla UID mohou být pro váš počítač jiná):
_postfix:*:507:507:Postfix Daemon:/nonexistent:/sbin/nologin _amavisd:*:510:510:Amavis Mail Scanner:/var/amavisd:/sbin/nologin _spam:*:511:511:Spam Bayes Learner:/noexistent:/sbin/nologin _notspam:*:512:512:Not Spam Bayes Learner:/noexistent:/sbin/nologin _clamav:*:1000:513:Clam AntiVirus:/noexistent:/sbin/nologin
www.root.cz/clanky/stavime-mailovy-server-postfix/
1/6
28.4.12
Stavíme mailový server: Postfix - Root.cz
Nyní nahradíme původní Sendmail Postfixem: spustíme příkaz /usr/local/sbin/pos tfixenable. Dále musíme v souboru/etc/rc .conf nastavit parametry Postfixu:
sendmail_flags="bd q15m" To znamená, že se Postfix má pouštět jako daemon na pozadí a vyprazdňovat frontu mailů každých 15 minut. Interval můžeme dle vlastní potřeby upravit. V /etc/rc.conf ještě musíme přidat do parametrů syslogu, tedy na řádek „syslogd_flags=“, následující parametry, které říkají, že syslog má naslouchat také na uvedeném socketu:
"a /var/spool/postfix/dev/log" Nakonec příkazem crontab e oeditujeme rootovský crontab a zakomentujeme řádek označený komentářem:
"# sendmail clientmqueue runner" Tím jsme se zbavili Sendmailu. Dále v souboru /etc/postfix/mas ter.cfzměníme v tabulce postfixových programů atribut chroot u všech základních programů z hodnoty „“ na „y“. Na konec souboru přidáme sekci popisující amavis interface. Z důvodu potíží s formátováním soubor v článku necituji, ale uvádím pouze jako odkaz [v iz:http://www.mesec.cz/data/master.cf ] . Nakonec přijde nejnáročnější část – konfigurace Postfixu. Postfix se konfiguruje pomocí proměnných v souboru /etc/postfix/ma in.cf. Po nainstalování balíku s Postfixem se automaticky vytvoří výchozí /etc/postfix/ma in.cf, který ovšem obsahuje pouze některé proměnné ze všech možných, které lze v Postfixu nastavit. Soubor main.cf je více či méně složen ze souborů začínajících předponou sample z adresáře/et c/postfix/. V každém souboru jsou proměnné týkající se dané funkce. Například v souboru sampledebug.cf najdeme proměnné ovlivňující debugování, v samplelocal.cf najdeme proměnné týkající se lokálního doručování mailů, v samplealiases.cf najdeme proměnné nastavující přístup k databázi aliasů atd. A nyní, jak se main.cf vytváří. Soubory s předponou sampleNEEDITUJTE! Pokud chcete nějakou funkci do konfiguráku přidat, prostě k main.cf přidejte příslušný sample soubor a teprve v main.cf dopište k proměnným hodnoty. V souboru main.cf.default (který také needitujte) můžete najít defaultní hodnoty proměnných. Všechny proměnné jsou v souborech dobře popsány, takže pouze k těm důležitým uvedu, na jaké hodnoty se mají nastavit, případně přidám komentář. Většina hodnot je dobře nastavena defaultně. Případné další informace se lze dočíst v dokumentaci na domácí stránce Postfixu [v iz:http://www.postf ix.org/basic.html] . Následující proměnné do konfiguráku opište tak, jak je uvádím. Proměnné popisují adresáře, soubory, kde má Postfix uložena data a programy, a uživatele, pod kterými Postfix běží.
mail_owner = _postfix setgid_group = _postdrop default_privs = nobody queue_directory = /var/spool/postfix command_directory = /usr/local/sbin daemon_directory = /usr/local/libexec/postfix sendmail_path = /usr/local/sbin/sendmail newaliases_path = /usr/bin/newaliases mailq_path = /usr/local/sbin/mailq manpage_directory = /usr/local/man sample_directory = /etc/postfix readme_directory = /usr/local/share/doc/postfix/readme alias_database = hash:$config_directory/aliases transport_maps = hash:$config_directory/transport
www.root.cz/clanky/stavime-mailovy-server-postfix/
2/6
28.4.12
Stavíme mailový server: Postfix - Root.cz
mydestination = $config_directory/local #content_filter = smtpamavis:[127.0.0.1]:10024 Na posledním řádku je nataven filtr pro Amavis, který je dočasne zakomentován. Komentář zde nechte, odstraníme jej až při instalaci Amavisu. Následující proměnné jsem okomentoval a uvedl jsem hodnoty, které jsem použil. Proměnné nastavte podle vlastní potřeby, hodně záleží na konkrétní síti a serveru, jaký vytváříte.
# plné DNS jméno serveru myhostname = server.mojedomena.cz # DNS jméno domény mydomain = mojedomena.cz # na co se přepisuje adresa u odesílaných mailů #
[email protected] # >
[email protected] myorigin = $mydomain # nastavení adres "trusted" klientů, pro které # server relayuje kamkoliv, tedy klientů, kteří si # jako outgoing SMTP server nastaví tento server # # nastavíme buď pomocí mynetworks_style, nebo # mynetworks # # mynetworks_style: host (jen tento server), # subnet (stejná IP podsíť, na které je server), # class (stejná IP třída (A/B/C) jako server) # # mynetworks: soubor s výčtem adres mynetworks = $config_directory/mynetworks # mynetworks_style= # seznam domén, do kterých server relayuje pro # "netrusted" klienty, tedy domény, kam všude # server dovolí doručovat v praxi znamená domény, # které jsou pro náš server cílovou stanicí # (mydestination), plus případné další servery, # kam posíláme (jsme tedy jen přestupní stanicí) relay_domains = $mydestination
www.root.cz/clanky/stavime-mailovy-server-postfix/
3/6
28.4.12
Stavíme mailový server: Postfix - Root.cz
# může být též definováno přímým výčtem adres, pak # každá adresa, která není ve výčtu uvedena, je # odmítnuta # relay_recipient_maps = # seznam pravidel, kam doručovat maily # tabulka obsahuje dvojice adresa (respektive # doména) a protokol:next_hop, například: # kancelare.mojedomena.cz smtp:mx3.mojedomena.cz # # pokud máte druhý server (např. mximap), na který # se doručuje veškerá pošta a uživatelé z něj pak # maily čtou IMAPem, napište do transportního # souboru: # mojedomena.cz smtp:mximap.mojedomena.cz # .mojedomena.cz smtp:mximap.mojedomena.cz # # více informací se dozvíte v man transport(5) transport_maps = hash:/etc/postfix/transport # zde si můžete nastavit defaultní adresu, kam # doručovat maily v případě, že na adresu nebude # platit žádné pravidlo z transport_maps # relayhost = # maškarádování domén, zde si můžete nastavit # domény, které mají skrývat svoje subdomény, # aby v odchozích mailech nebyly vidět # # například adresa: #
[email protected] # se přepíše na
[email protected] # # seznam se prochází zleva doprava a pro přepis se # použije první pravidlo, které pasuje masquerade_domains = $mydomain # z masquerade_domains mohou být explicitní # výjimky, uvedené adresy se nebudou maškarádovat # například zde můžete uvést "root" nebo # "mailerdaemon" masquerade_exceptions =
www.root.cz/clanky/stavime-mailovy-server-postfix/
4/6
28.4.12
Stavíme mailový server: Postfix - Root.cz
# pokud někdo změní adresu nebo se omylem udělá # hokej v konfigurácích, tak neodmítat maily # natvrdo (550), ale odmítnout stylem "zkus to # za chvíli znova" unknown_local_recipient_reject_code = 450 Do souboru /etc/postfix/a liases uvedeme mailové aliasy, které potřebujeme. Formát souboru je popsán v man aliases(5) [v iz:http://www.openbsd.org/cgibin/man.cgi?query =aliases&sektion=5&apropos=0&manpath=OpenBSD+Current&arch=] . Když máme soubor upravený, vygenerujeme z textového souboru hash databázi příkazem postalias:
# vi /etc/postfix/aliases # postalias /etc/postfix/aliases Z bezpečnostních důvodů je vhodné mít ještě druhý mailový server, kam první server posílá všechnu doručenou poštu a odkud si ji uživatelé stahují například přes IMAP. Výhoda tohoto řešení spočívá jednak ve zvýšené bezpečnosti, neboť IMAP server je za firewallem a server, který poštu přijímá, nemá krom SMTP portu 25 otevřené žádné jiné služby, jednak také v tom, že na serveru, který poštu jen přijímá, nejsou fyzicky žádní uživatelé a ani zde neběží služba ident, takže spamovací servery nemohou scannováním zjistit seznam uživatelů na serveru. Pokud tedy máme IMAP server, kam se všechny maily forwardují, uvedeme tento server do konfiguračního souboru /etc/postfix/tran sport. Když žádný další server nemáme, soubor vytvoříme a necháme ho prázdný. Formát je popsán přímo v tomto souboru, případně v manuálové stránce transport(5). Pokud máme například IMAP server „mail2“ a doménu „mojedomena.cz“, do souboru transport napíšeme:
mojedomena.cz smtp:mail2.mojedomena.cz .mojedomena.cz smtp:mail2.mojedomena.cz Po modifikaci souboru vygenerujeme databázový soubor /etc/postfix/tran sport.db příkazem:
# postmap /etc/postfix/transport Vytvoříme soubor /etc/postfix/lo cal a napíšeme do něj seznam domén a adres (na každý řádek jednu), které server bude považovat za cílové adresy. Podobně vytvoříme soubor /etc/postfix/my network s, který bude obsahovat adresy „trusted“ klientů, pro které budeme maily posílat kamkoliv. Příklad souboru:
217.13.91.0/23 10.0.0.0/8 127.0.0.0/8 Náročnou konfiguraci máme konečně za sebou a můžeme Postfix spustit. Buďto rebootujeme stroj, nebo napíšeme příkaz:
/usr/local/sbin/postfix start Telnetem ozkoušíme, jestli Postfix poslouchá na portech 25 a 10025:
# telnet localhost 25
www.root.cz/clanky/stavime-mailovy-server-postfix/
5/6
28.4.12
Stavíme mailový server: Postfix - Root.cz
Server by měl odpovědět: Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.mojedomena.cz ESMTP Telnet ukončíme a stejným způsobem ozkoušíme i port 10025. Když se nám v tomto dílu podařilo nakonfigurovat a spustit Postfix, tak si v třetím dílu ukážeme, jak nainstalovat Amavis. Pe tr Kulhavý
Tento text je již více než dva měsíce starý. Chceteli na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum. Root.cz (w w w .root.cz), informace nejen ze světa Linuxu. ISSN 12128309 Copyright © 1998 – 2012 Internet Info, s.r.o. Všechna práva vyhrazena. Pow ered by Linux.
www.root.cz/clanky/stavime-mailovy-server-postfix/
6/6