V tomto článku si chci poznamenat, jak nakonfigurovat Postfix s Dovecotem v jednoduché konfiguraci, kdy NSS i PAM budou v LDAP databázi.
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 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.
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.
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).
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ě.
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.