Poštovní server
s virtuálními účty trochu jinak II
14.11.2011
Tento článek je volným pokračováním článku Poštovní server s virtuálními účty trochu jinak.
SASL ověřování přes Dovecot
Pomocí příkazupostconf
zjistíme, zda Postfix umí SASL ověřování přes Dovecot:
# postconf -a cyrus dovecotDo konfiguračního souboru Postfixu přidáme:
/etc/postfix/main.cf
... smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_type = dovecot smtpd_sasl_path = private/autha znovunačteme konfiguraci pro Postfix.
Do konfiguračního souboru Dovecotu přidáme:
/etc/dovecot/dovecot.conf
... auth default { mechanisms = plain passdb passwd-file { args = /etc/dovecot/passwd } userdb static { args = uid=51 gid=51 } socket listen { client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } }a znovunačteme konfiguraci pro Dovecot.
Další typy ověřování mohou být například:
mechanisms = plain login cram-md5 digest-md5Podrobné informace najdeme na stránce Authentication Mechanisms. Pokud nastavíte například typ ověřování CRAM-MD5, je pak nutné v konfiguračním souboru
vmail.conf
zadat heslo buď jako PLAIN nebo CRAM-MD5, jinak ověření v klientovi skončí chybou.
■
Pomocí programu telnet
otestujeme, jaké jsou nabízeny typy ověřování. Předpokládám, že servery pro SMTP a IMAP protokol běží na standardních portech.
# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 server ESMTP Postfix EHLO pc.domena1.xx 250-server 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN CRAM-MD5 DIGEST-MD5 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN QUIT 221 2.0.0 Bye Connection closed by foreign host. # telnet localhost 143 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. * OK Dovecot ready. a01 CAPABILITY * CAPABILITY IMAP4rev1 SASL-IR SORT THREAD=REFERENCES MULTIAPPEND UNSELECT LITERAL+ IDLE CHILDREN NAMESPACE LOGIN-REFERRALS STARTTLS AUTH=PLAIN AUTH=LOGIN AUTH=CRAM-MD5 AUTH=DIGEST-MD5 a01 OK Capability completed. a02 LOGOUT * BYE Logging out a02 OK Logout completed. Connection closed by foreign host.Typy ověřování by v obou případech měly být stejné.
Testování funkčnosti ověřování SASL je popsáno například na stránce Testing SASL authentication in the Postfix SMTP server.
Skript pro snadnou údržbu virtuálních účtů
Pomocí bash skriptuvmail.sh
lze provádět snadnou správu všech virtuálních účtů.
K tomu stačí jediný jednoduchý textový soubor, po jeho rozparsování se pomocí skriptu vygenerují všechny potřebné konfigurační soubory pro Postfix i Dovecot.
A nakonec se automaticky provede načtení nové konfigurace.V konfiguračním souboru platí následující syntaxe:
- Řádky začínající znakem '#', mezery a prázdné řádky jsou ignorovány, například:
# toto je poznamka
- Jednotlivé domény je popsány v sekcích, každá sekce začíná znakem '@' a názvem domény.
Sekce končí bud začátkem další sekce nebo koncem souboru. Například:
@domena1.xx
- V rámci sekce jsou definováni jednotliví virtuální uživatelé a jejich hesla.
Jméno uživatele a heslo jsou odděleny znakem '*'. Heslo může být buď v normálním textu
nebo již zakódované pomocí programu
dovecotpw
. Například:josef*heslo franta*{CRYPT}omNJtqTs2QvTY
Aby parser rozpoznal, že jde o již zakódované heslo, je nutné za '*' uvést typ kódování uzavřený ve složených závorkách '{' a '}'. Typ kódování je nutné napsat pouze pomocí VELKÝCH PÍSMEN, číslic a znaku '-'. Nakonec je uvedeno zakódované heslo. Tento tvar je výstup programudovecotpw
. - V sekci mohou být definovány i přezdívky (aliasy). Za názvem přezdívky je znak ':' a za ním následuje seznam
účtů nebo emailů navzájem oddělených buď mezerou nebo čárkou, například:
emil:emil,emil@jinam.xx
Pokud je nějaký účet uzavřený v uvozovkách, jde o lokálního uživatele na serveru. To využijete při zvláštních požadavcích, třeba když pošta směřuje do souboru nebo je zpracovávána programem. Například:franta:franta,"user"
Na serveru musí existovat učet 'user'. Pak v souboru/etc/aliases
bude třeba:user:/home/user/soubor_s_postou
nebouser:|/usr/bin/nejaky_program
Po změně v souboru/etc/aliases
nezapomeňte na příkaznewaliases
, o tento soubor se skript nestará!
vmail.conf
@domena1.xx josef*heslo pepa:josef frantici:franta@domena2.xx,franta@domena3.xx @domena2.xx emil*{MD5}$1$xxmfJp2Z$Xsz0LQxTf4ChK.sMm8QKI0 emil:emil,emil@jinam.xx franta*{SSHA}KgzVZlGq9+JlT5kGWEtk4nT1+dlPZOE7 @domena3.xx franta*{CRYPT}omNJtqTs2QvTY
■
Skript vmail.sh
provádí pouze syntaktickou kontrolu, ne logickou. Skript může spustit pouze root
.
Před prvním spuštěním je nutné nastavit několik důležitých proměnných:
- Pro ladění, je-li nastaveno
true
, připraví se pouze kopie konfiguračních souboru (soubory.tmp
), ale neprovede se změna konfigurace mail serveru:debug=false
- Umístění implicitního konfiguračního souboru, jinak lze zadat i jako parametr skriptu:
confname="vmail.conf"
V tomto případě je konfigurační soubor ve stejném adresáři jako skript. - Používat schránku typu maildir (jinak mbox):
maildir=true
- Implicitní kódování hesla (z výpisu
'dovecotpw -l'
). Tato volba se využívá, pokud není pro daného uživatele v konfiguračním souboruvmail.conf
nastaveno již zakódované heslo. Pro zvýšení bezpečnosti je lepší použít cokoliv jiného, třeba"CRYPT"
:defaultPasswordScheme="PLAIN"
- Kde jsou uloženy konfigurační soubory pro Postfix:
vdomains="/etc/postfix/vdomains" vmailboxes="/etc/postfix/vmailboxes" valiases="/etc/postfix/valiases"
- Kde je uložen konfigurační soubor s hesly pro Dovecot:
vpasswd="/etc/dovecot/passwd"
- Každá doména by měla mít některé důležité adresy pro administrátory.
Pravděpodobně to bude alias směřující na Váš email. Pak stačí tento email vložit do proměnné
baseUser
a skript automaticky doplní aliasy pro každou doménu:baseUser="nekdo@nekde.xx" baseMails=( postmaster abuse )
Potom budou u každé domény vybrané aliasy směřovat na adresunekdo@nekde.xx
. - Umístění programu
dovecotpw
:dovecotpw="/usr/sbin/dovecotpw"
- Umístění programu
postmap
:postmap="/usr/sbin/postmap"
- Program a jeho parametr (
"reload", "force-reload", ...
) pro znovunačteni konfigurace pro Dovecot:initDovecot="/etc/init.d/dovecot" initDovecotParam="reload"
vmail.conf
stačí spustit skript:
# ./vmail.sh domena1.xx domena2.xx domena3.xx changing configuration mail server Reload service dovecot done doneSkript konfigurační soubor rozparsuje do jednotlivých souborů pro Postfix a Dovecot. Nakonec provede znovunačtení jejich konfigurace. Pokud nastane chyba, skript Vás na ni upozorní a změnu konfigurace pochopitelně neprovede.
■
Download komentovaného skeletu konfiguračního souboru a bash skriptu: vmail (3.2 KiB)Nezapomeňte nastavit jako vlastníka uzivatele
root
a práva také pouze pro roota
, konfigurační soubor by rozhodně neměl být čitelný pro normálního uživatele na serveru.
Zvýšení bezpečnosti
Jako vylepšení bezpečnosti poštovního serveru s virtuálními účty, se doporučuje vytvořit na serveru uživatele s UID a grupu s GID ne menší jak 100. Vytvoříme tedy uživatelevmail
(bez shellu) třeba s UID 999 a grupu vmail
s GID 999. Uživatel vmail
pak bude jediným členem grupy vmail
.
Tento uživatel také bude vlastníkem adresáře (práva 700), kde je ukládána pošta, v tomto příkladu je to /var/spool/mail
.
Pak provedeme drobné změny v konfiguračních souborech:
/etc/postfix/main.cf
... virtual_minimum_uid = 999 virtual_uid_maps = static:999 virtual_gid_maps = static:999
/etc/dovecot/dovecot.conf
first_valid_uid = 999 first_valid_gid = 999 last_valid_uid = 999 last_valid_gid = 999 ... auth default { userdb static { args = uid=999 gid=999 } socket listen { client { ... user = postfix group = vmail } } } ...
Čtěte volné pokračování Poštovní server s virtuálními účty trochu jinak III - Filtry pro Dovecot.
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.
■