Pakiet qmail i sqwebmail -- możliwości, instalacja, konfiguracja

Przegląd możliwości pakietu

Qmail jest kompleksowym, modularnym i bardzo wydajnym narzędziem do transportu poczty elektronicznej, autorstwa prof. Dana J. Bernstein'a. Główną cechą, odróżniającą go od większości MTA (ang. mail transport agent) zbudowanych na wzór sendmail'a jest właśnie modularność oraz prostota, a co za tym idzie -- bezkonkurencyjne bezpieczeństwo całego rozwiązania. Przyjrzyjmy się zatem poszczególnym zaletom takiego rozwiązania.

Bezpieczeństwo. Wydaje się ono głownym powodem, dla którego administratorzy decydują się na używanie qmail'a. Mimo, że ostatnia wersja oprogramowania pochodzi z 1998 r., do tej pory nie odnaleziono w nim żadnego błędu. Tak więc nikt nie odebrał nagrody w wysokości $1000, przeznaczonej dla osoby, która pierwsza odkryje ,,dziurę'' zagrażającą bezpieczeństwu. Niewątpliwie związane jest to z prostotą i przejrzystością projektu, a także nietypowym stylem programowania. Autor nie używa prawie żadnej funkcji oferowanej przez libc, zamiast tego buduje własne biblioteki, korzystające bezpośrednio z wywołań systemowych jądra.

Qmail gwarantuje, że żadna wiadomość nie zaginie; unikalny algorytm zarządzania kolejką poczty zapewnia, że wiadomość nie będzie usunięta z kolejki, dopóki nie zostanie dostarczona. Mechanizm ten jest również odporny na zaniki zasilania podczas doręczania, a w najgorszym wypadku, powstanie duplikat wiadomości. Domyślny mechanizm doręczania poczty do skrzynki-pliku (ang. mailbox) może zostać zastąpiony mechanizmem doręczania do skrzynki-katalogu (ang. maildir), co znacznie podwyższa pewność doręczenia poczty.

Każdy moduł qmail'a działa z prawami oddzielnego użytkownika w systemie. Z prawami superużytkownika działają jedynie części qmail-start oraz qmail-lspawn, a do żadnej z nich użytkownik lokalny ani zdalny nie ma dostępu. Dopisywanie wiadomości do kolejki realizowane jest poprzez moduł qmail-queue, działający z prawami na to pozwalającymi (euid=qmailq). Naruszenie bezpieczeństwa dowolnego z kont, z których działa moduł qmail'a nie oznacza naruszenia bezpieczeństwa całego systemu; moduły nigdy nie ufają sobie wzajemnie.

Domyślnie, qmail nie dopuszcza przesyłania żadnych obcych wiadomości przez system, w związku z tym uniemożliwa niekontrolowane rozsyłanie spamu. Wyjątki można tworzyć poprzez ustawienie z poziomu tcpservera zmiennej $RELAYCLIENT dla wybranych hostów. Poprzez edycję pliku control/badmailfrom, można wykluczyć odbieranie poczty z hostów, które nadużywają tej usługi.

Wydajność. Według testów autora, qmail potrafi dostarczyć 9 mln lokalnych wiadomości dziennie na komputerze klasy Pentium 100. Uzyskano to dzięki przemyślanej konstrukcji wszystkich modułów oraz zastosowania ciekawych rozwiązań, takich jak: rezygnacja z systemowych demonów inetd oraz syslogd, na miejscu których działają pakiety daemontools oraz ucspi-tcp. Qmail przetwarza bardzo niewielką ilość prostych plików konfiguracyjnych, natomiast tablice użytkowników wirtualnych trzymane są w haszowanej bazie cdb, wielokrotnie szybszej niż standardowy format Berkeley DB.

Instalacja

Pakiet qmail jest dostępny zarówno w postaci źródłowej, jak i skompilowanych paczek rpm i deb. Ściągnąć go można z nieoficjalnej strony pakietu: http://www.qmail.org.

Kompilacja ze źródeł lub instalacja z paczek nie powinna sprawić nikomu większych kłopotów. Po zainstalowaniu pakiet wymaga jednak kilku niewielkich ingerencji w system, zanim zostanie uruchomiony.

Piewszym krokiem jest wyłączenie i dezinstalacja dotychczas używanego MTA; najczęściej domyślnym oprogramowaniem obsługującym pocztę jest pakiet Sendmail. Na jego miejsce powinien trafić wrapper, współdziałający z innymi aplikacjami.

Kolejnym krokiem jest umożliwienie pakietowi odbierania poczty przychodzącej do systemu. Uczynić to można poprzez dodanie odpowiedniego wpisu do pliku /etc/inetd.conf oraz przeładowanie demona inetd, który nie jest niestety rozwiązaniem zapewniającym odpowiednią wydajność i bezpieczeństwo. Autor pakietu qmail poleca zastosowanie oprogramowania daemontools oraz ucspi-tcp, stanowiącego doskonałą platformę do uruchamiania systemowych demonów, zarówno samodzielnych, jak i zaprojektowanych dla inetd. Obie aplikacje, łącznie ze z niedużym pakietem qmail-conf, pomagającym bezboleśnie skonfigurować qmail'a do pracy z daemontools i ucspi-tcp można znaleźć na stronie http://www.qmail.org.

W tym momencie, pakiet qmail jest już gotowy do uruchomienia. Wystarczy jedynie przygotować skrypt startowy lub posłużyć się jednym z gotowowych, znajdujących się w katalogu /var/qmail/boot. Prawdopodobnie większość administratorów wybierze skrypt home, ponieważ jest on najbardziej zbliżony do rozwiązań z innych MTA (logi wysyłane do syslogd, poczta przechowywania w $HOME/Mailbox), co nie oznacza, że najwydajniejszym. Na moich serwerach, pakiet qmail jest uruchamiany przez daemontools, a moduł qmail-smtpd poprzez ucspi-tcp, nadzorowanego również przez daemontools; poczta jest dostarczana do skrzynek-katalogów w $HOME/Maildir, udostępniana użytkownikom poprzez qmail-pop3d oraz lokalnie, pakietem mutt.

Wybrany skrypt startowy kopiujemy do /var/qmail/rc oraz uruchamiamy go. Teraz należy przeprowadzić testy doręczania lokalnej i zdalnej poczty.

Gdy wszystko już działa, należy przystąpić do przystosowania używanego oprogramowania do pracy z qmail'em. Większość klientów poczty (MUA) bez problemu radzi sobie ze zmianą lokalizacji skrzynki pocztowej - w tym wypadku wystarczy ustawienie zmiennej $MAIL. Zdarza się jednak oprgramowanie usilnie szukające poczty w katalogach /var/mail lub /var/spool/mail. W tym wypadku należy oczywiście utworzyć dowiązania symboliczne do skrzynek znajdujących się w katalogach domowych użytkowników. Osobnym problemem jest współpraca ze skrzynkami pocztowymi w postaci katalogów ($HOME/Maildir), które -- choć zapewniają dużo większą wydajność i bezpieczeństwo, niż rozwiązanie natywne, to jednak są obsługiwane przez bardzo nieliczne oprogramowanie. Przykładem tutaj może być doskonały MUA -- mutt, czy opisany dalej sqwebmail. W pozostałych przypadkach z pomocą przychodzi wrapper /var/qmail/bin/maildir2mbox, który w razie potrzeby konwertuje katalog do pojedynczego pliku, zgodnego z formatem mbox.

Część administratorów stanie teraz przed wyborem demona obsługującego protokół POP3. Rozwiązanie dostarczone z qmail'em przystowoane jest wyłącznie do obsługi formatu maildir. Do jego zainstalowania potrzebny jest dodatkowy program checkpassword dostępny na witrynie http://www.qmail.org, natomiast konfiguracja ogranicza się jedynie do dopisania stosownej linijki do pliku /etc/inetd.conf lub uruchomieniu serwisu z poziomu daemontools. Rozwiązań obsługujących skrzynki w formacie mbox jest bardzo wiele. Wszystkie one powinny bezproblemowo współpracować z qmail'em, a ich instalacja i konfiguracja leży poza zakresem tego artykułu.

Administrowanie

Najczęściej stosowane funkcje związane są z obsługą domen wirtualnych, aliasów pocztowych, a także list wysyłkowych. Wszystkie te funkcje są bezproblemowo obsługiwane przez qmail'a.

Aliasy systemowe dostępne są w katalogu /var/qmail/alias. Są one pojedynczymi plikami o nazwach w postaci .qmail-nazwa, zawierającymi odwołanie do innego konta (ew. listy kont) lub programu. Dostępne są również aliasy domyślne w postaci plików .qmail-nazwa-default, przekazujące całą pocztę wysyłaną na adres nazwa-*@host.

Użytkownicy mogą również tworzyć swoje własne aliasy, bez konieczności ingerencji administratora. Osiągnąć to można poprzez utworzenie pliku $HOME/.qmail-nazwa, działanie takie sprawi, że docierać do niego będzie poczta wysłana na adres uzytkownik-nazwa@host. Domyślnym plikiem, który brany jest podczas doręczania poczty do użytkownika, jest plik $HOME/.qmail.

Domeny wirtualne realizowane są poprzez dopisanie ich do pliku /var/qmail/control/rcpthosts i /var/qmail/control/virtualdomains oraz przeładowanie modułu qmail-send. Poczta przychodząca na konto w domenie wirtualnej jest przekierowywana do zdefiniowanego aliasa. W tym wypadku niezwykle przydatne okazują się opisane wyżej aliasy domyślne.

Obsługa poczty przez WWW

Niektóre firmy pragną udostępniać pocztę swoim użytkownikom poprzez interfejs na stronie WWW. W chwili obecnej istnieje na rynku mnóstwo różnych rozwiązań, napisanych najczęściej w języku Perl lub PHP i udostępniających pocztę poprzez protokoły HTTP, HTTPS, a nawet WAP (np. Basilix). Z punktu widzenia użytkowników qmail'a, interesujący może być pakiet, umożliwiający wykorzystanie skrzynek w formacie maildir, dlatego zdecydowałem się opisać jedno z takich rozwiązań. Jest nim napisany w języku C program sqwebmail, bardzo wydajny w porównaniu z konkurencyjnymi rozwiązaniami.

Wśród możliwości programu, interesującymi mogą okazać się: obsługa hierarchicznych folderów pocztowych, wirtualne konta, ksiązka adresowa, autoryzacja poprzez LDAP lub vpopmail, obsługa MIME i wiadomości w HTMLu oraz sprawdzanie pisowni poprzez pakiet ispell.

Program można znaleźć na stronie http://inter7.com/sqwebmail/ w postaci źródłowej, przystosowanej do automatycznej kompilacji przez rpm. Jego instalacja sprowadza się do przekopiowania skompilowanego programu do katalogu dla skryptów CGI (najczęściej jest to /home/httpd/cgi-bin) oraz zezwoleniu na jego wykonywanie.

Od tej pory użytkownicy mogą korzystać z funkcjonalnego, aczkolwiek dość ubogiego interfejsu do poczty elektronicznej. Modularna budowa, z zewnętrznymi dokumentami HTML pozwala na szybką lokalizację i zmianę wyglądu, przykładem może być poniższy wygląd aplikacji.



[ISMEDIA Webmail]


Interfejs użytkownika jest bardzo prosty w obsłudze, jednocześnie będąc wygodnym. Po otworzeniu strony, zawierającej zainstalowany pakiet sqwebmail, użytkownik jest proszony o zalogowanie się:



[Logowanie]


Autoryzacja użytkownika jest oparta o PAM (ang. Pluggable Authentication Modules) i prowadzi do uzyskania jednorazowego identyfikatora sesji, używanego później pomiędzy poszczególnymi stronami, a przekazywanego wewnątrz odnośników.

Po udanej autoryzacji, użytkownik otrzymuje dostęp do ekranu głównego, umożliwiającego operacje na folderach i książce adresowej, wysyłanie oraz otrzymywanie wiadomości.



[Menu]


Po wybraniu folderu, ukazuje się jego zawartość, w postaci odnośników do poszczególnych wiadomości. Wybranie odnośnika powoduje wyświetlenie wiadomości oraz zestawu ikonek pozwalających na: przejście do następnej lub poprzedniej wiadomości, skasowanie wiadomości, przeniesienie wiadomości do innego folderu, odpisanie, przesłanie dalej, wyświetlenie pełnych nagłówków oraz wydrukowanie. Oczywiście sqwebmail w pełni obsługuje załączniki do poczty (MIME).



[Odczyt wiadomości]


Kompozycja nowego maila jest równie prosta. W menu głównym wystarczy wybrać stosowną opcję, a wyświetlona strona, będzie przypominać okno kompozycji z typowego graficznego mailera.



[Kompozycja wiadomości]


Nie bez znaczenia jest również możliwość zmiany konfiguracji pakietu. Każdy użytkownik może dostosować wygląd aplikacji do swoich wymagań (sortowanie wiadomości, ilość wiadomości na stronie), dołączać automatycznie podpis oraz zmieniać swoje hasło. Wszystkie te cechy czynią sqwebmaila doskonałą aplikacją dla użytkowników wymagających dostępu do swojej poczty przez WWW.


Creative Commons License
Wszystkie materiały na mojej stronie dostępne są na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Na tych samych warunkach 2.5 Polska.