Tento návod je chráněn autorským právem (c) 2007 od Falko Timme. Je odvozen z tutoriálu od Christopha Haase, který můžete najít na http://workaround.org. Tento výukový program můžete volně používat pod licencí Creative Commons 2.5 nebo jakoukoli novější verzí.
Tento dokument popisuje, jak nainstalovat poštovní server založený na Postfixu, který je založen na virtuálních uživatelích a doménách, tj. uživatelích a doménách, které jsou v databázi MySQL. Také předvedu instalaci a konfiguraci Courier (Courier-POP3, Courier-IMAP), aby se Courier mohl autentizovat proti stejné databázi MySQL, kterou používá Postfix.
Výsledný server Postfix je schopen SMTP-AUTH a TLS a kvóta (kvóta není standardně zabudována do Postfixu, ukážu, jak váš Postfix vhodně opravit). Hesla jsou uložena šifrovaně formulář v databázi (většina dokumentů, které jsem našel, se zabývala hesly v prostém textu, což je bezpečnostní riziko). Kromě toho tento tutoriál popisuje instalaci Amavisd , SpamAssassin a ClamAV takže e-maily budou kontrolovány na výskyt spamu a virů.
Výhodou takového „virtuálního“ nastavení (virtuální uživatelé a domény v databázi MySQL) je, že je mnohem výkonnější než nastavení založené na „skutečných“ uživatelích systému. S tímto virtuálním nastavením může váš poštovní server obsluhovat tisíce domén a uživatelů. Kromě toho je snazší administrovat, protože s databází MySQL se musíte zabývat pouze tehdy, když přidáváte nové uživatele/domény nebo upravujete stávající. Žádné další postmapové příkazy pro vytváření db souborů, žádné další načítání Postfixu atd. Pro správu databáze MySQL můžete použít webové nástroje jako phpMyAdmin, který bude také nainstalován v tomto návodu. Třetí výhodou je, že uživatelé mají jako uživatelské jméno e-mailovou adresu (namísto uživatelského jména + e-mailové adresy), což je snazší pochopit a zapamatovat si.
Tento návod je myšlen jako praktický průvodce; nepokrývá teoretická východiska. Jsou zpracovány v mnoha dalších dokumentech na webu.
Tento dokument je dodáván bez jakékoli záruky! Chci říci, že to není jediný způsob, jak takový systém nastavit. Existuje mnoho způsobů, jak tohoto cíle dosáhnout, ale já volím tento způsob. Neposkytuji žádnou záruku, že to pro vás bude fungovat!
1 předběžná poznámka
Tento tutoriál je založen na Ubuntu 6.10 (Edgy Eft), takže před pokračováním v tomto tutoriálu byste měli nastavit základní instalaci Ubuntu. Systém by měl mít statickou IP adresu. V tomto návodu používám jako svou IP adresu 192.168.0.100 a jako název hostitele server1.example.com.
Všechny kroky zde raději dělám jako uživatel root. Takže pokud jste si ještě nevytvořili root přihlášení, měli byste tak učinit nyní:
sudo passwd root
Poté se přihlaste jako root:
su
Pokud byste chtěli místo roota pracovat jako normální uživatel, nezapomeňte před všechny příkazy uvedené v tomto návodu vložit sudo. Takže když spustím
aktualizace apt-get
měli byste spustit
aktualizace sudo apt-get
místo toho atd.
2 Instalace Postfix, Courier, Saslauthd, MySQL, phpMyAdmin
Než nainstalujeme tyto balíčky, musíme upravit /etc/apt/sources.list a povolit úložiště vesmíru, takže se ujistěte, že máte povolené následující řádky:
vi /etc/apt/sources.list
[...]deb http://de.archive.ubuntu.com/ubuntu/ edgy universedeb-src http://de.archive .ubuntu.com/ubuntu/ nervózní vesmír[...] |
Potom spusťte
aktualizace apt-get
pro aktualizaci databáze balíčků.
Chcete-li nainstalovat Postfix, Courier, Saslauthd, MySQL a phpMyAdmin, jednoduše spustíme
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl postfix-tls-lib moduly libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql
Budete požádáni o několik otázek:
Vytvořit adresáře pro webovou administraci? <-- Ne
Obecný typ konfigurace? <-- Internetová stránka
E-mailové jméno? <-- server1.example.com
Vyžadován certifikát SSL <-- OK
3 Použití opravy kvót na Postfix
Musíme získat zdrojové kódy Postfixu, opravit jej pomocí opravy kvót, vytvořit nové balíčky Postfix .deb a nainstalovat tyto balíčky .deb:
apt-get install build-essential dpkg-dev fakeroot debhelper libgdbm-dev libldap2-dev libpcre3-dev libssl-dev libsasl2-dev postgresql-dev po-debconf dpatch libdb4.3-dev libdb4.3-dev 5cd /usr/src
apt-get source postfix(Ujistěte se, že v následujících příkazech používáte správnou verzi Postfixu. Mám nainstalovaný Postfix 2.3.3. Verzi Postfixu můžete zjistit spuštěním
postconf -d | grep mail_version)
wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.3.3-vda.patch.gz
gunzip postfix-2.3.3-vda.patch.gz
cd postfix-2.3.3
patch -p1 <../postfix-2.3.3-vda.patch
dpkg-buildpackage
cd ..
dpkg -i postfix_2.3.3 -1_i386.deb
dpkg -i postfix-mysql_2.3.3-1_i386.deb
4 Vytvoření databáze MySQL pro Postfix/Courier
Ve výchozím nastavení se MySQL instaluje bez hesla uživatele root, které okamžitě změníme (nahraďte heslo rootsql heslem, které chcete použít):
mysqladmin -u root heslo yourrootsqlpasswordNyní vytvoříme databázi s názvem mail:
mysqladmin -u root -p vytvořit poštuDále přejdeme do prostředí MySQL:
mysql -u root -pV prostředí MySQL vytvoříme uživatele mail_admin s heslem mail_admin_password (nahraďte ho vlastním heslem), který má oprávnění SELECT, INSERT, UPDATE, DELETE v poštovní databázi. Tento uživatel bude používán Postfixem a Courierem pro připojení k poštovní databázi:
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost. localdomain' IDENTIFIED BY 'mail_admin_password';
FLUSH PRIVILEGES;Stále v prostředí MySQL vytváříme tabulky, které Postfix a Courier potřebují:
POUŽÍVEJTE poštu;CREATE TABLE domény (
doména varchar(50) NOT NULL,
PRIMÁRNÍ KLÍČ (doména) )
TYPE=MyISAM;CREATE TABLE přesměrování (
zdrojový varchar(80) NOT NULL,
cílový TEXT NENÍ NULL,
PRIMÁRNÍ KLÍČ (zdroj) )
TYPE=MyISAM;CREATE TABLE uživatelé (
e-mail varchar(80) NOT NULL,
heslo varchar(20) NOT NULL,
kvóta INT(10) DEFAULT '10485760',
PRIMÁRNÍ KLÍČ (e-mail )
) TYPE=MyISAM;CREATE TABLE transport (
doména varchar(128) NOT NULL výchozí '',
transport varchar(128) NOT NULL výchozí '',
UNIQUE KEY doména (doména)
) TYP =MyISAM;ukončit;Jak jste si možná všimli, s ukončením; příkaz opustili jsme prostředí MySQL a jsme zpět v prostředí Linux.
domény tabulka bude ukládat každou virtuální doménu, pro kterou by měl Postfix přijímat e-maily (např. example.com ).
doména |
example.com |
přeposílání tabulka je pro alias jedné e-mailové adresy na jinou, např. přeposílat e-maily pro [e-mail chráněný] na [e-mail chráněný] .
zdroj | cíl |
[e-mail chráněn] | [e-mail chráněn] |
uživatelé tabulka ukládá všechny virtuální uživatele (tj. e-mailové adresy, protože e-mailová adresa a uživatelské jméno jsou stejné) a hesla (v šifrovaném formulář!) a hodnotu kvóty pro každou poštovní schránku (v tomto příkladu je výchozí hodnota 10485760 bajtů, což znamená 10 MB).
heslo | kvóta | |
[e-mail chráněn] | No9.E4skNvGa. („tajné“ v zašifrované podobě) | 10485760 |
doprava tabulka je volitelná, je pro pokročilé uživatele. Umožňuje přeposílat maily pro jednotlivé uživatele, celé domény nebo všechny maily na jiný server. Například
doména | doprava |
example.com | smtp:[1.2.3.4] |
přeposílá všechny e-maily pro example.com přes protokol smtp na server s IP adresou 1.2.3.4 (hranaté závorky [] znamená "neprovádět vyhledávání MX DNS záznamu" (což má smysl pro IP adresy...). Pokud místo toho použijete plně kvalifikovaný název domény (FQDN), nepoužívejte hranaté závorky.).
BTW, (předpokládám, že IP adresa vašeho systému poštovního serveru je 192.168.0.100) můžete přistupovat k phpMyAdmin přes http://192.168.0.100/phpmyadmin/ v prohlížeči a přihlásit se jako mail_admin. Pak se můžete podívat do databáze. Později můžete použít phpMyAdmin ke správě vašeho poštovního serveru.
5 Konfigurace Postfixu
Nyní musíme Postfixu sdělit, kde najde všechny informace v databázi. Proto musíme vytvořit šest textových souborů. Všimnete si, že říkám Postfixu, aby se připojil k MySQL na IP adrese 127.0.0.1 namísto localhost. Je to proto, že Postfix běží v chroot jail a nemá přístup k MySQL socketu, ke kterému by se pokusil připojit, kdybych Postfixu řekl, aby používal localhost. Pokud použiji 127.0.0.1 Postfix používá TCP networking pro připojení k MySQL, což není problém ani v chroot jail (alternativou by bylo přesunout MySQL socket do chroot jail, což způsobuje některé další problémy).
Ujistěte se prosím, že /etc/mysql/my.cnf obsahuje následující řádek:
vi /etc/mysql/my.cnf
[...]bind-address =127.0.0.1[...] |
Pokud jste museli upravit /etc/mysql/my.cnf, restartujte prosím MySQL nyní:
/etc/init.d/mysql restart
Spustit
netstat -tap
abyste se ujistili, že MySQL naslouchá na 127.0.0.1 (localhost.localdomain):
[e-mail protected]:/usr/src# netstat -tap
Aktivní internetová připojení (servery a navázané)
Proto Recv-Q Send-Q Místní adresa Zahraniční adresa < D > Program Státní pro 0 0 localhost.localdo:mysql*:*Poslouchejte 4556/mysqld
tcp 0 0*:smtp*:*Poslouchejte 12994/master
/> tcp6 0 0*:pop3s*:*Poslouchejte 4263/coriertcpd
tcp6 0 0*:pop3*:*poslouchejte 4198/coriertcpd
tcp6 0 0*:iMap2*:*poslouchejte 4761/coriertcpd
tcp6 0 0*:www*:*Poslouchejte 13283/apache2
tcp6 0 0*:ssh*:*poslouchejte 3192/sshd
Nyní vytvoříme našich šest textových souborů.
vi /etc/postfix/mysql-virtual_domains.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =VYBERTE doménu JAKO virtuální Z domén WHERE domain='%s'hosts =127.0.0.1 |
vi /etc/postfix/mysql-virtual_forwardings.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =VYBRAT cíl Z předávání WHERE source='%s'hosts =127.0.0.1 |
vi /etc/postfix/mysql-virtual_mailboxes.cf
user =heslo správce pošty =heslo_mailového správcedbname =mailquery =SELECT CONCAT(SUBSTRING_INDEX(e-mail,'@',-1),'/',SUBSTRING_INDEX(e-mail, '@',1),'/') OD uživatelů WHERE email='%s'hosts =127.0.0.1 |
vi /etc/postfix/mysql-virtual_email2email.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT email FROM users WHERE email='%s'hosts =127.0.0.1 |
vi /etc/postfix/mysql-virtual_transports.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =SELECT transport FROM transport WHERE domain='%s'hosts =127.0.0.1 |
vi /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
user =mail_adminpassword =mail_admin_passworddbname =mailquery =VYBRAT kvótu FROM uživatelů WHERE email='%s'hosts =127.0.0.1 |
Poté změňte oprávnění a skupinu těchto souborů:
chmod o=/etc/postfix/mysql-virtual_*.cf
chgrp postfix /etc/postfix/mysql-virtual_*.cf
Nyní vytvoříme uživatele a skupinu s názvem vmail s domovským adresářem /home/vmail. Zde budou uloženy všechny poštovní schránky.
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
Dále provedeme konfiguraci Postfixu. Ujistěte se, že jste nahradili server1.example.com platným FQDN, jinak váš Postfix nemusí fungovat správně!
postconf -e 'myhostname =server1.example.com'
postconf -e 'mydestination =server1.example.com, localhost, localhost.localdomain'
postconf -e 'mynetworks =127.0.0.0/8'
postconf -e 'virtual_alias_domains ='
postconf -e ' virtual_alias_maps =proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email'email br />postconf -e 'virtual_mailbox_domains =proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
postconf -e 'virtual_mailbox_maps =proxy:mysql:/etc/postfix/mysql-virtual_mail' br />postconf -e 'virtual_mailbox_base =/home/vmail'
postconf -e 'virtual_uid_maps =static:5000'
postconf -e 'virtual_gid_maps =static:5000'
postconf -e ' smtpd_sasl_auth_enable =yes'
postconf -e 'broken_sasl_auth_clients =yes'
postconf -e 'smtpd_recipient_restrictions =use permit_mynetworks, permit_sasl_authenticated, disable'smf /conpost_destination_yes'smf /conpost_yes'yes e 'smtpd_tls_cer t_file =/etc/postfix/smtpd.cert'
postconf -e 'smtpd_tls_key_file =/etc/postfix/smtpd.key'
postconf -e 'transport_maps =proxy:mysql:/etc/postfix/mysql -virtual_transports.cf'
postconf -e 'virtual_create_maildirsize =yes'
postconf -e 'virtual_maildir_extended =yes'
postconf -e 'virtual_mailbox_limit_maps =proxy:mysql:/mysq/post virtual_mailbox_limit_maps.cf'
postconf -e 'virtual_mailbox_limit_override =yes'
postconf -e 'virtual_maildir_limit_message ="Uživatel, kterého se pokoušíte oslovit, překročil kvótu."'
postconf -e 'virtual_overquota_bounce ano
postconf -e 'proxy_read_maps =$ místní_příjemce_mapy $ mydestination $ virtual_alias_maps $ virtual_alias_domains $ virtual_mailbox_maps $ virtual_mailbox_domains $ relay_recipient_maps $ relay_domains $ canonical_maps $ sender_canonical_maps $ recipient_canonical_maps $ relocated_maps $ transport_maps $ mynetworks $ virtual_mailbox_limit_maps'
Poté vytvoříme SSL certifikát, který je potřeba pro TLS:
cd /etc/postfix
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
<-- Zadejte název své země (např. „DE“).
<-- Zadejte název státu nebo provincie.
<-- Zadejte své město.
<-- Zadejte svou organizaci Název (např. název vaší společnosti).
<-- Zadejte název vaší organizační jednotky (např. „IT oddělení“).
<-- Zadejte plně kvalifikovaný název domény systému (např. „ server1.example.com").
<-- Zadejte svou e-mailovou adresu.
Poté změňte oprávnění souboru smtpd.key:
chmod o=/etc/postfix/smtpd.key
6 Konfigurace Saslauthd
První spuštění
mkdir -p /var/spool/postfix/var/run/saslauthd
Poté upravte /etc/default/saslauthd. Odstraňte # před START=yes a přidejte řádky PARAMS="-m /var/spool/postfix/var/run/saslauthd -r" a PIDFILE="/var/spool/postfix/var/run/${ NAME}/saslauthd.pid". Soubor by pak měl vypadat takto:
vi /etc/default/saslauthd
# Toto je třeba odkomentovat, aby se saslauthd automaticky spustilSTART=yesPARAMS="-m /var/spool/postfix/var/run/saslauthd - r"PIDFILE="/var/spool/postfix/var/run/${NAME}/saslauthd.pid"# Musíte zadat ověřovací mechanismy, které chcete použít.# Toto výchozí nastavení je "pam" pro podporu PAM, ale může zahrňte také# "shadow" nebo "sasldb", takto:# MECHANISMS="pam shadow"MECHANISMS="pam" |
Poté vytvořte soubor /etc/pam.d/smtp. Měl by obsahovat pouze následující dva řádky (nezapomeňte vyplnit správné údaje o databázi):
vi /etc/pam.d/smtp
požadováno ověření pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=e-mail passwdcolumn=heslo crypt=1account dostatečné pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=e-mail passwdcolumn=heslo crypt=1 |
Dále vytvořte soubor /etc/postfix/sasl/smtpd.conf. Mělo by to vypadat takto:
vi /etc/postfix/sasl/smtpd.conf
pwcheck_method:saslauthdmech_list:prostý loginallow_plaintext:trueauxprop_plugin:mysqlsql_hostnames:127.0.0.1sql_user:mail_adminsql_passwd:mail'select'sql_base users from mail'sql% password from mail'sql_pass u' |
Poté restartujte Postfix a Saslauthd:
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart
7 Konfigurace kurýra
Nyní musíme Courierovi sdělit, že by se měl autentizovat proti naší databázi MySQL. Nejprve upravte /etc/courier/authdaemonrc a změňte hodnotu authmodulelist tak, aby zněla:
vi /etc/courier/authdaemonrc
[...]authmodulelist="authmysql"[...] |
Poté vytvořte zálohu /etc/courier/authmysqlrc a vyprázdněte starý soubor:
cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig
cat /dev/null> /etc/courier/authmysqlrc
Poté otevřete /etc/courier/authmysqlrc a vložte do něj následující řádky:
vi /etc/courier/authmysqlrc
MYSQL_SERVER localhostMYSQL_USERNAME mail_adminMYSQL_PASSWORD mail_admin_passwordMYSQL_PORT 0MYSQL_DATABASE mailMYSQL_USER_TABLE usersMYSQL_CRYPT_PWFIELD heslo # MYSQL_CLEAR_PWFIELD passwordMYSQL_UID_FIELD 5000MYSQL_GID_FIELD 5000MYSQL_LOGIN_FIELD emailMYSQL_HOME_FIELD "/ home / Vmail" MYSQL_MAILDIR_FIELD CONCAT (SUBSTRING_INDEX (e-mail, '@' -1),'/',SUBSTRING_INDEX(e-mail,'@',1),'/')#kvóta MYSQL_NAME_FIELDMYSQL_QUOTA_FIELD |
Poté restartujte Courier:
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/ init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart
Spuštěním
telnet localhost pop3
můžete zjistit, zda váš server POP3 funguje správně. Mělo by to vrátit +OK Dobrý den. (Napište quit pro návrat do prostředí Linuxu.)
[email protected]:/etc/postfix# telnet localhost pop3
Zkouším 127.0.0.1...
Připojeno k localhost.localdomain.
Escape znak je '^]'.
+OK Dobrý den.
ukončit
+OK Hodně štěstí příště.
Spojení uzavřeno zahraničním hostitelem.
8 Upravit /etc/aliases
Nyní bychom měli upravit /etc/aliases a zadat v něm alias pro postmastera. Můžete zadat jednu ze svých stávajících e-mailových adres, abyste mohli dostávat oznámení pro poštmistra. Také změňte kořenový řádek tak, aby e-maily pro roota byly také přeposílány na postmastera:
vi /etc/aliases
# Přidáno instalačním programem pro počáteční uživatelský kořenový adresář:postmasterpostmaster:[email protected] |
Kdykoli upravíte /etc/aliases, musíte spustit
newaliases
poté a restartujte Postfix:
/etc/init.d/postfix restart
9 Nainstalovat amavisd-new, SpamAssassin a ClamAV
Chcete-li nainstalovat amavisd-new, spamassassin a clamav, spusťte následující příkaz:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo rozbalit bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax
Poté musíme nakonfigurovat amavisd-new. Konfigurace je rozdělena do různých souborů, které jsou umístěny v adresáři /etc/amavis/conf.d. Podívejte se na každý z nich, abyste se seznámili s konfigurací. Většina nastavení je v pořádku, musíme však upravit tři soubory:
Nejprve musíme povolit ClamAV a SpamAssassin v /etc/amavis/conf.d/15-content_filter_mode zrušením komentáře u řádků @bypass_virus_checks_maps a @bypass_spam_checks_maps:
vi /etc/amavis/conf.d/15-content_filter_mode
Soubor by měl vypadat takto:
use strict;# Tento soubor můžete upravit, abyste znovu povolili kontrolu SPAMu prostřednictvím spamassassin# a znovu povolili antivirovou kontrolu.## Výchozí antivirová kontrola režim# Odkomentujte dva řádky níže, abyste jej povolili zpět#@bypass_virus_checks_maps =( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);## Výchozí režim kontroly SPAM# Odkomentujte dva řádky níže, abyste jej povolili zpět#@bypass_spam_checks_maps =( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);1; # zajistit definovaný výnos |
A pak byste se měli podívat na nastavení spamu a akce pro spam-/virus-maily v /etc/amavis/conf.d/20-debian_defaults. Pokud vám výchozí nastavení vyhovuje, není třeba nic měnit. Soubor obsahuje mnoho vysvětlení, takže zde není třeba vysvětlovat nastavení:
vi /etc/amavis/conf.d/20-debian_defaults
$QUARANTINEDIR ="$MYHOME/virusmails";$log_recip_templ =undef; # deaktivovat položky protokolu úrovně 0 podle příjemce$DO_SYSLOG =1; # log přes syslogd (preferováno)$syslog_ident ='amavis'; # Identifikační značka syslog, předřazená všem zprávám$syslog_facility ='mail';$syslog_priority ='ladění'; # přepnout na info pro zrušení výstupu ladění, etc$enable_db =1; # povolit použití BerkeleyDB/libdb (SNMP a chůva)$enable_global_cache =1; # povolit použití mezipaměti založené na libdb if $enable_db=1$inet_socket_port =10024; # default listening socket$sa_spam_subject_tag ='***SPAM*** ';$sa_tag_level_deflt =2.0; # přidat záhlaví s informacemi o spamu, pokud je na této úrovni nebo nad ní $sa_tag2_level_deflt =6,31; # přidat hlavičky „detekován spam“ na této úrovni$sa_kill_level_deflt =6,31; # spouští akce vyhýbající se spamu$sa_dsn_cutoff_level =10; # úroveň spamu, za kterou se DSN neposílá$sa_mail_body_size_limit =200*1024; # neztrácejte čas na SA, pokud je pošta větší$sa_local_tests_only =0; # pouze testy, které nevyžadují přístup k internetu?[...]$final_virus_destiny =D_DISCARD; # (data se neztratila, viz virová karanténa)$final_banned_destiny =D_BOUNCE; # D_REJECT when front-end MTA$final_spam_destiny =D_BOUNCE;$final_bad_header_destiny =D_PASS; # Falešně pozitivní (pro spam)[...] |
Nakonec upravte /etc/amavis/conf.d/50-user a přidejte řádek $pax='pax'; uprostřed:
vi /etc/amavis/conf.d/50-user
[...]$pax='pax';[...] |
Poté spusťte tyto příkazy pro přidání uživatele clamav do skupiny amavis a pro restartování amavisd-new a ClamAV:
adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restart
Dále musíme upravit konfigurační soubor démona Freshclam (to je démon, který pravidelně a automaticky stahuje nejnovější virové signatury ze zrcadla ClamAV), protože obsahuje malou chybu. Otevřete /etc/clamav/freshclam.conf a upravte řádek NotifyClamd, jak je znázorněno níže:
vi /etc/clamav/freshclam.conf
[...]NotifyClamd /etc/clamav/clamd.conf[...] |
Poté restartujte Freshclam (ujistěte se, že není spuštěn žádný jiný proces Freshclam (možná jiná instalace ClamAV), protože pak se náš Freshclam nespustí):
/etc/init.d/clamav-freshclam restart
Nyní musíme nakonfigurovat Postfix tak, aby zprostředkovával příchozí e-maily přes amavisd-new:
postconf -e 'content_filter =amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options =no_address_mappings'
Poté do /etc/postfix/master.cf připojte následující řádky:
vi /etc/postfix/master.cf
[...]amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes127.0.0.1:10025 inet n - - - - smtpd -o content_filter=-o local_recipient_maps=-o relay_recipient_maps=-o smtpd_restriction_classes=-o smtpd_client_restrictions=-o smtpd_helo_restrictions=-o smtpd_sender_sender=omezení/omezení_0 smtp. o strict_rfc821_envelopes=yes -o recipient_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_bind_address=127.0.0.1 |
Poté restartujte Postfix:
/etc/init.d/postfix restart
Nyní spusťte
netstat -tap
a měli byste vidět Postfix (master) naslouchající na portu 25 (smtp) a 10025 a amavisd-new na portu 10024:
[e-mail protected]:/usr/local/sbin# netstat -tap
Aktivní internetová připojení (servery a navázané)
Proto Recv-Q Send-Q Místní adresa Zahraniční Adresa / Sta > TCP 0 0 localhost.localdo:10024*:*Poslouchejte 16043 /amavisd (mast
tcp 0 0 localhost.localdo:10025*:*poslouchejte 15794 /master
tcp 0 0 localhost.localdo:mysql** :*Poslouchejte 4783 /mysqld
tcp 0 0*:smtp*:*poslouchejte 15794 /master
tcp6 0 0*:imaps*:*poslouchejte 13452 /coriertcpd
tcp6 0 0*:pop3s *:*Poslouchejte 13517/coriertcpd
tcp6 0 0*:pop3*:*poslouchejte 13480/coriertcpd
tcp6 0 0*:iMap2*:*poslouchejte 13412/c OURIERTCPD
TCP6 0 0*:www*:*Poslouchejte 4489/apache2
tcp6 0 0*:ssh*:*poslouchejte 3193/sshd
10 Instalace Razor, Pyzor a DCC a konfigurace SpamAssassin
Razor, Pyzor a DCC jsou spamfiltry, které využívají síť kolaborativního filtrování. Chcete-li je nainstalovat, spusťte
apt-get install razor pyzor dcc-client
Nyní musíme říci SpamAssassin, aby použil tyto tři programy. Upravte /etc/spamassassin/local.cf a přidejte do něj následující řádky:
vi /etc/spamassassin/local.cf
[...]# dccuse_dcc 1dcc_path /usr/bin/dccprocdcc_add_header 1dcc_dccifd_path /usr/sbin/dccifd#pyzoruse_pyzor 1pyzor_path /usr/bin/dpyzorheadzor_ad #razoruse_razor2 1razor_config /etc/razor/razor-agent.conf#bayesuse_bayes 1use_bayes_rules 1bayes_auto_learn 1 |
Poté restartujte amavisd-new:
/etc/init.d/amavis restart
11 oznámení o překročení kvóty
Pokud chcete dostávat oznámení o všech e-mailových účtech, které překročily kvótu, postupujte takto:
cd /usr/local/sbin/
wget http://puuhis.net/vhcs/quota.txt
mv kvóta.txt kvóta_notify
chmod 755 kvóta_notify
Otevřete /usr/local/sbin/quota_notify a upravte proměnné nahoře. Dále v souboru (směrem ke konci) jsou dva řádky, kam byste měli přidat znak %:
vi /usr/local/sbin/quota_notify
[...]můj $POSTFIX_CF ="/etc/postfix/main.cf";můj $MAILPROG ="/usr/sbin/sendmail -t";my $WARNPERCENT =80;my @POSTASTERS =('[e-mail chráněný]');my $CONAME ='Moje společnost';my $COADDR ='[e-mail chráněný]';můj $SUADDR ='[e-mail protected]';moje $MAIL_REPORT =1;moje $MAIL_WARNING =1;[...] print "Předmět:VAROVÁNÍ:Vaše poštovní schránka je $lusers{$luser} % plná.\n";[...] tisk " Vaše poštovní schránka:$luser je $lusers{$luser} % plná.\n\n";[...] |
Spustit
crontab -e
pro vytvoření úlohy cron pro tento skript:
0 0 * * * /usr/local/sbin/quota_notify &> /dev/null |
(Poznámka (trochu mimo téma):na Ubuntu crontab -e automaticky otevře editor nano. Pokud jste zvyklí pracovat s editorem vi (jako já), spusťte následující příkazy:
rm -f /etc/alternatives/editor
ln -s /usr/bin/vi /etc/alternatives/editor
Poté spusťte crontab -e a objeví se vi.)
12 Test Postfix
Chcete-li zjistit, zda je Postfix připraven na SMTP-AUTH a TLS, spusťte
telnet localhost 25
Po navázání připojení k vašemu poštovnímu serveru Postfix typu
ehlo localhost
Pokud vidíte čáry
250 STARTTLS
a
250-AUTH
vše je v pořádku:
[email protected]:/usr/local/sbin# telnet localhost 25
Zkouším 127.0.0.1...
Připojeno k localhost.localdomain.
Escape znak je '^]'.
220 server1.example.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-VELIKOST 10240000
250 -VRFY
250-ETRN
250-STARTTLS
250-AUTH PLÁN PŘIHLÁŠENÍ
250-AUTH=PLÁN PŘIHLÁŠENÍ
250-ZLEPŠENÉ STAVOVÉ KÓDY
250-8BITMIME
250 DSN
ukončit
221 2.0.0 Nashledanou
Spojení uzavřeno zahraničním hostitelem.
[e-mail chráněn]:/usr/local/sbin#
Typ
ukončit
pro návrat do systémového prostředí.
13 Naplnění databáze a test
K naplnění databáze můžete použít shell MySQL:
mysql -u root -p
USE mail;
Alespoň musíte vytvořit záznamy v tabulkách domény a uživatelé :
INSERT INTO `domains` (`doména`) VALUES ('example.com');
INSERT INTO `users` (`e-mail`, `heslo`, `kvóta`) VALUES ('[e-mail chráněný]', ENCRYPT('tajné'), 10485760);
(Pro zašifrování hesla dejte pozor, abyste použili syntaxi ENCRYPT ve druhém příkazu INSERT!)
Pokud chcete provést záznamy v dalších dvou tabulkách, vypadalo by to takto:
INSERT INTO `forwarding` (`source`, `destination`) VALUES ('[email protected]', '[email protected]');
INSERT INTO `transport` (`doména`, `transport`) VALUES ('example.com', 'smtp:mail.example.com');
Chcete-li opustit prostředí MySQL, napište
ukončit;
Pro většinu lidí je jednodušší, když mají grafický front-end k MySQL; proto můžete také použít phpMyAdmin (v tomto příkladu pod http://192.168.0.100/phpmyadmin/ nebo http://server1.example.com/phpmyadmin/) pro správu mailu databáze. Znovu, když vytváříte uživatele, ujistěte se, že k zašifrování hesla používáte funkci ENCRYPT:
Nemyslím si, že musím dále vysvětlovat tabulku domén a uživatelů.
Tabulka přesměrování může obsahovat následující položky:
zdroj | cíl | |
[e-mail chráněn] | [e-mail chráněn] | Přesměruje e-maily pro [email protected] na [email protected] |
@example.com | [e-mail chráněn] | Vytvoří účet Catch-All pro [chráněno e-mailem] Všechny e-maily na example.com dorazí na adresu [chráněno e-mailem], kromě těch, které existují v tabulce uživatelů (tj. pokud [chráněno e-mailem] v v tabulce uživatelů, e-maily na [e-mail chráněno] budou stále docházet na [e-mail chráněný]). |
@example.com | @jinadomena.tld | Toto přesměruje všechny e-maily na example.com na stejného uživatele v otherdomain.tld. Např. e-maily na adresu [email protected] budou přeposlány na adresu [email protected] |
[e-mail chráněn] | [e-mail chráněn], [e-mail chráněn] | Přeposílejte e-maily pro [e-mail chráněný] na dvě nebo více e-mailových adres. Všechny uvedené e-mailové adresy v cíli obdrží kopii e-mailu. |
Transportní tabulka může mít položky jako tyto:
doména | doprava | |
example.com | : | Doručuje e-maily pro example.com lokálně. Jako by tento záznam v této tabulce vůbec neexistoval. |
example.com | smtp:mail.jinadomena.tld | Doručuje všechny e-maily pro example.com přes smtp na server mail.anotherdomain.com. |
example.com | smtp:mail.anotherdomain.tld:2025 | Doručuje všechny e-maily pro example.com přes smtp na server mail.anotherdomain.com, ale na portu 2025, nikoli 25, což je výchozí port pro smtp. |
example.com |
smtp:[1.2.3.4] | Hranaté závorky brání Postfixu ve vyhledávání MX DNS záznamu pro adresu v hranatých závorkách. Má smysl pro IP adresy. |
.example.com | smtp:mail.jinadomena.tld | Pošta pro libovolnou subdoménu example.com je doručována na mail.anotherdomain.tld. |
* | smtp:mail.anotherdomain.tld | Všechny e-maily jsou doručovány na mail.anotherdomain.tld. |
[email protected] | smtp:mail.anotherdomain.tld | Emails for [email protected] are delivered to mail.anotherdomain.tld. |
See
man transport
Více podrobností.
Please keep in mind that the order of entries in the transport table is important! The entries will be followed from the top to the bottom.
Important: Postfix uses a caching mechanism for the transports, therefore it might take a while until you changes in the transport table take effect. If you want them to take effect immediately, run
postfix reload
after you have made your changes in the transport table.
14 References
- Tutorial:ISP-style Email Service with Debian-Sarge and Postfix 2.1:http://workaround.org/articles/ispmail-sarge/
- Postfix + Quota:http://vhcs.net/new/modules/newbb/viewtopic.php?topic_id=3496&forum=17
- Mail Passwords Encrypted using saslauthd:http://www.syscp.de/docs/public/contrib/cryptedmailpws
15 Links
- Postfix MTA:http://www.postfix.org/
- Postfix Quota Patch:http://web.onda.com.br/nadal/
- phpMyAdmin:http://www.phpmyadmin.net/
- Ubuntu:http://www.ubuntu.com/