Uwaga:
Ten dokument jest w fazie tworzenia, nie jest jeszcze oficjalny.
|
System pocztowy w oparciu o netqmail i vpopmail
1.
Wprowadzenie
Niezależnie od tego czy prowadzimy system pocztowy tylko dla demonów
systemowych, pojedynczego serwera czy dla wielu wirtualnych domen, możemy w
prosty sposób skonfigurować program netqmail dostosowując go do własnych
potrzeb. Niniejszy przewodnik pomoże w osiągnięciu każdego powyższych
scenariuszy z dużym naciskiem na zdalny dostęp i szyfrowaną transmisję przez
cały czas jej trwania.
Dokładniej rzecz biorąc, niniejszy dokument pomoże skonfigurować następujące
pakiety: netqmail, courier-imap, vpopmail i horde/imp. Pakiety te wymagają
zainstalowanych daemontools, ucspi-tcp, mysql, apache i mod_php. Netqmail pełni
rolę mta, courier-imap zapewnia usługi zdalnego dostępu, vpopmail udostępnia
system zarządzania wirtualnymi domenami i wreszcie horde-imp pozwala na dostęp
do poczty poprzez www.
Zanim przejdziemy dalej, musimy się upewnić, że mamy ustawione poniższe flagi
USE. Jeżeli w systemie jest już zainstalowany któryś z tych pakietów, być może
będzie je trzeba zainstalować ponownie. USE="maildir ssl imap mysql".
Dodatkowo, jeśli chcemy używać horde/imp do zdalnej poczty, pakiet mod_php musi
być skompilowany z flagą USE="nls" przed instalacją horde/imp.
Uwaga:
Przewodnik ten składa się z kilku etapów. Po każdym z nich można zakończyć
instalację, jeśli się uważa, że jest kompletna.
|
Ostatnim krokiem jest oczywiście oddanie się systemowi netqmail. Istnieje wiele
innych pakietów, dzięki którym można zbudować system pocztowy, dlatego teraz
przyszedł czas na zdecydowanie czy netqmail jest w danym wypadku odpowiedni.
Mamy inny wspaniały przewodnik
oparty o Postfixa. Można także
zerknąć na program exim. Wybór
najlepszego rozwiązania należy do użytkownika, my w tym tekście skupimy
się na netqmail.
2.
netqmail (komunikacja ze sobą)
Listing 2.1: Instalacja pakietu qmail |
# emerge mail-mta/netqmail
|
Ważne:
Niniejszy przewodnik dotyczy netqmail-1.05-r4 i nowszych. Czy zadziała z
wcześniejszymi wersjami? Może. Czy należy uaktualnić? Jeśli chcesz mieć
pewność, że przewodnik zadziała, to tak.
|
Ostrzeżenie:
Jeśli otrzymamy komunikat, że pakiet virtual/mta wchodzi w konflikt z innym
pakietem, musimy odinstalować pakiet MTA, który powoduje ów konflikt. Aby się
dowiedzieć, który to pakiet, wpisujemy emerge netqmail -p.
|
Wraz z instalacją pakietu netqmail zostaną zainstalowane jako zależności
pakiety ucspi-tcp oraz daemontools. Można o nich poczytać tutaj: ucspi-tcp i daemontools. Ogólnie rzecz biorąc
daemontools odpowiada za zarządzanie usługami pakietu netqmail, a ucspi-tcp za
zarządzanie połączeniami TCP do usług netqmail.
Teraz musimy wykonać kilka czynności poinstalacyjnych.
Listing 2.2: Błyskawiczna konfiguracja pakietu netqmail |
# nano /var/qmail/control/servercert.cnf
# emerge --config netqmail
|
Twórcy netqmaila kładą duży nacisk na bezpieczeństwo, dlatego użytkownik "root"
nigdy nie otrzymuje poczty. W związku z powyższym musimy wybrać teraz nazwę
użytkownika, który będzie otrzymywał pocztę zaadresowaną do roota. W
przykładzie użyłem użytkownika o nazwie "jan".
Listing 2.3: Konfiguracja konta pocztowego |
# cd /var/qmail/alias
# echo jan > .qmail-root
# echo jan > .qmail-postmaster
# echo jan > .qmail-mailer-daemon
|
Teraz uruchomimy usługę dostarczania wiadomości programu netqmail.
Listing 2.4: Uruchamianie usługi dostarczania wiadomości |
# rc-update add svscan default
# /etc/init.d/svscan start
# cd /service
# ln -s /var/qmail/supervise/qmail-send qmail-send
|
Upewniamy się, że funkcja ta działa poprawnie. Błyskawiczny test.
Listing 2.5: Test usługi dostarczania wiadomości |
# ssh jan@localhost
# maildirmake .maildir
# qmail-inject root << EOF
wiadomość testowa do roota!
EOF
# qmail-inject postmaster << EOF
wiadomość testowa do postmastera!
EOF
# qmail-inject jan << EOF
wiadomość testowa do jana!
EOF
# mutt
|
W tym momencie posiadamy już podstawowy system pocztowy, który zajmie się
wiadomościami użytkowników/demonów oraz pocztą lokalną.
Ostrzeżenie:
Jeśli nie przychodzą żadne wiadomości lub w logach (czyli w
/var/log/qmail/) pojawiają się dziwne błędy dotyczące
"localhost.localhost", oznacza to, że informacja o domenie/dns nie jest
ustawiona prawidłowo. Netqmail domyślnie wykorzystuje wynik polecenia
hostname --fqdn. Jeśli polecenie to zwraca wartość "localhost",
sprawdzamy /etc/hostname, /etc/hosts oraz wpisy w
systemie dns, aby upewnić się, że wszystko jest w porządku. Po uporaniu się z
problemem, dostosowujemy pliki konfiguracyjne znajdujące się w
/var/qmail/control/. Można w tym celu skorzystać z poniższych
przykładów.
|
Listing 2.6: Przykładowe pliki /var/qmail/control/ dla domeny drugiego poziomu |
# hostname --fqdn
domena.org
# cat me
domena.org
# cat defaultdomain
domena.org
# cat plusdomain
domena.org
# cat locals
domena.org
# cat rcpthosts
domena.org
|
Listing 2.7: Przykładowe pliki /var/qmail/control/ dla domeny trzeciego poziomu |
# hostname --fqdn
poczta.domena.org
# cat me
poczta.domena.org
# cat defaultdomain
domena.org
# cat plusdomain
domena.org
# cat locals
poczta.domena.org
# cat rcpthosts
poczta.domena.org
|
3.
vpopmail
Listing 3.1: Instalacja pakietu vpopmail |
# emerge vpopmail
|
Ważne:
Niniejszy przewodnik został napisany dla vpopmail-5.4.6 i nowszych. Czy
zadziała z wcześniejszymi wersjami? Może. Czy należy uaktualnić? Jeśli chcemy
mieć pewność, że instrukcje z przewodnika zadziałają, to tak.
|
Skonfigurowanie vpopmail wymaga nieco więcej zachodu. Ponieważ vpopmail
funkcjonuje w oparciu o mysql, upewnijmy się wcześniej, że mysql działa
poprawnie. Następnie należy utworzyć bazę danych dla pakietu vpopmail i przejść
do następnego etapu. Zanim jednak przejdziemy dalej, upewniamy się, że mysql
jest zainstalowany i działa poprawnie. Należy zwrócić uwagę, na to, że hasło do
bazy danych vpopmail, którego użyjemy tutaj to "vpoppw". Radzimy ustawić coś
znacznie bezpieczniejszego.
Listing 3.2: Tworzenie bazy danych vpopmail |
# rc-update add mysql default
# /etc/init.d/mysql start
# nano /etc/vpopmail.conf
# mysql -p << EOF
create database vpopmail;
use mysql;
grant select, insert, update, delete, create, drop on vpopmail.* to vpopmail@localhost identified by 'vpoppw';
flush privileges;
EOF
# chown root:vpopmail /etc/vpopmail.conf
# chmod 640 /etc/vpopmail.conf
# chown root:vpopmail /var/vpopmail/bin/vchkpw
# chmod 4711 /var/vpopmail/bin/vchkpw
|
Ostrzeżenie:
Jeśli wystąpi problem z prawami dostępu związany z mysql/vpopmail, uruchamiamy
ponownie serwer mysql: /etc/init.d/mysql restart.
|
Teraz vpopmail jest gotowy do użycia. W przewodniku skupimy się na zapewnieniu
działania wirtualnej domeny "domena.org". Skonfigurujemy vpopmaila, aby ją
obsługiwał oraz utworzymy w niej domenie konto pocztowe "jan".
Listing 3.3: Dodawanie obsługi domeny |
# source /etc/profile
# mysql -u vpopmail -p
mysql> select * from vpopmail.vlog;
# vadddomain domena.org postpass
# printf "postmaster@domena.org\0postpass\0blah\0" | vchkpw `which id` 3<&0
uid=89(vpopmail) gid=89(vpopmail) groups=0(root)
# vadduser jan@domena.org vappw
|
Dla każdej domeny obsługiwanej przez vpopmail tworzone jest konto "postmaster".
W naszym przypadku użyliśmy hasła "postpass" dla tego użytkownika. Zanim jednak
vpopmail będzie w pełni użyteczny, musimy mieć możliwość odbierania wiadomości
przez program courier oraz ich wysyłania przez serwer SMTP z pakietu netqmail.
4.
Courier POP/IMAP
Listing 4.1: Instalacja courier-imap |
# emerge net-mail/courier-imap
|
Ważne:
courier-imap musi być zainstalowany po pakiecie vpopmail. Dzięki temu zostanie
skompilowany moduł authvchkpw wykorzystywany przez courier-imap.
|
Ważne:
Niniejszy przewodnik został oparty o net-mail/courier-imap-3.0.7 lub nowszy.
Czy zadziała z wcześniejszymi wersjami? Może. Czy należy uaktualnić? Jeśli
chce się mieć pewność, że instrukcje zadziałają, to tak.
|
Teraz kilka czynności poinstalacyjnych. Są one wymagane tylko wtedy, gdy chcemy
włączyć szyfrowaną transmisję SSL (mocno zalecane!). W przeciwnym wypadku
wystarczy przejść do ostatnich dwóch kroków z następnych dwóch listingów
opuszczając za każdym razem "-ssl" w skrypcie startowym.
Listing 4.2: Błyskawiczna konfiguracja POP3/SSL |
# nano /etc/courier/authlib/authdaemonrc
# cd /etc/courier-imap
# nano pop3d.cnf
# mkpop3dcert
# rc-update add courier-pop3d-ssl default
# /etc/init.d/courier-pop3d-ssl start
|
Listing 4.3: Błyskawiczna konfiguracja IMAP/SSL |
# cd /etc/courier-imap
# nano imapd.cnf
# mkimapdcert
# rc-update add courier-imapd-ssl default
# /etc/init.d/courier-imapd-ssl start
|
Teraz klient poczty powinien móc zalogować się do serwera, na którym
zainstalowany jest courier oraz pobierać wiadomości dla wirtualnej domeny. W
naszym przykładzie możemy się zalogować przy użyciu nazwy użytkownika
"jan@domena.org" i hasła "vappw".
5.
netqmail (komunikacja ze światem)
Uruchamiając serwer SMTP pamiętajmy o tym, by nie utworzyć dziury dla spamu,
którą inni mogliby wykorzystać do złych celów.
Listing 5.1: Uruchamianie usługi SMTP z pakietu netqmail |
# cd /var/qmail/control/
# nano conf-smtpd
# nano servercert.cnf
# mkservercert
# cd /service
# ln -s /var/qmail/supervise/qmail-smtpd qmail-smtpd
# /etc/init.d/svscan restart
|
Zakładając, że pliki konfiguracyjne nie zostały w inny sposób zmienione,
netqmail będzie przyjmował pocztę dla domeny "domena.org" i dla lokalnych
użytkowników. Oprócz tego, netqmail będzie przekazywał wiadomości wysłane przez
adres 127.0.0.1 oraz wiadomości pomyślnie zautoryzowanych użytkowników. Podczas
konfiguracji klienta poczty należy pamiętać o zaznaczeniu odpowiednich opcji
związanych z autoryzacją poczty wychodzącej, takich jak np. "Ten serwer wymaga
autoryzacji". W naszym przykładzie ustawiamy nazwę użytkownika "jan@domena.org"
i hasło "vappw". Ostatnim krokiem jest ustawienie klienta pocztowego tak,
aby używał szyfrowanej transmisji TLS/SSL podczas wysyłania poczty. Program
netqmail nie zezwoli na autoryzację jeśli transmisja nie będzie zaszyfrowana.
6.
Klient poczty przez www Horde/IMP
Istnieje wiele rozwiązań typu poczta przez www i można używać któregokolwiek z
nich. Tutaj skupimy się na kliencie IMP, który jest częścią struktury Horde.
Głównym powodem, dla którego użyjemy Horde (oprócz dostępu do poczty przez
www), jest prosty sposób na dodawanie kolejnych komponentów. Owymi
komponentami mogą być: książki adresowe, kalendarze, zadania itp. Więcej
informacji o nim można znaleźć tutaj.
Do rzeczy! Zainstalujemy teraz pakiet IMP.
Listing 6.1: Instalacja pakietu IMP |
# emerge horde-imp
|
Ważne:
Niniejszy przewodnik został oparty o pakiety horde-2.2.x i horde-imp-3.2.x.
Wersje CVS (jak również następne główne wydania) mogą mieć inne ustawienia
konfiguracji. Zwracamy uwagę także na fakt, że php-5.x może zepsuć horde-2.x.
|
Konfiguracja Horde nie jest najłatwiejsza jeśli nie wie się, co dokładnie
robić. Opiszemy więc wszystko po kolei.
Listing 6.2: Błyskawiczna konfiguracja pakietu Horde |
# cd /var/www/localhost/htdocs/horde/config/
# for f in *.dist ; do mv ${f} ${f/.dist} ; done
# nano horde.php
$conf['auth']['driver'] = 'imap';
$conf['auth']['params']['dsn'] = '{localhost:993/imap/ssl/novalidate-cert}';
$conf['log']['name'] = '/var/log/apache2/horde.log';
$conf['problems']['enabled'] = true;
$conf['problems']['email'] = 'webmaster@domena.org';
# nano registry.php
$this->registry['auth']['login'] = 'imp';
$this->registry['auth']['logout'] = 'imp';
# touch /var/log/apache2/horde.log
# chown apache:apache /var/log/apache2/horde.log
|
Uwaga:
Zwykle konto pocztowe "webmaster" zmienia się na jakieś inne. Jeśli jednak
chcesz je pozostawić, nie zapomnij utworzyć tego konta za pomocą vpopmaila (lub
pakietu qmailadmin opisanego poniżej).
|
A teraz przejdziemy do szybkiego skonfigurowania pakietu IMP.
Listing 6.3: Błyskawiczna konfiguracja pakietu IMP |
# cd /var/www/localhost/htdocs/horde/imp/config/
# for f in *.dist ; do mv ${f} ${f/.dist} ; done
# nano servers.php
$servers['imap'] = array(
'name' => 'domena.org',
'server' => 'localhost',
'protocol' => 'imap/ssl/novalidate-cert',
'port' => 993,
'folders' => '',
'namespace' => 'INBOX.',
'maildomain' => 'domena.org',
'smtphost' => 'localhost',
'realm' => '',
'preferred' => ''
);
|
Na koniec, aby używać poczty przez www, uruchamiamy serwer apache.
Listing 6.4: Uruchamianie serwera apache |
# nano /etc/conf.d/apache2
# rc-update add apache2 default
# /etc/init.d/apache2 start
|
Ostrzeżenie:
Należy się poważnie zastanowić nad wymuszeniem szyfrowanego protokołu http dla
użytkowników horde, nie jest to prosta sprawa, ale warto o tym pomyśleć ze
względu na bezpieczeństwo.
|
Aby przetestować program IMP, uruchamiamy przeglądarkę, a w niej otwieramy
stronę http://localhost/horde/ (localhost to nazwa serwera, na
którym usługa została uruchomiona). Naszym oczom powinna się ukazać strona
logowania do systemu Horde. Znowu, w naszym przypadku używamy nazwy użytkownika
"jan@domena.org" i hasła "vappw".
W tym momencie mamy już skonfigurowane pakiety Horde i IMP. Zwykle warto wrócić
jeszcze do katalogów z plikami konfiguracyjnymi i bardziej dostosować wszystko
do konkretnych potrzeb.
7.
Dodatkowe pakiety
qmailadmin
Pierwszy pakiet, jaki polecamy w tym dokumencie to qmailadmin. Jest to interfejs
służący do zarządzania wirtualnymi domenami oparty o www. Aby rozpocząć używanie
go, należy po prostu wpisać emerge net-mail/qmailadmin, a następnie użyć
przeglądarki i udaj się pod adres
http://localhost/cgi-bin/qmailadmin. Pakiet ten bardzo ułatwia
życie.
qmHandle
Jeśli pojawiają się problemy z kolejkami programu netqmail, zwykle trudno je
rozwiązać. Warto wtedy zwrócić uwagę na qmHandle. To prosty skrypt
napisany w perlu. Pozwala on na podglądanie i zarządzanie kolejką wiadomości
pocztowych programu netqmail. Wystarczy wpisać polecenie emerge
net-mail/qmhandle.
Dodatki do horde
Polecamy zapoznanie się z pozostałymi aplikacjami Horde. Np. Turba, Kronolith czy Nag dobrze uzupełniają program IMP. Ich
konfiguracja jest podobna do tej znanej już z IMP, a więc nie powinno być z nią
większych problemów. Należy pamiętać o edycji pliku registry.php znajdującego
się w katalogu konfiguracyjnym Horde. Pozwoli to na dodanie ikon tych aplikacji
do jego menu.
Pakiet ucspi-tcp
Połączenia przychodzące do usług netqmail realizowane są przez pakiet
ucspi-tcp. Jeśli chcemy zmienić reguły filtrowania połączeń, przeglądamy pliki
konfiguracyjne znajdujące się w /etc/tcprules.d/ (starsze wersje
programu netqmail instalowały te pliki w /etc). Znajdują się tam po dwa pliki
dla każdej usługi: plik konfiguracyjny (np. tcp.qmail-smtp) oraz skompilowana
wersję, która jest wykorzystywana przez ucspi-tcp (np. tcp.qmail-smtp.cdb).
Za każdym razem gdy uaktualniamy plik konfiguracyjny, konieczna jest przebudowa
wersji binarnej. Wystarczy do tego polecenie tcprules tcp.qmail-smtp.cdb
tcp.qmail-smtp.tmp < tcp.qmail-smtp. Tak zbudowany plik jest ładowany
przy każdorazowym połączeniu, nie ma więc potrzeby ponownego uruchamiania danej
usługi.
Pakiet qmail-scanner
Jeśli chcemy wykonywać filtrowanie zawartości wiadomości pocztowych (spam i
wirusy), musimy użyć innego niż domyślny program kolejkujący. Dobry program,
który można wykorzystać to qmail-scanner. Wystarczy, że
wykonamy polecenie emerge qmail-scanner i dokonamy edycji pliku
/etc/tcprules.d/tcp.qmail-smtp.
Ważne:
Proces kompilacji qmail-scannera jest dość brzydki. Aby wspierał on odpowiednie
pakiety, muszą one być wcześniej zainstalowane w systemie. Oznacza to, że
trzeba zainstalować pakiety SpamAssasin i/lub Clam AntiVirus przed instalacją
qmail-scannera. Poniżej znajduje się więcej informacji na ten temat.
|
Listing 7.1: Zmiana programu kolejkującego |
# cd /etc/tcprules.d/
# nano tcp.qmail-smtp
# tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp
|
Poniższe informacje opisują filtrowanie poczty na występowanie spamu oraz
wirusów. Można też ustawić kilka własnych opcji poprzez edycję pliku
/var/qmail/bin/qmail-scanner-queue.pl.
Pakiet SpamAssassin
SpamAssassinjest jednym z
najlepszych filtrów spamu o otwartym kodzie. Zaczynamy od jego instalacji, za
pomocą polecenia emerge mail-filter/spamassassin. Pakiet zawiera dwie
wersje programu. Jedna z nich uruchamia się z linii poleceń, druga to wersja o
o strukturze klient/serwer. Wersja uruchamiana z linii poleceń wystarczy dla
serwerów obsługujących mały ruch pocztowy. Druga z nich jest odpowiednia dla
większego ruchu.
Listing 7.2: Błyskawiczna konfiguracja pakietu SpamAssassin |
# nano /etc/mail/spamassassin/local.cf
required_hits 6
skip_rbl_checks 1
# rc-update add spamd default
# /etc/init.d/spamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
|
Ważne:
Jeśli SpamAssasin został zainstalowany po pakiecie qmail-scanner, trzeba
zainstalować qmail-scanner ponownie. Proces jego budowy jest dość brzydki i
uwzględni tylko te opcje, dla których pakiety będą wcześniej zainstalowane w
systemie.
|
W tym momencie poczta przychodząca powinna przechodzić przez qmail-scanner,
który wywoła program SpamAssassin dla każdej wiadomości.
Pakiet Clam AntiVirus
Podobnie jak SpamAssassin, Clam
AntiVirus instaluje się w dwóch wersjach. Pokażemy szybki sposób na
skonfigurowanie wersji klient/serwer. Na początek instaluje program poleceniem
emerge app-antivirus/clamav.
Listing 7.3: Błyskawiczna konfiguracja pakietu Clam AntiVirus |
# nano /etc/conf.d/clamd
# nano /etc/clamav.conf
# rc-update add clamd default
# /etc/init.d/clamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
# nano /var/qmail/control/conf-common
|
Ważne:
Jeśli Clam AntiVirus został zainstalowany po pakiecie qmail-scanner, trzeba
zainstalować qmail-scanner ponownie. Proces jego budowy jest dość brzydki i
uwzględni tylko te opcje, które będą wcześniej zainstalowane w systemie.
|
W tym momencie poczta przychodząca powinna przechodzić przez qmail-scanner,
który wywoła program Clam AntiVirus dla każdej wiadomości.
8.
Uwagi końcowe
Nie mamy już nic więcej do dodania, może poza tym, że jeśli pojawią się
jakiekolwiek trudności związane z niniejszym przewodnikiem, należy skontaktować
się Mike'm Frysingerem lub wypełnić
raport o błędzie w Bugzilli Gentoo.
Należy tam również kierować wszystkie pomysły dotyczące tego przewodnika.
Materiał udostępniany na podstawie licencji Creative Commons -
Attribution / Share Alike.
|