Greylisting jest dość powszechnie znaną techniką antyspamową. Jego idea opiera się na tym, że spamujące komputery (często tzw. zombie) nie mają czasu na ponawianie połączenia i starają się wysłać maksymalną ilość spamu w jak najkrótszym czasie łącząc się z różnymi serwerami poczty i nadając przesyłki często nawet bez czekania na odpowiedź serwera lub zakończenie sesji. Porządne serwery poczty natomiast ładnie się przedstawiają i czekają na odpowiedź serwera docelowego, a następnie rozpoczynają nadawanie poczty i jeśli dostaną odpowiedź o błędzie tymczasowym (kod 4xx), to ponawiają przesyłkę za jakiś czas (np. po 5 minutach).
Postfix
Wdrażanie systemu pocztowego
Z mojego doświadczenia nabytego przy wdrażaniu różnych systemów wynika, że wdrożenia należy przeprowadzać etapami. Wtedy na każdym etapie można stwierdzić czy działa zgodnie z oczekiwaniami i poprawić działanie lub przejść do kolejnego etapu wdrożenia. Wdrażanie systemu pocztowego nie jest tu wyjątkiem, zakładając, że mamy do realizacji takie wdrożenie jakie opisałem we wpisie „Budowa systemu pocztowego”, można by je podzielić na następujące etapy:
Etap I
Podstawowa konfiguracja nadawania i odbioru poczty dla użytkowników systemowych
Budowa systemu pocztowego
Opis systemu pocztowego opieram na wiedzy, którą nabyłem przy wdrożeniu systemu pocztowego, które wykonałem na Uniwersytecie Śląskim w Katowicach. W pierwszym etapie było to okoł 3 tys. użytkowników, w chwili obecnej system może obsługiwać ok. 40 tys. użytkowników. Całość systemu (oprócz Sophos AV) oparta jest na oprogramowaniu Open Source. Jego głównymi składnikami są:
Postfix – kompilacja
Postfixa kompiluje się trochę inaczej niż większość oprogramowania Open Source, nie posiada on skryptu configure, a odpowiednie opcje i ścieżki do bibliotek dodaje się podczas tworzenia plików Makefile. Tak to autor wymyślił i trzeba przyznać, że wiedział co robi, bo jest to jeden z najmniej problematycznych kodów do kompilacji na różnych systemach operacyjnych.
Aby za każdym razem nie zastanawiać się nad flagami i opcjami kompilacji, zrobiłem sobie skrypt, w którym mam to wszystko ustawione i tylko zmieniam nr wersji.
Jak usunąć niepotrzebne maile z kolejki Postfixa
Czasami zaistnieje potrzeba aby wyrzucić mniejszą lub większą ilość maili z kolejki. Dla doświadczonych adminów zwykle nie jest to problem, ale zdecydowałem się, że napiszę kilka użytecznych komend lub skryptów powłoki dla mniej doświadczonych użytkowników.
Oto kilka komend aby wyrzucić maile z kolejki postfixa. Nie pytajcie mnie dlaczego – tak dla przykładu. Tym razem opiszę to krok po kroku. Oto kolejka poczty:
# mailq -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 571AAC45 48204 Tue Dec 21 07:52:39 MAILER-DAEMON (connect to example.com[221.X.X.70]:25: Connection refused) datadm@example.com ...
Postfix
Postfix jest serwerem poczty, autorem tego oprogramowania jest Wietse Venema. Projekt został rozpoczęty w IBM research jako alternatywa dla szeroko używanego programu Sendmail. Postfix jest szybki, łatwy w administracji i bezpieczny. Na zewnątrz wygląda podobnie do Sendmaila, ale wewnątrz jest kompletnie inny. Skompilowanego z kodów źródłowych Postfixa można uruchomić na wielu systemach UNIXowych, takich jak … Read more
Instalacja skanera AV/AS do poczty
Instalacja skanowania Antywirusowego (AV) i Antyspamowego (AS) do systemu poczty
Przełączamy się na roota i insalujemy potrzebne oprogramowanie:
sudo -i
aptitude update
aptitude install amavisd-new
aptitude install clamav-daemon
aptitude install spamassassin
SpamAssassin jest domyślnie wyłączony, o czym nas informuje przy instalacji, aby go włączyć należy wyedytować plik /etc/default/spamassassin i ustawić:
vi /etc/default/spamassassin
ENABLED=1
CRON=1
Usuwanie poczty z kolejki
Czasem trzeba wyrzucić kilka maili z kolejki albo wykonać jakąś inną operację wymagającą złożenia kilku poleceń do kupy.
Dla starych wyjadaczy to żaden problem i pewnie zrobiliby to bardziej optymalnie, ale ja właśnie postanowiłem rozpocząć cykl pod tytułem „Jednowierszowce„, gdzie będę wrzucał jednowierszowe skrypty shellowe (i inne), które mam nadzieję będą przydatne i zrozumiałe dla szerszego grona użytkowników.
Konfiguracja dostarczania poczty w oparciu o LDAP
Ostatnio pisałem o konfiguracji uwierzytelniania użytkowników w katalogu LDAP aby mogli odbierać i wysyłać pocztę. Teraz czas na konfigurację Postfixa aby tę pocztę dostarczał do właściwych domen i skrzynek.
Jeśli kompilujecie/instalujecie Postfixa samodzielnie, to należy pamiętać o wkompilowaniu wsparcia dla LDAP oraz wskazaniu ścieżki do bibliotek LDAP. Ja pójdę na łatwiznę i zrobię to na Ubuntu:
$ sudo -i
# apt-get install postfix-ldap
To dołoży nam do postfixa wsparcie dla map typu ldap:
Teraz możemy zabrać się za konfigurację serwera Postfix:
# cd /etc/postfix
# vi main.cf
Konfiguracja uwierzytelniania poczty w LDAP
Zakładam, że Dovecot i Postfix już działają i można odebrać i wysłać pocztę logując się na użytkownika systemowego (patrz poprzednie wpisy). Nadszedł zatem czas na uruchomienie uwierzytelniania w naszym katalogu LDAP (patrz konfiguracja LDAP).
Wykorzystanie LDAPa do uwierzytelniania użytkowników pozwala na elastyczne zarządzanie hostingiem poczty i nie tylko. LDAP jest już przyjętym standardem w zakresie uwierzytelniania i autoryzacji, praktycznie każde szanujące się oprogramowanie wymagające uwierzytelnienia ma wsparcie dla tego protokołu.
Zaczniemy od serwera POP3/IMAP, który również dostarcza mechanizmu uwierzytelniania dla Postfixa czyli od Dovecota:
/usr/bin/sudo -i
cd /etc/dovecot
vi dovecot-ldap.conf
W tym pliku musimy zdefiniować parametry serwera lub serwerów LDAP, metodę uwierzytelnienia oraz filtry i atrybuty, wymienię te, które trzeba ustawić:
hosts = localhost
auth_bind = yes
base = o=hosting,dc=example,dc=com
scope = subtree
user_attrs = homeDirectory=home
user_filter = (&(objectClass=mailUser)(mail=%u))
pass_attrs = mail=user,userPassword=password
pass_filter = (&(objectClass=mailUser)(mail=%u))