GNU/Linux >> Znalost Linux >  >> Ubuntu

Virtuální uživatelé a domény s Postfixem, Courier a MySQL (Ubuntu 6.10 Edgy Eft)

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 5 

cd /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 yourrootsqlpassword

Nyní vytvoříme databázi s názvem mail:

mysqladmin -u root -p vytvořit poštu

Dále přejdeme do prostředí MySQL:

mysql -u root -p

V 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).

e-mail 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]
smtp:[1.2.3.4]:2025
smtp:[mail.anotherdomain.tld]

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

  • 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/

Ubuntu
  1. Virtuální uživatelé a domény s Postfixem, Courier, MySQL a SquirrelMail (Ubuntu 14.04LTS)

  2. Virtuální uživatelé a domény s Postfixem, Courier, MySQL a SquirrelMail (Ubuntu 13.10)

  3. Virtuální uživatelé a domény se Sendmailem

  1. Virtuální hosting s Proftpd a MySQL (včetně kvóty) na Ubuntu 14.04LTS

  2. Výukový program serveru Ubuntu 16.04 (LTS) LAMP s Apache, PHP 7 a MySQL

  3. Poštovní server s virtuálními uživateli a doménami využívajícími Postfix a Dovecot na CentOS 6 VPS

  1. Virtuální uživatelé a domény s Postfixem, Courier, MySQL a SquirrelMail (Ubuntu 8.04 LTS)

  2. Virtuální hosting s Proftpd a MySQL (včetně kvóty) na Ubuntu 8.04 LTS

  3. Virtuální uživatelé a domény s Postfixem, Courier, MySQL a SquirrelMail (Ubuntu 8.10)