|
Strona 1 z 5
Qmail to bezpieczny i wydajny serwer poczty internetowej posługujący sie protokołem SMTP. Został zaprojektowany dla typowych serwerów UNIX i charakteryzuje się doskonałą wydajnością w działaniu pod bardzo dużym obciążeniem przy ogromnych ilościach przetwarzanej poczty. Potrafi obsługiwać wirtualne skrzynki pocztowe bez konieczności zakładania tradycyjnych kont. Jego autorem jest profesor D.J.Bernstein. Architektura qmaila (w przeciwieństwie do Sendmaila) została opracowana w oparciu o wiele małych, sprawnych i dedykowanych programów zajmujących sie konkretnymi zadaniami serwera pocztowego. Każdy z nich wykonuje swoje zadania efektywnie i bezpiecznie. Każdy posiada minimalne uprawnienia niezbędne do wykonywania czynności jedynie jemu przeznaczonych i niczego ponadto. W tym artykule opiszę proces przygotowania qmaila do pracy ze skrzynkami pocztowymi w formacie Maildir, które charakteryzują się przechowywaniem każdego emaila w osobnym pliku.
INSTALACJA
W systemie FreeBSD 4.x instalacja qmaila 1.3 jest niezwykle prosta ze względu na mechanizm "/usr/ports". Każdy kto kiedyś "ręcznie" pierwszy raz instalował qmaila bez użycia "ports" ze względu na jego "specyficzną" filozofię zapewne spędził nad dokumentacją wiele godzin ;-). Teraz jednak wystarczy wykonać poniższe czynności a system zostanie po samoczynnym ściągnięciu źródeł z internetu automatycznie skompilowany, wstępnie skonfigurowany i zainstalowany:
$/> cd /usr/ports/mail/qmail
$/usr/ports/mail/qmail> make install clean
Pamiętajmy że domyślnym MTA we FreeBSD jest "fabrycznie" sendmail tak więc instalacja qmaila zmieni parametry w /etc/mail/mailer.conf na poniższe (co zresztą warto sprawdzić):
$/etc/mail> cat mailer.conf
# Configuration for mailwrapper is kept in /etc/mail/mailer.conf.
# Replace that file with this one to enable qmail under a sendmail
# disguise. Very useful.
#
sendmail /var/qmail/bin/sendmail
send-mail /var/qmail/bin/sendmail
mailq /var/qmail/bin/qmail-qread
newaliases /var/qmail/bin/newaliases |
Wyłączenie sendmaila
Teraz wyłączamy w /etc/rc.conf automatyczne uruchamianie sendmaila na rzecz qmaila, który będzie startował poprzez skrypty w /usr/local/etc/rc.d gdzie jego start podzielimy na trzy niezależne funkcjonalnie podsystemy:
$/etc>grep sendmail rc.conf
# autostartowy skrypt MTA (można tu też podpiąć od razu qmaila)
mta_start_script="/etc/rc.sendmail"
# Settings for /etc/rc.sendmail:
sendmail_enable="NONE" # Run the sendmail inbound daemon (YES/NO/NONE).
# If NONE, don't start any sendmail processes.
sendmail_flags="-L sm-mta -bd -q30m" # Flags to sendmail (as a server)
sendmail_submit_enable="NO" # Start a localhost-only MTA for mail submission
sendmail_submit_flags="-L sm-mta -bd -q30m -ODaemonPortOptions=Addr=localhost"
sendmail_outbound_enable="NO" # Dequeue stuck mail (YES/NO).
sendmail_outbound_flags="-L sm-queue -q30m" # Flags to sendmail (outbound only)
sendmail_msp_queue_enable="NO" # Dequeue stuck clientmqueue mail (YES/NO).
sendmail_msp_queue_flags="-L sm-msp-queue -Ac -q30m" # Flags for sendmail_msp_queue
daemon. |
To ustawienie gwarantuje nie uruchamianie żadnego z procesów sendmaila.
Skrypty startowe
Utworzymy skrypty startowe qmail'a w /usr/local/etc/rc.d poprzez podlinkowanie symboliczne:
$/usr/local/etc/rc.d> ls -l | grep qmail
lrwx------ 1 root wheel 19 14 Wrz 15:32 pop3d.sh -> /var/qmail/pop3d.rc
lrwx------ 1 root wheel 22 14 Wrz 15:32 reciving.sh -> /var/qmail/reciving.rc
lrwx------ 1 root wheel 21 14 Wrz 15:32 sending.sh -> /var/qmail/sending.rc
$/usr/local/etc/rc.d> cd /var/qmail ; ls -l
*.rc
-r-xr-xr-x 1 root qmail 385 Aug 24 1999 pop3d.rc
-r-xr-xr-x 1 root qmail 842 Nov 24 1999 reciving.rc
-r-xr-xr-x 1 root qmail 311 Aug 24 1999 sending.rc
$/var/qmail> cat pop3d.rc
#!/bin/sh
# uruchamianie usługi pop (odbior poczty ze skrzynek)
pathtmp=$PATH
PATH=/var/qmail/bin:$PATH
/usr/local/bin/tcpserver 0 pop3 /var/qmail/bin/qmail-popup twojhost.jakasdomena.pl
/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir & |
$/var/qmail> cat reciving.rc
#!/bin/sh
# uruchamianie usług smtpd (przyjmowanie poczty przez serwer)
pathtmp=$PATH
PATH=/var/qmail/bin:$PATH
# wywolanie z plikiem adresow relay oraz po wdrozeniu spamcontrol
/usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -u 82 -g 81 0 smtp
/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd & |
$/var/qmail> cat sending.rc
#!/bin/sh
# uruchamianie procesow wysylki poczty przez serwer
pathtmp=$PATH
PATH=/var/qmail/bin:$PATH
/var/qmail/bin/qmail-start ./Maildir/ splogger qmail & |
qmail może być uruchamiany także poprzez inetd (odpowiednie wpisy w /etc/inetd.conf), jednak ja zdecydowałem sie na wykorzystanie pakietu
ucspi-tcp tego samego autora. Program tcpserver z tego pakietu umożliwia nam ustawianie wielu specyficznych dla qmaila parametrów startowych. Kompilacja ze źródeł i instalacja tego pakietu jest niezwykle prosta, może być także we FreeBSD wykonana poprzez mechanizm "ports". Dodatkowym pakietem niezbędnym do autoryzacji usługi pop jest pakiet
checkpassword tego samego autora. Jego instalacja jest równie banalna jak w poprzednim przypadku.
Tak zainstalowany w podstawowej konfiguracji qmail wraz z dodatkowymi modułami jest już prawie gotowy do działania. Czas dokonać niezbędnych wpisów w DNS oraz w plikach sterujących działaniem qmaila. W przytoczonych powyżej skryptach startowych użyłem dodatkowego modułu
spamcontrol, którego opis konfiguracji i instalacji przedstawiam w kolejnych rozdziałach. Start serwera automatycznie powoduje uruchomienie skryptów startowych i tym samym rozpoczęcie działania przez qmaila.
Oczywiście możemy także te skrypty uruchomić "ręcznie". Rozdzielenie funkcji na trzy oddzielne skrypty pozwala na "dłubanie" przy qmail'u bez konieczności zatrzymywania całego serwera poczty. Przykładowo zmieniając coś przy części odbiorczej możemy jedynie zatrzymać odbieranie przesyłek podczas gdy wysyłka poczty z kolejki pocztowej nadal działa. Inną metodą jest uruchamianie poprzez tzw. "svc" z pakietu daemontools co opisuje dokumentacja qmaila.
Jeśli oprócz usługi pop3 chcemy także udostępnić możliwość "katalogowego" czytania poczty poprzez usługi imap to możemy zainstalować i skonfigurować pakiet
courier-imap, który dedykowany jest właśnie do współpracy ze skrzynkami pocztowymi typu Maildir.
DNS
Działanie serwera pocztowego wymaga ustawienia w opisie strefy dns odpowiednich wpisów zapewniających przyjmowanie i obsługę poczty dla całej domeny. Poniżej przedstawiam taką strefę (przykład dla bind'a) wraz z rekordem MX (Mail eXchanger):
$>cd /etc/namedb/s ; head -12 jakasdomena.pl
@ IN SOA twojhost.jakasdomena.pl. hostmaster.jakasdomena.pl. (
200210081235
8H ; Refresh
2H ; Retry
1W ; Expire
1D ) ; Minimum
;
NS twoj.primary.dns.jakasdomena.pl.
NS twoj.secondary.dns.innadomena.pl.
MX 10 twojhost
; |
W przykładowej strefie domeny vt.pl rekord MX wskazuje, że cała poczta kierowana do tej domeny jest obsługiwana przez serwer voyager.vt.pl i jest to warunek konieczny dla działania wysyłki poczty "po domenie". Nie będę przedstawiać tu szczegółowych opisów konfiguracji serwera usługi dns bowiem nie to jest celem tego artykułu. Zainteresowanych odsyłam do dokumentacji ich serwera dns czy to bind'a czy djb-dns. Pamiętajmy, że każda zmiana w pliku strefy wymaga zwiększenia nr seryjnego i restart dns'a.
|