Postfix + Dovecot (LDAP)

V tomto článku si chci poznamenat, jak nakonfigurovat Postfix s Dovecotem v jednoduché konfiguraci, kdy NSS i PAM budou v LDAP databázi.

Postfix

Ten je v každé distribuci, stačí jej nainstalovat a poeditovat /etc/postfix/main.cf. Některé distribuce ponechávají ten defaultní z mainstreamu (což je ideální), jiné mají kdovíjak zmršené konfigurace bez komentářů. V tom druhém případě doporučuji stáhnout si example configuration z /usr/share nebo z internetu.

Celý soubor je nutno si projít a správně nastavit hostname, doménu, mydestination, mynetworks a zejména tuto hodnotu:

home_mailbox = .Maildir/

Dále je vhodné zvýšit několik limitů.

# 90 MB na zpravu
message_size_limit = 90000000
# velikost schranek neomezena
mailbox_size_limit = 0

Ta říká, že schránky budou v domovských adresářích a budou začínat tečkou, což je zvlášť vhodné, pokud používáme Sambu. Adresář pak bude skrytý pro uživatele Windows. Implicitní doručování do lokálních schránek s PAMem funguje perfektně, pokud to nezměníte v master.cf, tak Postfix používá program local, což nám vyhovuje. Víc věcí opravdu není třeba nastavovat, proto mám Postfix rád.

Dovecot

Dovecot je výborný POP3/IMAP démon, jeho nevýhodou je, že je docela nový (verze 1.0 vyšla na jaře roku 2007), takže v mnoha distribucích není. Pokud máte pro svou distribuci balíček, následující odstavec můžete přeskočit.

Kompilace

Je triviální, musíte mít nainstalován balíček pam-devel (nebo jeho ekvivalent ve vaší distribuci) a poté stačí configure && make && make install. Postfix se nainstaluje do /usr/local, konfigurace pak do /usr/local/etc. Poté stačí vytvořit uživatele

adduser -s /bin/false dovecot

A můžete dovecot spustit příkazem (jako root)

# dovecot

Korektní ukončení je také snadné

# killall dovecot

a znovunačtení konfigurace rovněž

# killall -HUP dovecot

Dovecot ze zdrojových balíčků nemá init.d skript (na internetu se dají nalézt), takže já ho spouštím z rc.local skriptu.

Konfigurace

Před startem je nutné server nakonfigurovat. Ve stručnosti stačí vytvořit konfiguraci pro PAM – soubor /etc/pam.d/dovecot:

#%PAM-1.0
auth       required     pam_stack.so service=system-auth
account    required     pam_stack.so service=system-auth

Vidíme, že delegujeme přihlašování na system-auth, tento soubor musí být nakonfigurován jako v tomto návodu. Pokud jste tedy již Sambu podle mého návodu instalovali, stačí vám vytvořit jen soubor dovecot.

Poté zeditujte /usr/local/etc/dovecot.conf (zkopírujte si example soubor) a najděte a nastavte tyto hodnoty:

# používáme jen tyto protokoly
protocols = imap pop3
# nevyžadujeme zabezpečený login
disable_plaintext_auth = no
# SSL/TLS nepoužíváme
ssl_disable = yes
# tady budou schránky
mail_location = maildir:~/.Maildir
# a tohle nastavte v sekci pop3 kvůli Outlookům
pop3_uidl_format = %08Xu%08Xv

Vše ostatní ponechte implicitní (případně modifikujte dle požadavků). Všimněte si, že se jedná o velmi jednoudchou konfiguraci (žádné TLS/SSL – lepší je zřídit OpenVPN).

Amavis-new

S tímto nástrojem napsaným v Perlu je možné profiltrovat příchozí poštu, tento postup je napsán podle tohoto návodu (ale používám jiné čísla portů). Předpokládám, že v konfiguraci amavisd-new nezměníte defaultní čísla portů. Zkontrolujte tedy, zda souhlasí toto:

$inet_socket_port = 10025;
$notify_method  = 'smtp:[127.0.0.1]:10026';
$forward_method = 'smtp:[127.0.0.1]:10026';

Doporučuji také nastavit

$max_servers = 8;

Zeditujte /etc/postfix/master.cf a přidejte nakonec tyto řádky:

amavisfeed unix    -       -       n        -      8     lmtp
    -o lmtp_data_done_timeout=1200
    -o lmtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=20

127.0.0.1:10026 inet n    -       n       -       -     smtpd
    -o content_filter=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=reject_unauth_pipelining
    -o smtpd_end_of_data_restrictions=
    -o smtpd_restriction_classes=
    -o mynetworks=127.0.0.0/8
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
    -o local_header_rewrite_clients=

Nyní restartujte postfix

# /etc/init.d/postfix reload

a můžete se zkusit natelnetit na port 10025 a 10026, oba by měly být funkční. Restartujte amavis, pokud by nebyl port 10025 aktivní. Nyní je třeba ještě dopsat jednu hodnotu do konfigurace postfixu do souboru main.cf:

content_filter=amavisfeed:[127.0.0.1]:10025

Nyní si pošlete mail, v logu by měl být záznam o tom, že amavis tento dopis prohlédl. Také zde najdete, které přípony je schopen amavis rozbalit, můžete do systému doinstalovat balíčky jako je unzip, unrar a podobně.

SpamAssasin a Razor

Jak v krátkosti nainstalovat tyto dva anti-spam nástroje. Nejprve je nutné je oba nainstalovat, což je snadné. Poté je třeba vytvořit uživatele spamd:

# useradd -s /bin/bash -d /var/spool/spamd -m spamd

Nastavte soubor /etc/sysconfig/spamd (u distribucí odvozených od Debianu to bude jinak):

SPAMDOPTIONS="-d -m10 -u spamd -s /var/log/spamd.log -x"

Zeditujte podle dokumentace soubor /etc/mail/spamassassin/local.cf, mohu doporučit například tyto hodnoty:

bayes_min_spam_num      100
bayes_min_ham_num       100
skip_rbl_checks         0
use_razor2              1
use_dcc                 1
use_pyzor               1

Nyní si nakopírujte nějaké vzorky e-mailů do adresářů uvedených níže a naučte bayes filtr. Můžete také z jiného stroje s již naučeným assassinem nakopírovat soubory bayes_seen a bayes_toks (v tom případě vynecháte příkazy s parametry –spam a –ham).

# su spamd
# cd
# sa-learn --sync
# sa-learn --spam adresar_se_spamy_vzorky
# sa-learn --ham adresar_s_ham_vzorky
# razor-admin -create
# razor-admin -discover
# spamassassin --lint -D

Poslední příkaz vypíše diagnostiku, takže to zkontrolujte. Nyní již pod rootem restartujte službu spamd.

A jak to celé otestovat? Pošlete se e-mail s obsahem

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

To by mělo být identifikováno jako SPAM. A nyní to samé pro antivirus

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Jak viry tak spamy jsou přesunuty do adresáře /var/spool/amavis/virusmails, zavirovaný e-mail nepřijde, některé SPAM zprávy mohou být odmítnuty rovnou při pokusu o odeslání.

Jsme hotovi.

Diskuze

Zdeněk Burda, 26.04.2007 17:43:

PAM a NSS jsou dvě rozdílné věci, takže napsat PAM NSS_LDAP modul mi připadá nějaké zmatené...

zjednodušeně:

NSS slouží k rozeznávání uživatelů (getent passwd root) a skupin (getent group root), počítačů (getent hosts www.zive.cz) a dalších věcí, základní konfigurace se provádí v /etc/nsswitch.conf, knihovny jsou v /lib/libnss_*

PAM slouží pro ověření přihlášení uživatele v programech, které používají libpam a konfigurace se provádí v /etc/pam.conf a /etc/pam.d/*. Knihovny (moduly) jsou (fedora, debian...) v /lib/security

 
Lukáš Zapletal, 27.04.2007 13:59:

Díky za upřesnění, opraveno.

 
If you can't read the letters on the image, download this .wav file to get them read to you.
pridej.cz
blog/postfix_dovecot_pam_nss.txt · Poslední úprava: 29.05.2008 09:04 (external edit)
Creative Commons License Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0