Poštovní server
s virtuálními účty trochu jinak
29.10.2015
Obsah
- Poštovní server s virtuálními účty
- Poštovní server s virtuálními účty II
- Poštovní server s virtuálními účty III - Filtry pro Dovecot
Úvod
Toto je návod na sestavení poštovního serveru s virtuálními účty. K tomu stačí jen SMTP server Postfix a na příjem pošty pro klienty je použit IMAP a POP3 server Dovecot. K uložení virtuálních účtů jsou použity textové soubory, není tedy potřeba žádný databázový server. Samozřejmě musí existovat na DNS serverech odpovídající MX záznamy pro jednotlivé domény, směřující na vytvářený server. V textu používám jako příklad neexistující domény a poštovní adresy. V tomto popisu využívám standardní balíčky z distribuce GNU/Linuxu openSUSE 10.3, ale neměl by být problém návod aplikovat na jakoukoliv jinou distribuci Linuxu. Všechny práce provádíroot
.Co je kde uloženo:
seznam domén | /etc/postfix/vdomains |
seznam adres | /etc/postfix/vmailboxes |
seznam aliasů | /etc/postfix/valiases |
konfigurační soubor Postfix | /etc/postfix/main.cf |
seznam adres a hesel | /etc/dovecot/passwd |
konfigurační soubor Dovecot | /etc/dovecot/dovecot.conf |
adresář pro uložení pošty | /var/spool/mail |
log činnosti Postfixu i Dovecotu | /var/log/mail |
SMTP server Postfix
Všechny domény jsou uloženy v souboru:/etc/postfix/vdomains
domena1.xx domena1.xx domena2.xx domena 2 domena3.xx 3První sloupec je název domény, ve druhém sloupci může být cokoliv, ale něco tam být MUSÍ.
Po jakékoliv změně v souboru je nutné VŽDY provést příkaz:
postmap /etc/postfix/vdomainsPříkaz
postmap
vytváří z textového souboru databázi, ze které čte Postfix. Samotný Postfix není třeba reloadovat.■
Existují dva způsoby uložení pošty na disku pro jednotlivé účty. Buď je všechna pošta uživatele uložena v jediném souboru, to je formát mailbox.
Nebo jsou jednotlivé zprávy uživatele uloženy v separátních souborech v adresáři uživatele, to je formát maildir.
Seznam všech poštovních adres je v souboru:
/etc/postfix/vmailboxes (pro formát mailbox)
josef@domena1.xx josef@domena1.xx emil@domena2.xx emil@domena2.xx franta@domena2.xx franta@domena2.xx franta@domena3.xx franta@domena3.xxnebo:
/etc/postfix/vmailboxes (pro formát maildir)
josef@domena1.xx josef@domena1.xx/ emil@domena2.xx emil@domena2.xx/ franta@domena2.xx franta@domena2.xx/ franta@domena3.xx franta@domena3.xx/V prvním sloupci je celý název poštovní adresy účtu a v druhém sloupci je název schránky na disku serveru. Doporučuji používat poštovní adresu. V případě, že budete používat formát maildir, přidejte na konec názvu schránky znak '/'.
Po jakékoliv změně v souboru je nutné VŽDY provést příkaz:
postmap /etc/postfix/vmailboxes
■
Poštovní aliasy (přezdívky) jsou v souboru:
/etc/postfix/valiases
pepa@domena1.xx josef@domena1.xx emil@domena2.xx emil@domena2.xx, emil@jinam.xx frantici@domena1.xx franta@domena2.xx, franta@domena3.xxTedy pošta pro
pepa@domena1.xx
je přesměrována do schránky uživatele josef@domena1.xx
.Pošta pro
emil@domena2.xx
je navíc přeposlána na jiný server, na adresu emil@jinam.xx
.A pošta pro
frantici@domena1.xx
je přesměrována na uživatele franta@domena2.xx
a franta@domena3.xx
.Po jakékoliv změně v souboru je nutné VŽDY provést příkaz:
postmap /etc/postfix/valiases
■
Do stávajícího konfiguračního souboru Postfixu je nutné přidat:
/etc/postfix/main.cf
virtual_transport = virtual virtual_minimum_uid = 51 virtual_uid_maps = static:51 virtual_gid_maps = static:51 virtual_mailbox_base = /var/spool/mail virtual_mailbox_domains = hash:/etc/postfix/vdomains virtual_mailbox_maps = hash:/etc/postfix/vmailboxes virtual_alias_maps = hash:/etc/postfix/valiasesV případě, že je počet domén malý, je možné je přímo vypsat v konfiguračním souboru Postfixu, například:
virtual_mailbox_domains = domena1.xx, domena2.xx, domena3.xxPochopitelně pak nepotřebujete soubor
vdomains
.
Číslo 51 je UID účtu postfix
ze souboru /etc/passwd
.Po jakékoliv změně v konfiguračním souboru je nutné VŽDY znovunačíst konfiguraci pro Postfix:
/etc/init.d/postfix reloadnebo v openSUSE:
rcpostfix reload
■
Nyní lze funkčnost poštovního serveru otestovat, například jednoduchým programem mail
z balíčku mailx
.
Takto lze provést test, kdy uživatel emil@domena2.xx
posílá poštu uživateli josef@domena1.xx
:
mail -r emil@domena2.xx josef@domena1.xxA takto si lze přečíst poštu pro uživatele
josef@domena1.xx
(pochopitelně musíte být root
):
mail -f /var/spool/mail/josef@domena1.xxPokud něco nefunguje, vyplatí se podívat do logu Postfixu (
/var/log/mail
), kde je záznam jeho činnosti.
Příkaz postmap
navíc slouží k testování dotazů, například:
# postmap -q domena2.xx /etc/postfix/vdomains domena 2
IMAP a POP3 server Dovecot
Nejprve vytvoříme soubor/etc/dovecot/passwd
, kde jsou uložena hesla pro jednotlivé virtuální uživatele.
/etc/dovecot/passwd
josef@domena1.xx:{PLAIN}heslo emil@domena2.xx:{MD5}$1$xxmfJp2Z$Xsz0LQxTf4ChK.sMm8QKI0 franta@domena2.xx:{SSHA}KgzVZlGq9+JlT5kGWEtk4nT1+dlPZOE7 franta@domena3.xx:{CRYPT}omNJtqTs2QvTYV prvním sloupci je název schránky (totéž, co je ve druhém sloupci souboru
vmailboxes
).
Druhý sloupec, oddělený dvojtečkou, obsahuje typ kódování (uzavřený ve složených závorkách) a zakódované heslo. Soubor musí končit prázdným řádkem.
Různé druhy kódování hesla zjistíte na staré verzi příkazem /usr/sbin/dovecotpw -l
.
Zakódované heslo pak získáte pomocí /usr/sbin/dovecotpw -s 'typ kodovani'
.
V novější verzi se používá příkaz /usr/sbin/doveadm pw
, ostatní parametry jsou už stejné.
Například:
hostname:~ # /usr/sbin/dovecotpw -s crypt Enter new password: Retype new password: {CRYPT}omNJtqTs2QvTYNebo zjištění všech možných druhů kódování hesla na novějších verzích:
hostname:~ # doveadm pw -l CRYPT MD5 MD5-CRYPT SHA SHA1 SHA256 SHA512 SMD5 SSHA SSHA256 SSHA512 PLAIN CLEAR CLEARTEXT PLAIN-TRUNC CRAM-MD5 HMAC-MD5 DIGEST-MD5 PLAIN-MD4 PLAIN-MD5 LDAP-MD5 LANMAN NTLM OTP SKEY RPA BLF-CRYPT SHA256-CRYPT SHA512-CRYPT
■
V konfiguračním souboru Dovecotu je zapotřebí nastavit autentifikaci ze souboru.
/etc/dovecot/dovecot.conf
auth default { mechanisms = plain passdb passwd-file { args = /etc/dovecot/passwd } userdb static { args = uid=51 gid=51 } }Číslo 51 je UID účtu
postfix
ze souboru /etc/passwd
.Dále je nutno informovat, kde jsou uloženy schránky pro virtuální uživatele.
/etc/dovecot/dovecot.conf (pro formát mailbox)
mail_location = mbox::INBOX=/var/spool/mail/%u:INDEX=MEMORYPodrobnější informace naleznete v dokumentaci pro Dovecot, stránka mbox configuration.
/etc/dovecot/dovecot.conf (pro formát maildir)
mail_location = maildir:/var/spool/mail/%uMinimální konfigurační soubor Dovecotu pak vypadá například takto:
/etc/dovecot/dovecot.conf
protocols = pop3 imap ssl_disable = yes disable_plaintext_auth = no mail_location = maildir:/var/spool/mail/%u pop3_uidl_format = %08Xu%08Xv first_valid_uid = 51 first_valid_gid = 51 last_valid_uid = 51 last_valid_gid = 51 auth_verbose = yes auth default { mechanisms = plain passdb passwd-file { args = /etc/dovecot/passwd } userdb static { args = uid=51 gid=51 } }Po jakékoliv změně v konfiguračním souboru je nutné VŽDY znovunačíst konfiguraci pro Dovecot:
/etc/init.d/dovecot reloadnebo v openSUSE:
rcdovecot reloadZáznam činnosti Dovecotu je také v
/var/log/mail
.
Závěr
Porovnání výkonnosti tohoto serveru (FILE) s poštovním serverem na bázi MySQL:Bylo vygenerováno 10 domén a v každé z nich 100 adres, celkem tedy 1000 virtuálních poštovních účtů. Dále byl napsán program, který po spuštění vytvořil 100 vláken a z každého vlákna poslal 100 zpráv na náhodné testovací adresy, celkem tedy 10 000 mailů. Pak byla měřena doba (příkaz
time
), do kdy byly všechny maily uloženy do schránek a některé další hodnoty, jako počet procesů a průměrné zatížení (loadavg).
V případě verze s MySQL musela být v konfiguračním souboru databáze MySQL (/etc/my.cnf
) zvýšena hodnota max_connections
na 500.Průměrné zatížení dosahovalo hodnoty až 100. Počet procesů při nezatíženém systému byl cca 200, při zatížení u tohoto serveru byl počet procesů maximálně 600 a u serveru s MySQL stoupal až na 800. Průměrné časy ze tří měření:
FILE
real 1m8.8s user 0m8.7s sys 0m3.7s
MySQL
real 1m17.7s user 0m8.6s sys 0m3.6sZde popsaný server dosahuje stejného výkonu jako server postavený na bázi MySQL, navíc je šetrnější ke zdrojům počítače.
Amavis-new
získáte navíc antispamovou i antivirovou (Clamav
) kontrolu.*) čtěte volné pokračování Poštovní server s virtuálními účty trochu jinak II.
Kontakt
http://jiri.jozif.googlepages.com
email: jiri.jozif (zavináč) gmail (tečka) com
Původní článek vyšel na serveru linuxzone.cz.
email: jiri.jozif (zavináč) gmail (tečka) com
Původní článek vyšel na serveru linuxzone.cz.
■