Hlavní menu:

Kontakt

Telefony:

Objednávky: +420 267 314 267
Technická podpora:
+420 267 314 267

Reklamace, servis:
+420 272 732 827
Zakázkový vývoj: +420 272 732 827

Fax:

+420 267 314 269

Objednávky: obchod@papouch.com
Dotazy: papouch@papouch.com

V našem e-shopu můžete platit také kartami MasterCard®, Maestro®, VISA® a VISA Electron®.

Jak na to? > Linux > Mailer >

Mailer


Chcete si postavit vlastní poštovní server? Ve svetě OpenSource si můžete vybrat hned z několika projektů. Zatím

tucnak_button.gif
nejznámější jsou patrně tyto:

 

Postfix: http://www.postfix.org
Sendmail: http://www.sendmail.org/
Qmail: http://www.qmail.org/

Přiznávám, že já osobně jsem shladal zalíbení právě v postfixu, takže následující řádky budou o tomto MTA. Neberte to jako ucelený návod, spíše se jedná o jakési shrnutí z praxe.

1. MTA postfix
Program postfix je snahou vytvořit vhodnou a bezpečnou alternativu k programu sendmail. Na rozdíl od sendmailu, který je tvořen jedním programem, který obsluhuje všechno, je postfix tvořen souborem speciálních programů, z nichž každý se stará o přesně danou část operací, nutných při odesílání či příjmu pošty. Na rozdíl od sendmailu se takto zvyšuje průchodnost celého systému, a zvyšuje se bezpečnost. (Jednotlivé programy běží jen s nutnými právy pro svou práci). V současné době ovšem nenabízí takový komfort uživatelských služeb, jako sendmail (např. DSN, Delivery Status Notification)

MTA Postfix (Mailer Transfer Agent) má licenci GPL (General Public Licence). Jeho domovská stánka se nachází na www.postfix.org. Pokud budete potřebovat již hotové binární balíčky, zkuste se podívat třeba na http://rpmfind.net, určitě si vyberete.

1.1 RFC Odkazy
Postfix vyhovuje následujícím RFC:
(www.nexor.com search RFC index)

2821
"Simple Mail Transfer Protocol."
J. Klensin, Editor
(Format: TXT=192504 bytes)
(Obsoletes RFC 821, RFC 974, RFC 1869)
(Status: PROPOSED STANDARD)

Další standardy:
RFC 821 (SMTP protocol)
RFC 1123 (Host requirements)
RFC 1651 (SMTP service extensions)
RFC 1652 (8bit-MIME transport)
RFC 1854 (SMTP Pipelining)
RFC 1870 (Message Size Declaration)
RFC 1985 (ETRN command)
RFC 2554 (AUTH command)
RFC 2821 (SMTP protocol)

1.2 Podpora POP3 a IMAP
Samotný postfix je MTA system (Mail Transfer Agent - Poštovní server) a tedy neřeší problém "vyzvedávání pošty" pomocí protokolů POP3 nebo IMAP. Zde je seznam POP/IMAP doplňků, které je možné provozovat s MTA postfix:

 

Pro distribuci RedHat 7.1 Cz budete tedy pro "vyzvedávání pošty" potřebovat ještě balíčky xinetd a imap. Já jsem použil tyto balíčky:
rpm -qa | grep xinetd
xinetd-2.3.3-1
 
rpm -qa | grep imap
imap-2000-9

Kažopádně nezapomeňte na bezpečnostní updates podle www.linuxsecurity.com/advisories!

1.3 Vyzvedávání pošty
Jako poštovního klienta můžete použít buď "konzolové" mutt nebo pine (ty jsou asi nejznámější). Pokud chcete nějakého "robustnějšího klienta" pod X-Windows, můžete použít třeba mozillu (www.mozilla.org).
rpm -qa | grep mozilla
mozilla-0.9.4-0
mozilla-psm-0.9.4-0
mozilla-mail-0.9.4-0

Vlastní xinetd budte muset povolit (zařaďte jej do runlevels). U RH 7.1 cz to můžete obstarat pomocí utility setup. Ještě "povolte" imap pro xinetd (pokud dáváte přednost imaps, povolte i tento) a to v souborech /etc/xinetd.d/imap a /etc/xinetd.d/imaps. Mělo by to vypadat asi takto:

/etc/xinetd.d/imap
# default: off
# description: The IMAP service allows remote users to access their mail using \
#                  an IMAP client such as Mutt, Pine, fetchmail, or Netscape \
#                  Communicator.
service imap
{
     disable = no
     socket_type = stream
     wait = no
     user = root
     server = /usr/sbin/imapd
     log_on_success += DURATION USERID
     log_on_failure += USERID
}

/etc/xinetd.d/imap.d
# default: off
# description: The IMAPS service allows remote users to access their mail \
# using an IMAP client with SSL support such as Netscape \
# Communicator or fetchmail.
service imaps
{
     disable = no
     socket_type = stream
     wait = no
     user = root
     server = /usr/sbin/imapd
     log_on_success + = DURATION USERID
     log_on_failure + = USERID
}

V obou případech nastavte parametr disable = no

2. Konfigurační soubory postfixu
Soubor /etc/postfix/main.cf asi nedává mnoha lidem spát. Je to dáno tím, že nastavitelných parametrů je zde opravdu hodně. Navíc se budete muset rozhodnout jakou "modelovou" topologii využijete a podle ní si nastavíte svůj postfix.

Konfigurační soubory se nacházejí standardně v adresáři /etc/postfix, hlavní konfigurační soubor se jmenuje main.cf. Soubor master.cf určuje chování jednotlivých programů postfixu.

Spuštění:     /etc/init.d/postfix start
Ukončení:     /etc/init.d/postfix stop
Znovunačtení konfigurace:     /etc/init.d/postfix reload

2.1 Konfigurační soubor /etc/postfix/main.cf
Jak jsem již psal výše, je těch parametrů opravdu mnoho. Pojďme se podívat alespoň na některé z nich:

queue_directory
určuje adresář, ve kterém postfix ukládá zprávy. Zároveň je to root adresář, pokud běží postfix v chrootovaném prostředí.

program_directory
adresář, ve kterém jsou umístěny podpůrné programy a démony

command_directory
adresář všech poštovních příkazů (např. Postmap)

daemon_directory
určuje adresář, ve kterém jsou veškeré démony postfixu (jedná se o programy, které jsou nastavované prostřednictvím master.cf

mail_owner
určuje vlastníka poštovní fronty, a zároveň vlastníka většiny procesů postfixu

default_privs
určuje práva, která jsou předávána lokálnímu pošťákovi při zasílání přes externí program

myhostname
úplné internetové jméno daného poštovního systému

mydomain
doména, do které patří poštovní systém

myorigin
doména pro lokálně doručované uživatele. Připojí se ke jménu lokálního uživatele.

inet_interfaces
určuje, na kterých IP adresách (rozhraních) bude postfix přijímat mailové zprávy

mydestination
které domény považuje postfix jako své lokální (je pro tyto domény poštovním serverem, a ne relay)

relayhost
určuje poštovní server, na který se pošle mail, pokud nevyhověl některému pravidlu v tabulce transport

default_transport
specifikuje defaultní transportní mechanismus při zasílání zpráv

allow_percent_hack
povoluje převod user%host na user@host

append_at_myorigin
zda-li se má připojovat $myorigin k jménu lokálního uživatele (převod user na user@myorigin)

append_dot_mydomain
určuje, zda se připojuje vlastní doména (převod user@host na user@mydomain)

empty_address_recipient
kdo obdrží zprávy, které nemají určeného adresáta (typicky systémově generované zprávy)

masquerade_domains
doména, která je nahrazena ve zprávě. Typické použití je při rozdílných doménách uvnitř intranetu a jiné doméně v internetu. Cílem je, aby v odchozích zprávách používaly jednotnou doménu v envelope a mail_from:

swap_bangpath
povoluje převod site!user na user@site

transport_maps
určuje umístění a typ tabulky transportních map, sloužících pro systémem definované směrování pošty

alias_maps
umístění a typ tabulky aliasů jmen

recipient_delimiter
který znak slouží jako oddělovač pro příjemce pošty (typicky uživatel+MT, nejprve se zkouší "uživatel+MT", potom ".forward+MT" a nakonec "uživatel" a ".forward"

home_mailbox
určuje umístění mailboxu u lokálních uživatelů

mailbox_command
program, který se použije pro doručení zpráv lokálním uživatelům. Program je spuštěn s nastavenými proměnnými dle uživatele (SHELL, HOME, LOGNAME) a s právy daného uživatele.

luser_relay
kdo dostane zprávy, které mají uvedené neexistující jméno uživatele. (týká se to pouze zpráv, pro které je tento mail systém poštovním serverem)

relay_domains
seznam domén, pro které funguje tento poštovní systém jako relay

mynetworks
seznam sítí, které jsou lokální pro tento systém. Přednastavenou hodnotou (default) jsou všechny sítě, do kterých je systém přímo zapojen

smtpd_banner
určuje uvodní hlášení systému při navázání spojení

smtpd_client_restrictions
omezující pravidla pro klienta, který se připojuje na poštovní server (jedná se o pravidla omezující na základě DNS)

smtpd_helo_required
zda je požadováno při navázání spojení helo/ehlo

smtpd_helo_restrictions
omezující pravidla, použitá při helo/ehlo protokolu

smtpd_sender_restrictions
omezující pravidla, použitá pro kontrolu odesílatele (neexistující doména, nesmyslná adresa ...)

smtpd_recipient_restrictions
omezující pravidla, použitá při kontrole RCPT TO.

local_destination_concurrency_limit
maximální počet simultánních spojení pro doručování lokálním uživatelům

default_destination_concurrency_limit
maximální počet simultánních spojení při spojení do stejné domény

debug_peer_level
debugovací úroveň pro debug_peer_list

debug_peer_list
které domény nebo sítě se budou logovat s debug_peer_level

debugger_command
určuje program, který se spouští při spuštění postfixu s parametrem -D

message_size_limit
Omezení pro velikost jednotlivých zpráv a to včetně obálky a hlavičky. Udává se v bajtech. Parametr message_size_limit = 10240000 tedy omezuje maximální velikost každé zprávy na cca. 9.76 MB (nezapomeňte, že 1kB = 1024 B a 1MB = 1024 kB! Přednastavená hodnota je message_size_limit = 10240000, což je právě oněch 9.76 MB

mailbox_size_limit
Od snapshot postfix !COMPILER-ERROR-TAG-NOT-FOUND-snapshot-20010128! postfix obsahuje i tento parametr.
Local delivery agent postfixu (např. Procmail) nyní "bere ohled" na tento parametr a omezuje velikost každého mailboxu na jeho hodnotu
(default: mailbox_size_limit = 51200000).
Přednastavená hodnota je 50 MB, zadává se opět v bajtech, takže výpočet je opět stejný jako pro message_size_limit. Pokud chcete toto omezení vypnout, zadejte hodnotu 0 (vřele nedoporučuji, mailbox dokáže pěkně nabobtnat:-) Pokud by tedy po zapsání zprávy do mailboxu došlo k překročení takto udané hranice, local delivery agent zápis do mailboxu neprovede a oznámí asi toto:
Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; can't create user output file. Command output:
     procmail: Error while writing to "/var/spool/mail/test"

Za tento parametr děkuji Jaroslavu Hykelovi a Pavlu Janíkovi. Na www.postfix.org totiž ke dni 7.10.2001 ještě stále není v dokumentaci.

3. Ukázkové příklady konfigurace programu Postfix
Samotný Postfix můžeme provozovat v několika konfiguracích. Nejpoužívanější "modely" jsou zřejmě Stand-alone machine, Workstation, Server, a Nullclient.

Nejprve se podívejme na jednu modelovou topologii, kterou máme na obrázku.


vzorovy-uzel.gif
vzorová modelová topologie

V podstatě se jedná o standardní modelovou topologii s jednou demilitarizovanou zónou a jednou vnitřní sítí. V demilitarizované zóně se nachází poštovní server (mailer) a server spravující www stránky (WWW server). Ve vnitřní síti se pak nacházejí vlastní "vnitřní" servery a uživatelské stanice. Vlastní uzel je pak od Internetu oddělen linuxovým routerem na němž je v provozu paketový filtr a tzv. relay MTA (oddělovací poštovní server - poštovní brána, chcete-li).

3.1 Stand-alone machine
Jedná se o samostatný stroj připojený k Internetu. Nenachází se zde žádný server ani firewall.
V našem vzorovém uzlu by se tato stanice nacházela ve vnitřní síti (vnitřní LAN).

3.2 Pracovní stanice a servery
V obou dvou případech systém odesílá poštu ve tvaru user@domain a přijímá ji ve tvaru user@hostname. Server navíc umí přijmout poštu ve tvaru user@domain. Pracovní stanice se bude nacházet ve vnitřní síti, server naopak v demilitarizované zóně.

Postfix má řadu přednastavených parametrů (defaults), které obvykle není třeba příliš měnit. Jednou z přednastavených voleb je, že Postfix bude předávat poštu pouze klientům ve své doméně (a doménách podřízených) a dále klientům s adresami odpovídajícími jeho A, B nebo C síti (class A, B or C networks). Konfigurační soubor master.cf potřebuje doplnit většinou jen v případech, kdy síťové služby vašeho stroje (network) jsou příliš pomalé, případně příliš rychlé (oproti svému okolí).

Pracovní stanice:

/etc/postfix/main.cf:
myorigin = $mydomain

Server:

/etc/postfix/main.cf:
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, $mydomain

Řekněme, že mail spool directory je sdílen pomocí NFS a uživatelé přistupují ke svému mailboxu pomocí POP protokolu. Můžete však zařídit, aby každý uživatel obdržel poštu přímo do svého mailboxu na pracovní stanici. Ve druhém případě potřebuje každý uživatel na serveru tzv. alias, který přepošle patřičnou poštu do uživatelova mailboxu na pracovní stanici:

Server:

/etc/aliases:
joe: joe@joes.workstation
jane: jane@janes.workstation

Na některých systémech se databáze alias nebude nacházet v souboru /etc/aliases. V takovém případě zadejte příkaz postconf alias_maps a systém sdělí její umístění.

3.3 Null client
Jedná se o stroj, jehož jediným určením je odesílání pošty. Nepřebírá žádnou poštu ze sítě a nepředává žádnou poštu uživatelům. Null client obvykle využívá POP nebo NFS pro přístup k mailboxu. Null client se může nacházet kdekoliv v uzlu.

V následujícím příkladu je pošta odesílána ve tvaru user@domain a veškerá pošta je předávána poštovnímu serveru, který je zodpovědný za další osud pošty.

/etc/postfix/main.cf:
myorigin = $mydomain
relayhost = $mydomain

/etc/postfix/master.cf:
Zakomentujte řádky pro SMTP server a local delivery agent
(Comment out the SMTP server entry)
(Comment out the local delivery agent entry)

Vzhledem k tomu, že odesílaná pošta je ve tvaru user@domain, není třeba provádět žádné úpravy na cílovém serveru (není třeba vytvářet uživatele user@nullclient).

3.4 Provozování Postfixu uvnitř Intranetu
Nejjednodušším řešením pro správu pošty v Intranetu je nastavit Postfix tak, aby poštu pro vnější svět (např. Internet) odeslal na Intranetovou poštovní bránu (Intranet mail gateway) a přenechat další osud pošty této bráně. Vnitřní poštu pak spravuje samostatný poštovní server, který si předává/přebírá poštu z vnějšího světa právě od této brány. Náš server umístíme do demilitarizované zóny.

Poznámka:
Poštovní server nemusí nutně být v demilitarizované zóně, může být i ve vnitřní síti. Pokud však chcete ke své poště přistupovat nejen z vnitřního uzlu, ale i z Internetu, pak jej raději umístěte do demilitarizované zóny.

Nastavení parametrů pak vypadá takto:

* Odesílání pošty ve tvaru user@domain. Tento tvar není povinný, nicméně je doporučený. (Pokud uživatel např. změní svou IP adresu, není třeba měnit nastavení pošty apod.)

/etc/postfix/main.cf:
myorigin = $mydomain

* Přeposlání veškeré "vnější" pošty na Intranetovou poštovní bránu (Intranet mail gateway). "Vnitřní" poštu této bráně přeposílat nebudeme.

/etc/postfix/main.cf:
relayhost = $mydomain

Předpokladem je, že jsou řádně nastaveny MX záznamy pro lokální doménu.

Pokud váš Intranet nepoužívá interní MX záznamy, zadejte přímo název Intranetové poštovní brány:

/etc/postfix/main.cf:
relayhost = host.my.domain

V případě, že interně nepoužíváte DNS, uveďte do konfiguračního souboru následující parametr:

/etc/postfix/main.cf:
disable_dns_lookups = yes

* Dále můžete Postfixu sdělit, aby interní poštu nepředával bráně a rozděloval ji koncovým uživatelům (stanicím) přímo.

Vytvořte následující směrovací tabulku, která bude vypadat obdobně:

/etc/postfix/transport:

my.domain smtp:  
.my.domain smtp:  
thishost.my.domain local: !!!povinný záznam!!!
localhost.my.domain local: !!!povinný záznam!!!

/etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport

Pokud váš systém používá dbm soubory namísto db, musíte nastavit parametr dbm (namísto hash). Pokud se chcete podívat, které map typy váš Postfix podporuje, zadejte příkaz postconf -m.

Po ukončení editace souboru /etc/postfix/transport zadejte příkaz postmap.

Příkaz postfix reload načte nově zadané parametry a předá je běžícímu démonovi.

3.5 Provozování Postfixu na firewallu
Předem je třeba podotknout, že níže uvedené údaje se týkají verzí Postfixu 19991115 a novějších. Pokud potřebujete zjistit číslo vaší verze, zadejte příkaz postconf mail_version.
Umístění tohoto stroje je vcelku zřejmé. Jedná se o MTA na našem routeru (ve schématu je označen jako Firewall 1). Na routeru je v provozu paketový filtr, což je základní kámen každého firewallu. Proto je tento router označen jako Firewall 1.

* Zadejte transportní tabulku ke směrování pošty pro doménu domain.com na "vnitřní" poštovní server.

Zadejte parametry pro smtpd_recipient_restrictions a pro mynetworks (adresa vnitřní sítě), což umožní strojům z vnitřní sítě zasílat poštu kamkoliv a strojům z vnější sítě pouze na user@doman.com

/etc/postfix/main.cf:
myorigin = domain.com
mydestination = domain.com
transport_maps = hash:/etc/postfix/transport
mynetworks = 12.34.56.0/24
smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination

/etc/postfix/transport:
domain.com   smtp:inside-gateway.domain.com   (forwards user@domain)

/etc/postfix/master.cf:
Zakomentujete odkaz na místního agenta
(Comment out the local delivery agent)

Pokud váš systém používá dbm soubory namísto db, musíte nastavit parametr dbm (namísto hash). Pokud se chcete podívat, které map typy váš Postfix podporuje, zadejte příkaz postconf -m.

Po ukončení editace souboru /etc/postfix/transport zadejte příkaz postmap.

Příkaz postfix reload načte nově zadané parametry a předá je běžícímu démonovi.

Odkazy:
Domovskou stránku projektu postfix naleznete na www.postfix.org
Vzorové konfigurace postfixu pak naleznete na http://www.postfix.org/faq.html#example_config

Michal Vymazal
www.linuxservices.cz






Akce: Otevřít verzi pro tisk Otevřít verzi pro tisk


Soubory: