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říkazu postconf zjistíme, zda Postfix umí SASL ověřování přes Dovecot:
# postconf -a
cyrus
dovecot
Do 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/auth
a 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-md5
Podrobné 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 skriptu vmail.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: Všechny konfigurační soubory nutné pro Postfix a Dovecot uvedené v prvním díle, dostaneme po rozparsování tohoto jednoduchého souboru:
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: Po tomto nastavení je již vše připraveno. Po editaci souboru vmail.conf stačí spustit skript:
# ./vmail.sh
domena1.xx
domena2.xx
domena3.xx
changing configuration mail server
Reload service dovecot                                                done
done
Skript 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živatele vmail (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.