HOWTO: FreeBSD 7.1 - Serwer Pocztowy (SMTP, IMAP, POP3) z autoryzacją i szyfrowaniem
1. Wstęp
Celem niniejszego artykułu jest zaprezentowanie przykładowego sposobu instalacji i konfiguracji oprogramowania, które przekształci komputer z FreeBSD 7.1 na pokładzie w serwer pocztowy. Przyczyną powstania tekstu były moje wielogodzinne walki z przestarzałymi HOWTO, które po prostu nie pasowały do nowych wersji oprogramowania.
W naszym wypadku wykorzystamy programy Postfix (SMTP) i Dovecot (POP3, IMAP). Zadbamy również o autoryzację użytkowników i szyfrowanie. :)
Do instalacji FreeBSD 7.1 użyłem oficjalnej płyty CD. Jako profil instalacji wybrałem "User", zainstalowałem drzewo portów i zaktualizowałem.
2. Do dzieła
Dla ułatwienia polecam już na tym etapie zalogować się na konto roota (w każdym razie zyskać prawa superużytkownika).
Pierwszym etapem będzie zainstalowanie postfixa przy użyciu drzewa portów. Nie używamy do tego celu paczek ze względu na pare opcji, które dodamy podczas budowy pakietu.
make
Po wydaniu polecenia make na ekranie powinno pojawić się menu opcji z jakimi chcemy zbudować postfix'a.
Zaznaczmy opcje: PCRE,DOVECOT oraz TLS:

Dzięki zaznaczonym opcjom zbudujemy postfixa z obsługą TLS (szyfrowanie) i autoryzacją przez dovecot, co w praktyce oznacza, że zarówno dovecot jak i postfix będą wykorzystywały wspólną metodę "logowania" użytkowników.
Klikamy OK i czekamy...
Po wykonaniu przez skrypty kompilacji, pora na instalację:
Ponieważ zaznaczyliśmy w konfiguracji postfix'a opcję "dovecot", jako zależność na tym etapie zainstalowany zostanie właśnie dovecot. Na ekranie powinno pojawić się podobne do postfix'owego menu wyboru opcji:

Myślę, że zaznaczone domyślnie opcje, a w szczególności POP3 i SSL nas satysfakcjonują.
Klikamy OK i czekamy...
Pod koniec instalacji skrypt zada nam pytanie:
Would you like me to add it [y]?
Naciskamy "y" i potwierdzamy enterem. W tym momencie po utworzeniu użytkownika "postfix" skrypt dołącza go do grupy "mail", a następnie kontynuuje instalację.
Na następne pytanie:
również odpowiadamy twierdząco. Naciskamy "y" i potwierdzamy enterem. Po chwili instalacja postfix'a zostaje ukończona.
3. Konfiguracja Postfix'a
Po instalacji postfix i dovecot pora na konfigurację.
Są dwie rzeczy, które musimy zrobić. Jedna do dezaktywacja zainstalowanego domyślnie Sendmaila. Druga - to zmiana pliku konfiguracyjnego main.cf.
Zacznijmy od uświadomienia sendmailowi gdzie jego miejsce. Wyedytujmy plik /etc/rc.conf:
i wpiszmy na końcu:
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
postfix_enable="YES"
Natomiast w pliku /etc/periodic.conf
wpiszmy:
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
Po zapisaniu obu plików możemy przejść do właściwej konfiguracji postfix'a:
Na początku odkomentujemy i przerobimy linijkę w której zdefiniowana zostanie jedna z ważniejszych rzeczy - nazwa hosta. Dzięki niej możemy potem zdefiniować adresy e-mail, które mamy zamiar obsługiwać.
Następnie ustalimy w jakim formacie mają być przechowywane wiadomości. Przebijmy się przez gąszcz komentarzy i dopilnujmy, żeby odkomentowana została linijka:
a wszelkie inne definiujące "home_mailbox" zostały zahaszowane.
Dzięki tej opcji emaile będą składowane w katalogach domowych użytkowników i niedługo takie samo położenie podamy dovecot'owi.
Teraz przejdźmy na koniec pliku i zdefiniujmy sposób autoryzacji przez dovecot:
# Konfiguracja autoryzacji
#
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable=yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,reject_non_fqdn_hostname,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unauth_pipelining,reject_invalid_hostname,reject_unknown_sender_domain
Dzięki powyższym opcjom tylko uwierzytelnieni użytkownicy będą mogli wysyłać maile bez ograniczeń - nie chcemy żeby z naszej maszyny ktoś rozsyłał spam. ;]
Teraz pora na opcje związane z szyfrowaniem:
# TLS
#
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/private/dovecot.pem
smtpd_tls_cert_file = /etc/ssl/certs/dovecot.pem
smtpd_tls_CAfile = /etc/ssl/certs/dovecot.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Powyższe opcje odblokowują obsługę szyfrowania i definiują położenie kluczy/certyfikatów, które później utworzymy.
Teraz wystarczy zamknąć edytor i zapisać zmiany - plik konfiguracyjny postfix'a jest gotowy. :-)
4. Konfiguracja dovecot'a
Na tym etapie skonfigurujemy dovecot'a do obsługi protokołów pop3 i imap z szyfrowaniem oraz przekonamy, żeby szukał wiadomości w tym samym miejscu co postfix.
Na początek wyedytujmy plik /etc/rc.conf:
i wpiszmy:
Zamykamy i zapisujemy plik.
Teraz otwórzmy plik konfiguracyjny:
Odszukujemy linijkę:
Jak widać obsługiwanymi protokołami będą pop3 i imap w wersjach zarówno prostych jak i szyfrowanych. Domyślne ustawienie nas satysfakcjonuje. :)
Dalej zdefiniujemy miejsce w którym dovecot będzie szukał wiadomości email. Znajdujemy linijkę:
i zmieniamy na:
Dzięki temu postfix i dovecot będą szukały wiadomości w tych samych miejscach.
Odhaszowujemy/dodajemy linijki, które włączą szyfrowanie:
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
Nota bene wskazują na te same klucze szyfrujące co w przypadku postfix'a :)
Teraz pora na zdefiniowanie autoryzacji.
Szukamy sekcji zaczynającej się od linii:
mechanisms = plain login
Musimy zadbać, żeby w tej sekcji znalazły się linijki:
# Socket dla autoryzacji postfixa
#
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
Teraz zapisujemy plik i przechodzimy do kolejnego etapu. :)
5. Tworzenie kluczy i aliasów
Etap prosty, acz zajmuje chwilkę:
mkdir certs
mkdir private
Teraz pora wygenerować pliki:
OpenSSL zada nam kilka pytań. Odpowiadamy wedle uznania. Przykładowo:
State or Province Name (full name) [Some-State]:Zadupie
Locality Name (eg, city) []:Poznan
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Tajna Organizacja
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:Marcin Biernacki
Email Address []:phisikus@platinum.linux.pl
No i mamy wygenerowane klucze :)
Teraz pora na utworzenie bazy aliasów:
6. Uruchamiamy
Teraz pora uruchomić dovecot:
W odpowiedzi możemy zobaczyć:
Info: If you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
Sprawdźmy, czy dovecot faktycznie działa:
Jeżeli w odpowiedzi dostaniemy coś w stylu:
to znaczy, że wszystko powinno być w porzadku.
Zanim uruchomimy postfix'a pora wyłączyć sendmaila, który zapewne wciąż działa:
Teraz pora na postfix'a.
Sprawdźmy:
I podobnie:
7. Test
Teraz pora połączyć się i sprawdzić, czy oczekiwane opcje działają:
przykład transakcji:
Escape character is '^]'.
220 nasz.adres.org ESMTP Postfix
EHLO localhost
250-localhost
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
jak widać jest opcja "STARTTLS", czyli szyfrowanie jest dostępne i "AUTH PLAIN LOGIN", czyli metody autoryzacji.
Sprawdźmy dovecot'a:
wynik:
Escape character is '^]'.
+OK Dovecot ready.
Jak widać zarówno postfix jak i dovecot działają i czekają na połączenia
8. Zakończenie
Mam nadzieje, że ten przydługi opis będzie komuś przydatny. Tekst był pisany w trakcie samej instalacji, dlatego, mam nadzieję, jest dość wierną kopią tego co należy zrobić.
Have fun :)
- Zaloguj się lub zarejestruj by odpowiadać
phisikus, pt., 20/03/2009 - 12:17

Witam! Świetne i praktyczne
Witam!
Świetne i praktyczne HOWTO.
Warto dodać, że aby poprawnie działała autoryzacja SMTP należy:
1) utworzyć w katalogu /etc/pam.d/ plik dovecot
2) wprowadzić do niego dwie poniższe linijki:
auth required pam_unix.so nullok
account required pam_unix.so
Pozdrawiam,
Krzysiek
hmm....
Dzięki za uwagę. :) Bez tego też działa - pewnie zależne od wersji. Jakkolwiek gdyby ktomuś coś nie działało to spróbujcie tak jak poleca Krzysiek.