{ }
menu zespół linki Logowanie
Stabilny hosting
BSDGuru zawdzięcza
firmie Datanet.pl
Hosting BSDGuru.org - DataNet.pl

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.

cd /usr/ports/mail/postfix/
make

Po wydaniu polecenia make na ekranie powinno pojawić się menu opcji z jakimi chcemy zbudować postfix'a.
Zaznaczmy opcje: PCRE,DOVECOT oraz TLS:
Free Image Hosting at www.ImageShack.us
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ę:

make install

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:
Free Image Hosting at www.ImageShack.us
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:

You need user "postfix" added to group "mail".
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:
Would you like to activate Postfix in /etc/mail/mailer.conf [n]?

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:

edit /etc/rc.conf

i wpiszmy na końcu:
sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
postfix_enable="YES"

Natomiast w pliku /etc/periodic.conf
edit /etc/periodic.conf

wpiszmy:
daily_clean_hoststat_enable="NO"
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:
edit /usr/local/etc/postfix/main.cf

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ć.
myhostname = nasz.adres.org

Następnie ustalimy w jakim formacie mają być przechowywane wiadomości. Przebijmy się przez gąszcz komentarzy i dopilnujmy, żeby odkomentowana została linijka:
home_mailbox = Maildir/

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:

edit /etc/rc.conf

i wpiszmy:
dovecot_enable="YES"

Zamykamy i zapisujemy plik.
Teraz otwórzmy plik konfiguracyjny:
edit /usr/local/etc/dovecot.conf

Odszukujemy linijkę:
protocols = imap imaps pop3 pop3s

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ę:
mail_location = mbox:~/mail/:INBOX=/var/mail/%u

i zmieniamy na:
mail_location = maildir:~/Maildir

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_disable = no
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:
auth default {
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ę:

cd /etc/ssl/
mkdir certs
mkdir private

Teraz pora wygenerować pliki:
openssl req -new -x509 -nodes -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem -days 999999

OpenSSL zada nam kilka pytań. Odpowiadamy wedle uznania. Przykładowo:
Country Name (2 letter code) [AU]:PL
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:
newaliases

6. Uruchamiamy

Teraz pora uruchomić dovecot:

/usr/local/etc/rc.d/dovecot start

W odpowiedzi możemy zobaczyć:
Starting dovecot.
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:
/usr/local/etc/rc.d/dovecot status

Jeżeli w odpowiedzi dostaniemy coś w stylu:
dovecot is running as pid 19450.

to znaczy, że wszystko powinno być w porzadku.
Zanim uruchomimy postfix'a pora wyłączyć sendmaila, który zapewne wciąż działa:
pkill -9 sendmail

Teraz pora na postfix'a.
/usr/local/etc/rc.d/postfix start

Sprawdźmy:
/usr/local/etc/rc.d/postfix status

I podobnie:
postfix is running as pid 19543.

7. Test

Teraz pora połączyć się i sprawdzić, czy oczekiwane opcje działają:

telnet localhost 25

przykład transakcji:
Connected to localhost.
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:
telnet localhost 110

wynik:
Connected to localhost
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 :)

Autor: 
Marcin Biernacki

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.