GNU/Linux >> Znalost Linux >  >> Debian

Virtuální uživatelé a domény s Postfixem, Courier, MySQL a SquirrelMail (Debian Wheezy)

Tento návod je chráněn autorským právem (c) 2013 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 Postfix, 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 spam a viry. Také ukážu, jak nainstalovat SquirrelMail jako rozhraní webové pošty, aby uživatelé mohli číst a odesílat e-maily a měnit svá hesla.

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 Debian Wheezy, takže před pokračováním v tomto kurzu byste měli nastavit základní instalaci serveru Debian Wheezy. 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.

Je velmi důležité, abyste z /bin/sh udělali symbolický odkaz na /bin/bash...

dpkg-reconfigure dash

Použít pomlčku jako výchozí systémové prostředí (/bin/sh)? <-- Ne

... a že deaktivujete AppArmor:

/etc/init.d/apparmor stop 
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

 

2 Instalace Postfix, Courier, Saslauthd, MySQL, phpMyAdmin

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-modulssl2 libsasl2- libsasl2-modules-sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass

Budete požádáni o několik otázek:

Obecný typ konfigurace pošty:<-- Internetová stránka
Jméno systémové pošty:<-- server1.example.com
Nové heslo pro uživatele "root" MySQL:<-- yourrootsqlpassword
Opakujte heslo pro uživatele "root" MySQL:<-- yourrootsqlpassword
Vytvořit adresáře pro webovou administraci? <-- Ne
SSL certifikát vyžadován <-- OK
Webový server se překonfiguruje automaticky:<-- apache2
Nakonfigurovat databázi pro phpmyadmin pomocí dbconfig-common? <-- Ne

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 build-dep postfix
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.9.6. Verzi Postfixu můžete zjistit spuštěním

postconf -d | grep mail_version

Výstup by měl vypadat takto:

[e-mail chráněný]:/usr/src# postconf -d | grep mail_version
mail_version =2.9.6
milter_macro_v =$mail_name $mail_version
[e-mail chráněný]:/usr/src#

)

wget http://vda.sourceforge.net/VDA/postfix-vda-v11-2.9.6.patch
cd postfix-2.9.6
patch -p1 <../postfix- vda-v11-2.9.6.patch

Dále otevřete debian/rules a změňte DEB_BUILD_HARDENING z 1 na 0:

vi debian/rules
[...]export DEB_BUILD_HARDENING=0[...]

Pokud to neuděláte, vaše sestavení se nezdaří s následujícími chybovými zprávami:

maildir.c:Ve funkci âdeliver_maildirâ:
maildir.c:974:17:chyba:formát není řetězcový literál a žádné argumenty formátu [-Werror=format-security]
maildir.c:977:17:error:formát není řetězcový literál a žádné argumenty formátu [-Werror=format-security]
maildir.c:983:17:error:formát není řetězcový literál a žádné argumenty formátu [-Werror=format-security]
maildir.c:986:17:chyba:formát není řetězcový literál a žádné argumenty formátu [-Werror=format-security]
maildir.c:Ve funkci âsql2fileâ:
maildir.c:404:25:varování:ignorování návratové hodnoty âreadâ, deklarované pomocí atributu warning_unused_result [-Wunused-result]
maildir.c:417:26:varování:ignorování návratové hodnoty âwriteâ, deklarované s atributem alert_unused_result [-Wunused-result]
cc1:některá varování jsou považována za chyby
make:*** [maildir.o] Chyba 1
make:Opuštění adresáře `/usr/src/postfix -2.9.3/src/virtual'
make[1]:*** [aktualizace] Chyba 1
make[1]:Opuštění adresáře `/usr/src/po stfix-2.9.3'
make:*** [build] Chyba 2
dpkg-buildpackage:error:debian/rules build poskytlo chybu stav ukončení 2
[email protected]:/usr /src/postfix-2.9.3#

Nyní můžeme sestavit nové balíčky Postfix .deb:

dpkg-buildpackage

Nyní přejdeme o jeden adresář výše, tam byly vytvořeny nové balíčky .deb:

cd ..

Příkaz

ls -l

zobrazí dostupné balíčky:

[e-mail chráněný]:/usr/src# ls -l
celkem 8400
drwxr-xr-x  4 kořenový kořen    4096 May  7 01:24 linux-headers-3.2.0-4- amd64
drwxr-xr-x  4 kořenový kořen    4096 Květen  7 01:24 linux-headers-3.2.0-4-common
lrwxrwxrwx  1 kořen d-3 . > il J- x -213 lin J- x - 213 lin ./lib/linux-kbuild-3.2
drwxr-xr-x 18 kořenový kořen    4096 1. července 21:13 postfix-2.9.6
-rw-r--r--  1 kořen 61 J 35 1 21:13 postfix_2.9.6-2_amd64.changes
-rw-r--r--  1 kořen 1529980 1. července   21:13 postfix_2.9.6-2_amd64.deb-rw-rw r--  1 kořen kořen  254432 Červec  1 21:12 postfix_2.9.6-2.diff.gz
-rw-r--r--  1 kořen kořen     1492 Čvc d 1 21:19. postfix 6. c_21:19
-rw-r--r--  1 kořen 3767309 11. března 15:03 postfix_2.9.6.orig.tar.gz
-rw-r--r--  1 kořen  255470 1. července 21:13 postfix-cdb_2.9.6-2_amd64.deb
-rw-r--r--  1 kořenový kořen  367774 1. července   1 21:13 postfix-dev_2.9.6-2_all.deb-br />-rw r--r--  1 kořen 1294258 1. července 21:13 postfix-doc_2.9.6-2_all.deb
-rw-r--r--  1 kořenový kořen  264196 1. července 21:13 postfix-ldap_2.9.6-2_amd64.deb
-rw-r--r--  1 kořenový kořen  257322 1. července 21:13 4defix-ambr.66 />-rw-r--r--  1 kořenový kořen  257376 1. července 21:13 postfix-pcre_2.9.6-2_amd64.deb
-rw-r--r--  1 1 kořen   257416 21. července 13 postfix-pgsql_2.9.6-2_amd64.deb
-rw-r--r--  1 kořenový kořen   55009 7. května 08:47 postfix-vda-v11-2.9.6.patchdrwxr -x  7 root root    4096 May  7 01:24 virtualbox-guest-4.1.18
[e-mail chráněný]:/usr/src#

Vyberte balíčky postfix a postfix-mysql a nainstalujte je takto:

dpkg -i postfix_2.9.6-2_amd64.deb postfix-mysql_2.9.6-2_amd64.deb

4 Vytvoření databáze MySQL pro Postfix/Courier

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:

 UDĚLEJTE VÝBĚR, INSERT, AKTUALIZUJTE, DELETE NA e-mailu.* TOMU 'mail_admin'@'localhost' IDENTIFIKOVANÉ PODLE 'mail_admin_password';
UDĚLEJTE SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@ 'localhost.localdomain' IDENTIFIKOVÁNO OD 'mail_admin_password';
FLUSH PRIVILEGES;

Stále v prostředí MySQL vytváříme tabulky potřebné pro Postfix a Courier:

POUŽÍVEJTE poštu;
VYTVOŘTE TABULE domén (
doména varchar(50) NOT NULL,
PRIMÁRNÍ KLÍČ (doména) )
ENGINE=MyISAM;
CREATE TABLE přesměrování (
zdroj varchar(80) NOT NULL,
cílový TEXT NENÍ NULL,
PRIMÁRNÍ KLÍČ (zdroj) )
ENGINE=MyISAM;
Uživatelé CREATE TABLE (
e-mail varchar(80) NOT NULL,
heslo varchar(20) NOT NULL,
kvóta INT(10) DEFAULT '10485760',
PRIMÁRNÍ KEY (e-mail)
) ENGINE=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)
> ENGINE=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žijete 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
[...]# Místo přeskočení sítě je nyní výchozím nastavením poslouchat pouze na # localhost, který je více kompatibilní a není méně bezpečný. 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 | grep mysql

abyste se ujistili, že MySQL naslouchá na 127.0.0.1 (localhost.localdomain):

[e-mail chráněn]:/usr/src# netstat -tap | grep mysql
tcp         0      0 localhost.localdo:mysql *:*                       POSLECHNOUT       3895/mysqld
:/e-mail

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. cf'
postconf -e 'virtual_mailbox_domains =proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
postconf -e 'virtual_mailbox_maps =proxy:mysql:/etc/postfix/mysql-virtu. cf'
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_sasl_authenticated_header =yes'
postconf -e 'smttredpt_my =
postconf -e 'smttredtic_my> příspěvek conf -e 'smtpd_use_tls =yes'
postconf -e 'smtpd_tls_cert_file =/etc/postfix/smtpd.cert'
postconf -e 'smtpd_tls_key_file =/etc/postfixkey' /smtpd> postconf -e 'transport_maps =proxy:mysql:/etc/postfix/mysql-virtual_transports.cf'
postconf -e 'virtual_maildir_extended =yes'
postconf -e 'virtual_mailbox_limit_maps =proxy:mysql postfix/mysql-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 =yes'
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

Název země (2 písmenný kód) [AU]:<-- Zadejte název země (např. „DE“).
Název státu nebo provincie (celý název) [Některý stát]:<-- Zadejte svůj stát nebo název provincie.
Název lokality (např. město) []:<-- Zadejte své město.
Název organizace (např. společnost) [Internet Widgits Pty Ltd]:<-- Zadejte název organizace (např. název vaší společnosti).
Název organizační jednotky (např. sekce) []:<-- Zadejte název organizační jednotky (např. „IT oddělení“).
Běžný název (např. VAŠE jméno) []:<-- Zadejte plně kvalifikovaný název domény systému (např. "server1.example.com").
E-mailová adresa []:<-- 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. Nastavte START na yes a změňte řádek OPTIONS="-c -m /var/run/saslauthd" na OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r":

vi /etc/default/saslauthd
## Nastavení pro démona saslauthd# Podrobnosti naleznete v /usr/share/doc/sasl2-bin/README.Debian.## Měl by se saslauthd spustit automaticky při startu? (výchozí:ne)START=ano# Popis této instance saslauthd. Doporučeno.# (návrh:SASL Authentication Daemon)DESC="SASL Authentication Daemon"# Krátký název této instance saslauthd. Důrazně doporučujeme.# (suggestion:saslauthd)NAME="saslauthd"# Jaké autentizační mechanismy by měl saslauthd používat? (výchozí:pam)## Dostupné možnosti v tomto balíčku Debian:# getpwent -- použijte funkci knihovny getpwent() # kerberos5 -- použijte Kerberos 5# pam -- použijte PAM# rimap -- použijte vzdálený IMAP server# shadow - - použijte soubor lokálního stínového hesla# sasldb -- použijte soubor místní databáze sasldb# ldap -- použijte LDAP (konfigurace je v /etc/saslauthd.conf)## V jednu chvíli lze použít pouze jednu možnost. Další informace najdete na manuálové stránce saslauthd#.## Příklad:MECHANISMS="pam"MECHANISMS="pam"# Další možnosti pro tento mechanismus. (výchozí:none)# Informace o možnostech specifických pro mecha najdete na manuálové stránce saslauthd.MECH_OPTIONS=""# Kolik procesů saslauthd máme spustit? (výchozí:5)# Hodnota 0 rozvětví nový proces pro každé připojení.THREADS=5# Další možnosti (výchozí:-c -m /var/run/saslauthd)# Poznámka:MUSÍTE zadat volbu -m nebo saslauthd se nespustí!## VAROVÁNÍ:NEZADÁVEJTE VOLBU -d.# Volba -d způsobí, že saslauthd poběží v popředí místo jako# démona. TAK ZABRÁNÍ VÁŠMU SYSTÉMU V ŘÁDNÉM SPOUŠTĚNÍ. Pokud si přejete# spustit saslauthd v režimu ladění, spusťte jej pro jistotu ručně.## Informace specifické pro Debian najdete v /usr/share/doc/sasl2-bin/README.Debian.# Viz manuálová stránka saslauthd a výstup 'saslauthd -h' pro obecné# informace o těchto volbách.## Příklad pro uživatele Postfixu chroot:"-c -m /var/spool/postfix/var/run/saslauthd"# Příklad pro uživatele Postfixu bez chrootu :"-c -m /var/run/saslauthd"## Chcete-li vědět, zda váš Postfix běží chroot, zkontrolujte /etc/postfix/master.cf.# Pokud má řádek "smtp inet n - y - - smtpd" nebo "smtp inet n - - - - smtpd"# pak váš Postfix běží v chrootu.# Pokud má řádek "smtp inet n - n - - smtpd", váš Postfix NENÍ# spuštěn v chrootu.#OPTIONS ="-c -m /var/run/saslauthd"OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

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:sqlsql_engine:mysqlsql_hostnames:127.0.0.1sql_user:heslo_uživatele mailql_select_mail:mail_adminsql:heslo_mail_adminsql:heslo '%[email protected]%r'

Dále přidejte uživatele postfixu do skupiny sasl (tím zajistíte, že Postfix má oprávnění pro přístup k saslauthd):

adduser postfix sasl

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

Během instalace se vytvoří certifikáty SSL pro IMAP-SSL a POP3-SSL s názvem hostitele localhost. Chcete-li toto změnit na správný název hostitele (server1.example.com v tomto návodu), odstraňte certifikáty...

cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

... a upravit následující dva soubory; nahraďte CN=localhost za CN=server1.example.com (v případě potřeby můžete upravit i ostatní hodnoty):

vi /etc/courier/imapd.cnf
[...]CN=server1.example.com[...]
vi /etc/courier/pop3d.cnf
[...]CN=server1.example.com[...]

Poté znovu vytvořte certifikáty...

mkimapdcert
mkpop3dcert

... a 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. (Zadáním příkazu quit se vrátíte zpět do prostředí Linuxu.)

[email protected]:/etc/courier# 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.
[e-mail chráněn]:/etc/courier#

8 Upravit /etc/aliases

Nyní bychom měli otevřít /etc/aliases. Ujistěte se, že postmaster odkazuje na root a root na vaše vlastní uživatelské jméno nebo vaši e-mailovou adresu, např. takhle:

vi /etc/aliases
[...]postmaster:rootroot:postmaster[e-mail chráněn][...]

nebo takto (pokud je správcem vaše vlastní uživatelské jméno):

[...]postmaster:rootroot:administrator[...]

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 rozbalte bzip2 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# Pamatujte, že antivirová kontrola je ve výchozím nastavení# VYPNUTA.# Pokud ji chcete povolit, odkomentujte prosím následující řádky:@bypass_virus_checks_maps =( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);## Výchozí Režim kontroly SPAMu# Upozorňujeme, že antispamová kontrola je ve výchozím nastavení# VYPNUTA.# Pokud ji chcete povolit, odkomentujte prosím následující řádky:@bypass_spam_checks_maps =( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam1_checks_re);; # zajistit definovanou návratnost

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";$quarantine_subdir_levels =1; # povolit karanténu dir hashing$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; # výchozí naslouchací 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á[...]$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
use strict;## Zde umístěte své konfigurační direktivy. Přepíší ty v# dřívějších souborech.## Dokumentaci a příklady# direktiv, které můžete použít v tomto souboru, najdete v /usr/share/doc/amavisd-new/#$pax='pax';#---- -------- Neupravujte nic pod tímto řádkem -------------1; # zajistit definovanou návratnost

Poté spusťte tyto příkazy a přidejte uživatele clamav do skupiny amavis a restartujte amavisd-new a ClamAV:

adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-freshclam restart
/etc/init.d/clamav-daemon 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 accept_override_options=no_unknown_recipient_checks,no_header_body_checks

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 chráněný]:/etc/courier# netstat -tap
Aktivní internetová připojení (servery a navázané)
Proto Recv-Q Send-Q Místní adresa           Zahraniční Adresa / Sta program         /> tcp 0 0*:http*:*Poslouchejte 6134/apache2
tcp 0 0*:ssh*:*poslouchejte 610/sshd
tcp 0 0*:smtp*:*poslouchejte 23128/master
TCP 0 0 localhost.localdo:10024*:*Poslouchejte 21937 /amavisd-new (
tcp 0 0 localhost.localdo:10025*:*Poslouchejte 23128 /master
tcp 0 0 localhost.localdo :mysql*:*Poslouchejte 4308 /mysqld
tcp 0 52 server1.example.com:ssh 192.168.0.206:57597 Zavedeno 976/0
tcp6 0 0 [::]:ssh [::]::*                   POSLOUCHEJTE      610/sshd
tcp6     0 0 [::]:SMTP [::]:*Poslouchejte 23128 /master
tcp6 0 0 [::]:imaps [::]:*Poslouchejte 18191 /coriertcpd
tcp6 0 0 0 [::]:pop3s [::]:*Poslouchejte 18259 /coriertcpd
tcp6 0 0 [::]:pop3 [::]:*Poslouchejte 18222 /couriertcpd
tcp6 0 0 [::]:imap2:imap2:imap2 [::]:*                  POSLOUCHEJTE       18154/couriertcpd
[e-mail chráněn]:/etc/courier#
 

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 nainstalovat Razor a Pyzor, spusťte

apt-get install razor pyzor

DCC není k dispozici v repozitářích Debian Wheezy, takže jej nainstalujeme následovně:

cd /tmp
wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z
tar xzvf dcc-dccproc.tar.Z
cd dcc-dccproc-1.3.147
./configure --with-uid=amavis
provést
provést instalaci
chown -R amavis:amavis /var/dcc
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifd

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/local/bin/dccproc#pyzoruse_pyzor 1pyzor_path /usr/bin/pyzor#razoruse_razor2 1razor_config /etc/ razor/razor-agent.conf#bayesuse_bayes 1use_bayes_rules 1bayes_auto_learn 1

Poté musíme povolit plugin DCC ve SpamAssassin. Otevřete /etc/spamassassin/v310.pre a odkomentujte loadplugin Mail::SpamAssassin::Plugin::DCC řádek:

vi /etc/spamassassin/v310.pre
[...]# DCC – provádět kontroly zpráv DCC.## DCC je zde zakázáno, protože se nejedná o open source. Další podrobnosti naleznete v licenci DCC#.#loadplugin Mail::SpamAssassin::Plugin::DCC[...]

Svou konfiguraci SpamAssassinu můžete zkontrolovat spuštěním:

spamassassin --lint

Neměl by ukazovat žádné chyby.

Poté restartujte amavisd-new:

/etc/init.d/amavis restart

Nyní aktualizujeme naše sady pravidel SpamAssassin takto:

sa-update --no-gpg

Vytváříme úlohu cron, aby se sady pravidel pravidelně aktualizovaly. Spustit

crontab -e

otevřete editor úloh cron. Vytvořte následující úlohu cron:

23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null

Tím se aktualizují sady pravidel každý druhý den ve 4:23.

11 oznámení o překročení kvóty

Pokud chcete dostávat upozornění o všech e-mailových účtech, které překračují kvótu, vytvořte soubor /usr/local/sbin/quota_notify:

cd /usr/local/sbin/
vi kvóta_notify
#!/usr/bin/perl -w# Autor <[chráněný e-mailem]>## Tento skript předpokládá, že báze virtual_mailbox_base je definována# v hlavním postfixu .cf soubor. Předpokládá se, že tento adresář obsahuje # adresáře, které samy obsahují poštovní adresáře vašeho virtuálního uživatele.# Například:## -----------/# |# |# home/vmail/domains/# | |# | |# example.com/ foo.com/# |# |# -----------------# | | |# | | |# user1/ user2/ user3/# |# |# maildirsize#use strict;my $POSTFIX_CF ="/etc/postfix/main.cf";my $MAILPROG ="/usr/sbin/sendmail -t";my $ WARNPERCENT =80;moje @POSTASTERS =('[e-mail chráněný]');my $CONAME ='Moje společnost';moje $COADDR ='[e-mail chráněný]';můj $SUADDR ='[e-mail chráněný]';moje $ MAIL_REPORT =1;moje $MAIL_WARNING =1;#získejte virtuální poštovní schránku z postfix configopen(PCF, "<$POSTFIX_CF") nebo zemřete $!;moje $mboxBase;zatímco () { next if /virtual_mailbox_base\s* =\s*(.*)\s*/; $mboxBase =$1;}close(PCF);#předpokládejme jednu úroveň podadresářů pro názvy doménmy @domains;opendir(DIR, $mboxBase) nebo zemřete $!;while (defined(my $name =readdir(DIR))) { další if $name =~ /^\.\.?$/; #přeskočit '.' a '..' další ledaže (-d "$mboxBase/$name"); push(@domains, $name);}closedir(DIR);#iterate přes domény pro uživatelské jméno/maildirsize souborymy @users;chdir($mboxBase);foreach my $domain (@domains) { opendir(DIR, $domain) nebo zemřít $!; while (defined(my $name =readdir(DIR))) { next if $name =~ /^\.\.?$/; #přeskočit '.' a '..' další ledaže (-d "$doména/$jméno"); push(@users, {"$name\@$domain" => "$mboxBase/$domain/$name"}); }}closedir(DIR);#získat uživatelské kvóty a procento použitých my (%lusers, $report);foreach my $href (@users) { foreach my $user (klíče %$href) { my $quotafile ="$href->{$user}/maildirsize"; další if (-f $kvótasoubor); open(QF, "<$kvótovaný soubor") nebo zemři $!; můj ($firstln, $kvóta, $použito); while () { my $line =$_; if (! $firstln) { $firstln =1; die "Chyba:poškozený soubor kvót $quotafile" ledaže ($line =~ /^(\d+)S/); $kvóta =$1; last if (! $kvóta); další; } die "Chyba:poškozený soubor kvót $quotafile" ledaže ($line =~ /\s*(-?\d+)/); $použito +=1 $; } close(QF); další if (! $used); moje $procenta =int($použito / $kvóta * 100); $lusers{$user} =$ procent, pokud ne $ procent; }#odeslat zprávu do postmastersif ($MAIL_REPORT) { open(MAIL, "| $MAILPROG"); vybrat(MAIL); mapa {tisk "Komu:$_\n"} @POSTASTERS; tisknout "Od:$COADDR\n"; tisknout "Předmět:Zpráva o denní kvótě.\n"; tisk "DENNÍ HLÁŠENÍ KVÓTY:\n\n"; tisknout "----------------------------------------------\n "; tisknout "| % VYUŽITÍ | NÁZEV ÚČTU |\n"; tisknout "----------------------------------------------\n "; foreach my $luser ( sort { $lusers{$b} <=> $lusers{$a} } klíče %lusers ) { printf("| %3d | %32s |\n", $lusers{$luser}, $ luser); tisknout "--------------------------------------------\n"; } tiskni "\n--\n"; vytisknout "$CONAME\n"; close(MAIL);#e-mail s varováním lidem nad kvótouif ($MAIL_WARNING) { foreach můj $luser (klíče (%lusers)) { další, pokud $lusers{$luser}>=$WARNPERCENT; # přeskočit ty pod kvótou otevřené (MAIL, "| $MAILPROG"); vybrat(MAIL); print "Komu:$luser\n"; mapa {tisk "BCC:$_\n"} @POSTASTERS; tisknout "Od:$SUADDR\n"; print "Předmět:VAROVÁNÍ:Vaše schránka je $lusers{$luser}% plná.\n"; print "Odpovědět:$SUADDR\n"; print "Vaše schránka:$luser je $lusers{$luser}% plná.\n\n"; tisknout "Jakmile vaše e-mailová schránka překročí měsíční kvótu úložiště\n"; tisknout "vaše měsíční vyúčtování bude automaticky upraveno.\n"; print "Zvažte prosím smazání e-mailu a vyprázdnění složky koše, abyste uvolnili místo.\n\n"; vytisknout "Kontaktujte <$SUADDR> pro další pomoc.\n\n"; tisknout "Děkuji.\n\n"; vytisknout "--\n"; vytisknout "$CONAME\n"; zavřít(MAIL); }}

Ujistěte se, že jste upravili proměnné nahoře (zejména e-mailovou adresu [chráněný e-mailem]).

Musíme soubor nastavit jako spustitelný:

chmod 755 kvóta_notify

Spustit

crontab -e

pro vytvoření úlohy cron pro tento skript:

0 0 * * * /usr/local/sbin/quota_notify &> /dev/null

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

PROSTÉ PŘIHLÁŠENÍ 250 AUTH

vše je v pořádku:

[email protected]:/usr/local/sbin# telnet localhost 25
Pokouším se o ::1...
Připojeno k localhost.localdomain.
Escape znak je '^]'.
220 server1.example.com ESMTP Postfix (Debian/GNU)
<-- ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
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
POUŽÍVEJTE poštu;

Alespoň musíte vytvořit záznamy v tabulkách domény a uživatelé :

INSERT INTO `domains` (`domain`) VALUES ('example.com');
INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('[e-mail chráněný ]', ENCRYPT('tajné'), 10485760);

(Dbejte prosím na to, abyste použili syntaxi ENCRYPT ve druhém příkazu INSERT za účelem zašifrování hesla!)

Pokud chcete provést záznamy v dalších dvou tabulkách, vypadalo by to takto:

VLOŽTE DO `přeposílání` (`zdroj`, `cíl`) VALUES ('[e-mail chráněný]', '[chráněn e-mailem]');
INSERT INTO `transport` (`doména`, `přeprava `) 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 adresu [email protected] budou stále docházet na adresu [email protected]).
@example.com @jinadomena.tld Toto přesměruje všechny e-maily na example.com na stejného uživatele v otherdomain.tld. 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ě. Je to, 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. Dává 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.jinadomena.tld Všechny e-maily jsou doručovány na mail.anotherdomain.tld.
[e-mail chráněn] smtp:mail.jinadomena.tld E-maily pro [email protected] jsou doručovány na mail.anotherdomain.tld.

Viz

přeprava osob

pro více podrobností.

Mějte prosím na paměti, že pořadí záznamů v přepravní tabulce je důležité! Položky budou sledovány shora dolů.

Důležité: Postfix používá pro přenosy mechanismus ukládání do mezipaměti, proto může chvíli trvat, než se změny v přenosové tabulce projeví. Pokud chcete, aby se projevily okamžitě, spusťte

znovu načtení postfixu

po provedení změn v transportní tabulce.

14 Odeslat uvítací e-mail pro vytvoření Maildir

Když si vytvoříte nový e-mailový účet a pokusíte se z něj načíst e-maily (pomocí POP3/IMAP), pravděpodobně se vám zobrazí chybové zprávy, že Maildir neexistuje. Maildir se vytvoří automaticky, když přijde první e-mail pro nový účet. Proto je dobré poslat uvítací e-mail na nový účet.

Nejprve nainstalujeme balíček mailx:

apt-get install mailutils

Chcete-li odeslat uvítací e-mail na adresu [email protected], provedeme toto:

mailx [e-mail chráněný]

Budete vyzváni k zadání předmětu. Zadejte předmět (např. Vítejte), stiskněte ENTER a na další řádek napište svou zprávu. Po dokončení zprávy stiskněte znovu ENTER, abyste byli na novém řádku, a stiskněte CTRL+D; pokud si nepřejete kopírovat e-mail, stiskněte znovu ENTER:

[email protected]:/usr/local/sbin# mailx [email protected]
Předmět:Vítejte <-- ENTER
Vítejte! Bavte se se svým novým e-mailovým účtem. <-- ENTER
<-- CTRL+D
Kopie:<-- ENTER
[e-mail chráněný]:/usr/local/sbin#

15 Instalace SquirrelMail

SquirrelMail je rozhraní webové pošty, které umožní vašim uživatelům odesílat a přijímat e-maily v prohlížeči. Tato kapitola ukazuje, jak jej nainstalovat a upravit podle našeho nastavení, aby uživatelé mohli dokonce změnit heslo svého e-mailového účtu z rozhraní SquirrelMail.

Chcete-li nainstalovat SquirrelMail, spustíme:

apt-get install squirrelmail squirrelmail-kompatibilita php-pear php-db

Dále symbolicky propojíme konfiguraci Apache, která je součástí balíčku SquirrelMail, do adresáře /etc/apache2/conf.d a restartujeme Apache:

ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf
/etc/init.d/apache2 restart

SquirrelMail je dodáván s některými předinstalovanými pluginy, bohužel žádný z nich nám neumožňuje změnit naše e-mailové heslo v naší databázi MySQL. Existuje však plugin Change SQL Password, který můžeme nainstalovat ručně:

cd /usr/share/squirrelmail/plugins
wget http://www.squirrelmail.org/plugins/change_sqlpass-3.3-1.2.tar.gz
tar xvfz change_sqlpass-3.3-1.2. tar.gz
cd change_sqlpass
cp config.php.sample config.php

Nyní musíme upravit config.php a upravit jej podle našeho nastavení. Upravte prosím proměnné $csp_dsn, $lookup_password_query, $password_update_queries, $password_encryption, $csp_salt_static a $csp_delimiter následovně a zakomentujte $csp_salt_query:

vi config.php
[...]$csp_dsn ='mysql://mail_admin:[e-mail chráněný]/mail';[...]$lookup_password_query ='SELECT count(*) FROM users WHERE email ="%1" AND password =%4';[...]$password_update_queries =array('UPDATE users SET password =%4 WHERE email ="%1"'); [...]$password_encryption ='MYSQLENCRYPT';[...]$csp_salt_static ='LEFT(heslo, 2)';[...]//$csp_salt_query ='VYBERTE sůl FROM uživatelů WHERE uživatelské jméno ="%1 "';[...]$csp_delimiter ='@';[...]

Kompletní soubor vypadá následovně:

 * 2002-2005 Paul Lesneiwski <[email protected]> * Tento program je licencován pod GPL. Podrobnosti viz KOPÍROVÁNÍ * * @package plugins * @subpackage Change SQL Password * */ // Global Variables, nedotýkejte se jich, pokud nechcete plugin rozbít // global $csp_dsn, $password_update_queries, $lookup_password_query, $force_change_password_check_query, $password_encryption, $csp_salt_query, $csp_salt_static, $csp_secure_port, $csp_non_standard_http_port, $csp_delimiter, $csp_debug, $min_password_length, $max_password_length, $include_digit_word_length, $include_digit_word_number_casepper_include_wordlude_word_numeric, $include_digit_in_word_numeric, $include_lude_word_password, $include_lude_word_wordu // csp_dsn // // Teoreticky by zde měla být podporována jakákoliv SQL databáze podporovaná Pearem. DSN (název zdroje dat) musí obsahovat informace potřebné // pro připojení k backendu vaší databáze. Níže je uveden příklad MySQL. // Další podrobnosti o syntaxi DSN a seznamu podporovaných typů databází // viz:// http://pear.php.net/manual/en/package.database.db.intro-dsn.php // / /$csp_dsn ='mysql://user:[e-mail chráněný]/email_users'; $csp_dsn ='mysql://mail_admin:[e-mail chráněný]/mail'; // lookup_password_query // // Tento plugin vždy ověří staré heslo uživatele // oproti jeho přihlašovacímu heslu, ale // lze také provést extra kontrolu proti databázi pro větší bezpečnost, pokud si // přejete. Pokud nepotřebujete další kontrolu hesla, // ujistěte se, že je toto nastavení prázdné. // // Toto je dotaz, který vrací kladnou hodnotu, pokud je v databázi nalezen pár uživatel // a heslo. // // Tento dotaz by měl vrátit jednu hodnotu (jeden řádek, jeden sloupec), přičemž // hodnota je ideálně jedna nebo nula, což jednoduše znamená, že // pár uživatel/heslo v databázi skutečně existuje. // // %1 v tomto dotazu bude nahrazeno úplným uživatelským jménem // (včetně domény), např. „[e-mail chráněno]“ // %2 v tomto dotazu bude nahrazeno uživatelským jménem (bez // jakékoli domény část), jako je "jose" // %3 v tomto dotazu bude nahrazeno názvem domény, // jako "example.com" // %4 v tomto dotazu bude nahrazeno aktuálním (starým) // heslo v jakémkoli formátu šifrování, který je potřeba pro jiná // konfigurační nastavení pluginu (Všimněte si, že syntaxe // hesla bude poskytnuta v závislosti na vašich volbách // šifrování, takže NIKDY nemusíte tuto // hodnotu v dotazu uvádět v uvozovkách zde.) // %5 v tomto dotazu bude nahrazeno aktuálním (starým) // heslem v nezašifrovaném prostém textu. Pokud nepoužijete žádné // šifrování hesla, %4 a %5 budou mít stejné hodnoty, // kromě %4 bude mít dvojité uvozovky a %5 ne. // //$lookup_password_query =''; // PŘÍŠERNÉ ZABEZPEČENÍ:$lookup_password_query ='SELECT count(*) FROM users WHERE username ="%1" AND plain_password ="%5"'; //$lookup_password_query ='SELECT count(*) FROM users WHERE username ="%1" AND crypt_password =%4'; $lookup_password_query ='SELECT počet(*) FROM uživatelů WHERE email ="%1" AND heslo =%4'; // password_update_queries // // Pole SQL dotazů, které budou všechny // provedeny při každém pokusu o změnu hesla. // // Zde může být zahrnut libovolný počet dotazů. // Dotazy budou provedeny ve zde uvedeném pořadí. // // %1 ve všech dotazech bude nahrazeno úplným uživatelským jménem // (včetně domény), například „[email protected]“ // %2 ve všech dotazech bude nahrazeno uživatelským jménem (bez // jakékoli domény část), jako je "jose" // %3 ve všech dotazech bude nahrazeno názvem domény, // jako "example.com" // %4 ve všech dotazech bude nahrazeno novým heslem // v čemkoli formát šifrování je nutný pro další // konfigurační nastavení pluginu (Všimněte si, že syntaxe // hesla bude poskytnuta v závislosti na vašich // volbách šifrování, takže NIKDY nemusíte uvádět // tuto hodnotu v dotazech zde.) // %5 ve všech dotazech bude nahrazeno novým heslem // v nezašifrovaném prostém textu - POZOR! Pokud nepoužijete // žádné šifrování hesla, %4 a %5 budou mít stejné // hodnoty, až na to, že %4 bude mít dvojité uvozovky // a %5 nikoli. //// $password_update_queries =array(// 'UPDATE username SET crypt_password =%4 WHERE username ="%1"',// 'UPDATE user_flags SET force_change_pwd =0 WHERE username ="%1"',// 'UPDATE user SET crypt_password =%4, force_change_pwd =0 WHERE username ="%1"',// ); $password_update_queries =array('AKTUALIZACE NASTAVENÍ hesla uživatelů =%4 WHERE email ="%1"'); // force_change_password_check_query // // Dotaz, který kontroluje příznak, který indikuje, zda by uživatel // měl být nucen změnit své heslo. Tento dotaz // by měl vrátit jednu hodnotu (jeden řádek, jeden sloupec), která je // nula, pokud uživatel NEPOTŘEBUJE měnit své heslo, // nebo jedna, pokud by uživatel měl být nucen jej změnit nyní. // // Toto nastavení by mělo být prázdný řetězec, pokud si nepřejete // povolit tuto funkci. // // %1 v tomto dotazu bude nahrazeno úplným uživatelským jménem // (včetně domény), např. „[e-mail chráněno]“ // %2 v tomto dotazu bude nahrazeno uživatelským jménem (bez // jakékoli domény část), jako je "jose" // %3 v tomto dotazu bude nahrazeno názvem domény, // jako "example.com" // //$force_change_password_check_query ='SELECT IF(force_change_pwd ="yes", 1 , 0) FROM users WHERE username ="%1"'; //$force_change_password_check_query ='SELECT force_change_pwd FROM users WHERE username ="%1"'; $force_change_password_check_query =''; // password_encryption // // Jakou metodu šifrování používáte k ukládání hesel // ve vaší databázi? Použijte prosím jedno z následujících, // přesně tak, jak to vidíte:// // ŽÁDNÉ Hesla jsou uložena pouze jako prostý text // MYSQLPWD Hesla se ukládají pomocí funkce MySQL password() // MYSQLENCRYPT Hesla se ukládají pomocí šifrování MySQL () function // PHPCRYPT Hesla jsou uložena pomocí funkce PHP crypt() // MD5CRYPT Hesla jsou uložena pomocí šifrovaného algoritmu MD5 // Hesla MD5 jsou uložena jako MD5 hash // //$password_encryption ='MYSQLPWD'; $password_encryption ='MYSQLENCRYPT'; // csp_salt_query // csp_salt_static // // Typy šifrování, které potřebují sůl, potřebují vědět, kde // tuto sůl získat. Pokud máte konstantní, známou hodnotu soli, // byste ji měli definovat v $csp_salt_static. V opačném případě ponechte tuto // hodnotu prázdnou a definujte hodnotu pro $csp_salt_query. // // Nechte obě hodnoty prázdné, pokud nepotřebujete (nebo nepoužíváte) soli // k šifrování svých hesel. // // Dotaz by měl vrátit jednu hodnotu (jeden řádek, jeden sloupec), což // je hodnota salt pro heslo aktuálního uživatele. Tento // dotaz je ignorován, pokud $csp_salt_static není prázdný. // // %1 v tomto dotazu bude nahrazeno úplným uživatelským jménem // (včetně domény), např. „[e-mail chráněno]“ // %2 v tomto dotazu bude nahrazeno uživatelským jménem (bez // jakékoli domény část), jako je "jose" // %3 v tomto dotazu bude nahrazeno názvem domény, // jako "example.com" // //$csp_salt_static ='LEFT(crypt_password, 2)'; //$csp_salt_static ='"a4"'; // použijte tento formát s MYSQLENCRYPT //$csp_salt_static ='$2$blowsomefish$'; // použijte tento formát s PHPCRYPT //$csp_salt_static =''; $csp_salt_static ='LEFT(heslo, 2)'; //$csp_salt_query ='SELECT SUBSTRING_INDEX(crypt_password, '$', 1) FROM users WHERE username ="%1"'; //$csp_salt_query ='SELECT SUBSTRING(crypt_password, (LENGTH(SUBSTRING_INDEX(crypt_password, '$', 2)) + 2)) FROM users WHERE username ="%1"'; //$csp_salt_query ='VYBERTE sůl FROM uživatelů WHERE username ="%1"'; //$csp_salt_query =''; // csp_secure_port // // Můžete zajistit, aby se při změně hesla // hesla použilo šifrování SSL, a to nastavením na port, na kterém je // obsluhován váš HTTPS (typicky 443). Nastavte na nulu, pokud nechcete // vynutit připojení HTTPS, když uživatelé mění svá hesla. // // Tuto hodnotu můžete u určitých domén, uživatelů nebo // úrovní služeb přepsat pomocí pluginu Virtual Host Login (vlogin) // nastavením hodnoty (hodnot) pro $vlogin_csp_secure_port v // konfiguraci vlogin. // $csp_secure_port =0; //$csp_secure_port =443; // csp_non_standard_http_port // // Pokud obsluhujete standardní webové požadavky HTTP na nestandardním // portu (jakýkoli jiný než port 80), měli byste zde zadat toto // číslo portu. V opačném případě nastavte na nulu. // // Tuto hodnotu můžete u určitých domén, uživatelů nebo // úrovní služeb přepsat pomocí pluginu Virtual Host Login (vlogin) // nastavením hodnoty (hodnot) pro $vlogin_csp_non_standard_http_port // v konfiguraci vlogin. // //$csp_non_standard_http_port =8080; $csp_non_standard_http_port =0; // min_password_length // max_password_length // include_digit_in_password // include_uppercase_letter_in_password // include_lowercase_letter_in_password // include_nonalphanumeric_in_password // // Můžete nastavit minimální a maximální délky hesla, které // akceptujete, nebo ponechte tato nastavení na nulu, abyste // neměli žádný limit být aplikován. // // Zde zapněte jakékoli další nastavení, abyste zkontrolovali, že // nové heslo obsahuje alespoň jednu číslici, velké písmeno, // malé písmeno a/nebo jeden nealfanumerický znak. // $min_password_length =6; $max_password_length =0; $include_digit_in_password =0; $include_uppercase_letter_in_password =0; $include_lowercase_letter_in_password =0; $include_nonalphanumeric_in_password =0; // csp_delimiter // // pokud má váš systém uživatelská jména s něčím jiným než // znakem "@" oddělujícím část uživatele a domény, // zadejte tento znak zde // //$csp_delimiter ='|'; $csp_delimiter ='@'; // režim ladění // $csp_debug =0;?>

Nyní musíme přejít do konfigurace SquirrelMail a říci SquirrelMail, že používáme Courier jako náš server POP3 a IMAP a povolit Change SQL Password a Compatibility plugins:

/usr/sbin/squirrelmail-configure

Zobrazí se následující nabídka. Procházejte ji, jak je uvedeno:

Konfigurace SquirrelMail : Přečtěte si: config.php (1.4.0)
--------------------------------- ------------------------
Hlavní nabídka --
1. Předvolby organizace
2. Nastavení serveru
3. Výchozí složky
4. Obecné možnosti
5. Témata
6. Adresáře
7. Zpráva dne (MOTD)
8. Pluginy
9. Databáze
10. Jazyky

D. Nastavit předdefinovaná nastavení pro konkrétní IMAP servery

C   Zapnout barvu
S   Uložit data
Q   Ukončit

Příkaz >> <-- D


Konfigurace SquirrelMail : Přečtěte si: config.php
---------------------------- ------------------------------
Zatímco budujeme SquirrelMail , objevili jsme některé 
předvolby které fungují lépe s některými servery, které nefungují tak
dobře s jinými. Pokud vyberete svůj IMAP server, tato možnost 
nastaví některá předdefinovaná nastavení pro tento server.

Upozorňujeme, že budete stále musíte procházet a ujistit se
vždy je správně. To nemění všechno. Existuje 
pouze několik nastavení , která to se změní.

Vyberte svůj IMAP server:
    bincimap    = Binc IMAP server
   < kurýr      = server AP Kurier> Cyrus =Cyrus IMAP Server
Dovecot =Dovecot Secure IMAP Server
Exchange =Microsoft Exchange Server
HmailServer =HmailServer
Macosx =Mac OS X MailServer
Mercury32 =Merkur /32
    uw          = Server IMAP Univerzita Washingtonu
    gmail        = Přístup IMAP k účtům Google mail (Gmail) změňte a nedělejte nic 
    nic = <  >     >                   - Courier


imap_server_type =Courier
default_folder_prefix =inbox.>            show_prefix_option = false
          default_sub_of_inbox = false
show_contain_subfo lders_option = false
            optional_delimiter = .
                  delete_folder = true

Stisknutím enter pokračujte... <-- stiskněte ENTER /


Konfigurace : Přečtěte si: config.php (1.4.0)
---------------------------------- ------------------------
Hlavní nabídka --
1. Předvolby organizace
2. Nastavení serveru
3. Výchozí složky
4. Obecné možnosti
5. Témata
6. Adresáře
7. Zpráva dne (MOTD)
8. Pluginy
9. Databáze
10. Jazyky

D. Nastavit předdefinovaná nastavení pro konkrétní IMAP servery

C   Zapnout barvu
S   Uložit data
Q   Ukončit

Příkaz >> <-- 8


Konfigurace SquirrelMail : Přečtěte si: config.php (1.4.0)
---------------------- -----------------------------------
Pluginy
  Nainstalované pluginy
1. view_as_html

  Dostupné pluginy:
     2. administrátor
     3. bug_report
    4. kalendář
     5. změna  compat 6 br />    7. delete_move_next
    8. ukázka
     9. filtry
     10. bohatství
     11. informace
     12. mail_ příkazy seznamu chv
   13.    />    14. podrobnosti_zprávy
    15. nová pošta
     16. podsložky_odeslané
     17. spamcop
    18. pravopis veverky
      /19.  test>
R   Zpět do hlavní nabídky
C   Zapnout barvu 
S   Uložit data
Q   Ukončit

Příkaz >> <-- 6 (nebo jakékoli číslo plugin pro kompatibilitu má - je to n eded by the change_sqlpass plugin)


SquirrelMail Configuration : Přečtěte si: config.php (1.4.0)
--------------- -------------------------------------------
Pluginy
  Nainstalované pluginy
    1. view_as_html
    2. kompatibilita

  Dostupné pluginy:
     3. administrátor
    4.< bug_report 5 />  en br />    6. change_sqlpass
    7. delete_move_next
     8. ukázka
     9. filtry
     10. seznam bohatství
    11. < informace
   />    13. načtení_mailu
     14. podrobnosti_zprávy
     15. nová pošta
    16. podsložky_odeslané
    17. spamcop
     l 18.  br/1>>    20. přeložit

R   Zpět do hlavní nabídky
C   Zapnout barvu 
S   Uložit data
Q   Ukončit

Příkaz >> <-- 6 (číslo pluginu change_sqlpass)


Konfigurace SquirrelMail : Přečtěte si: config.php (1.4.0)
---------- --------------------------------- --------------
Pluginy
  Nainstalované pluginy
    1. view_as_html
     2. kompatibilita
    3. change_sqlpass

  Dostupné pluginy:
    4. administrátor
    5. hlášení o chybách
    6. kalendář
    7. delete_move_next
     8. ukázka 9.   br />    10. štěstí
     11. informace
     12. příkazy seznamu
     13. mail_fetch
     14. podrobnosti_zpráv
  <  15. položky newmail
/>    17. spamcop
    18. squirrelspell
    19. test
    20. přeložit

R   Zpět do hlavní nabídky
C   Zapnout/zapnout barvu >S   Uložit data
Q   Ukončit

Příkaz >> <-- S


Konfigurace SquirrelMail : Přečtěte si: config.php (1.4.0)
---------------------------------------------- -----------
Pluginy
  Nainstalované pluginy
    1. view_as_html
    2. kompatibilita
    3. change_sqlpass

  Dostupné pluginy:
    4. administrátor
    5 . bug_report
    6. kalendář
    7. delete_move_next
     8. demo
     9. filtry
     10. bohatství
     11. 2 informace
     1 listcommands
     13. mail_fetch
     14. podrobnosti_zprávy
     15. newmail
     16. sent_subfolders
rel.   17. test spamcop
 l squir 18
    20. přeložit

R   Zpět do hlavní nabídky
C   Zapnout barvu 
S   Uložit data
Q   Ukončit

Příkaz>> S

Data uložená v config.php
Stisknutím enter pokračujte... <-- stiskněte ENTER


Konfigurace SquirrelMail : Přečtěte si:config.php (1.4.0)
-------------------------------------- -------------------
Pluginy
  Nainstalované pluginy
    1. view_as_html
    2. kompatibilita
    3. change_sqlpass

  Dostupné pluginy:
     4. administrátor
    5. bug_report
    6. kalendář
     7. delete_move_next
 dem 8 >    9. filtry
    10. pevnost une
     11. informace
     12. příkazy seznamu
     13. načtení pošty
     14. podrobnosti_zpráv
     15. nová pošta
 
    podsložky 16. brent_7
    18. squirrelspell
    19. test
     20. translate

R   Návrat do hlavní nabídky
C   Zapnout barvu 
S    Uložit data br />Q   Ukončit

Příkaz >> <-- Q

Nyní můžete ve svém prohlížeči zadat http://server1.example.com/squirrelmail nebo http://192.168.0.100/squirrelmail pro přístup ke SquirrelMail.

Přihlaste se pomocí své e-mailové adresy (např. [email protected]) a hesla:

Uvítací e-mail byste měli najít ve své doručené poště:

Chcete-li změnit heslo, přejděte na Možnosti a poté vyberte Změnit heslo:

Zadejte své aktuální heslo a poté dvakrát nové heslo:

Pokud bylo heslo úspěšně změněno, zobrazí se následující chybová zpráva, což znamená, že se musíte znovu přihlásit pomocí nového hesla (protože staré již není aktivní):

16 VMA (rozhraní pro správu virtuální pošty)

Virtual Mail Admin (VMA) je malá webová aplikace založená na PHP napsaná pro správu e-mailového systému nastaveného v této příručce. Netestoval jsem to, ale řekl jsem si, že se o to podělím.

Toto je to, co mi vývojář (Charl Loubser) napsal v e-mailu:

"Ahoj,

Nevím, jestli se ti to bude líbit, nebo jestli ti to k něčemu bude, ale myslel jsem, že se podělím:

Napsal jsem malou hloupou webovou aplikaci pro nastavení, které jste provedli v Howto:https://www.howtoforge.com/virtual-users-domains-postfix-courier-mysql-squirrelmail-ubuntu-10.04

Pokud schválíte a myslíte si, že si zaslouží sdílení ve vašem tutoriálu, jste více než vítáni a můžete to klidně udělat.

Jak je uvedeno v readme, toto není dokonalá aplikace, ale zatím to dělá svou práci a řekl bych, že je to relativně bezpečné v uzavřeném prostředí (nastavení LAN mezi servery).

Soubor rar s aplikací je přiložen, ale lze jej stáhnout také na :http://code.google.com/p/vma/"

17 referencí

  • Výukový program:E-mailová služba ve stylu ISP s Debian-Sarge a Postfix 2.1:http://workaround.org/articles/ispmail-sarge/
  • Postfix + kvóta:http://vhcs.net/new/modules/newbb/viewtopic.php?topic_id=3496&forum=17
  • Hesla e-mailů zašifrovaná pomocí saslauthd:http://www.syscp.de/docs/public/contrib/cryptedmailpws

  • Postfix MTA:http://www.postfix.org/
  • Oprava kvóty Postfix:http://web.onda.com.br/nadal/
  • phpMyAdmin:http://www.phpmyadmin.net/
  • SquirrelMail:http://www.squirrelmail.org/
  • Debian:http://www.debian.org/
  • Rozhraní pro správu virtuální pošty (VMA):http://code.google.com/p/vma/

Debian
  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. 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 a MySQL (Ubuntu 6.10 Edgy Eft)

  2. Upgrade z Debian 6 Squeeze pomocí ISPConfig a courier/postfix na Debian 7 Wheezy

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

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

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

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