piątek, 21 listopada 2008 
Start arrow FreeBSD arrow POCZTA arrow Postfix + MySQL + SASL2
Menu BSD4u
FreeBSD
OpenBSD
NetBSD
Dla *BSD
FAQ BSD4u
Forum BSDGuru.org
Security Advisory
Licencje
Images BSD
Menu ogólne
Start
Aktualności
Download
Sondy
Szukaj
Linki
Książki
About BSD4u
Info
Team BSD4u
Regulamin
Kanał #BSD4u
Kontakt
Sondy
Co sądzisz o naszym nowym Projekcie, i jak oceniasz zmianę koncepcji Projektu?
 
Popularne
Kompilacja i konfigu...
SQUID - najpopularni...
Neostrada+ i modem ...
NATowanie czyli jak ...
Samba - serwer plikó...
Upgrade systemu
Apache (konfiguracja...
Praktyczne IPFW
MRTG - statystyki ru...
CVSup - pomocny podc...
Neostrada na modemie...
Postfix z autoryzacj...
Postfix - bezpieczny...
System Portów (Kolek...
Dummynet - dzielenie...
Top Download
File icon Postfix - "Krok po kroku" v1.16697
File icon Postfix - "Krok po kroku" v1.06601
File icon PPTPd - "Prosty i szybki VPN" v1.0b6066
File icon sdi.sh3845
File icon uEagle 1.0p12963
File icon named.sh2908
File icon uEagle 0.99b2864
File icon cs.sh2785
File icon uEagle 1.02752
File icon uEagle 1.12555
Ostatnie komentarze
transparent a virus...
Dodał: grzywka18
Dnia: 2008-05-13 11:19:58
hmm
Dodał: dzibi
Dnia: 2007-12-12 10:01:14
Bez tytułu
Dodał: grzywka18
Dnia: 2007-12-11 17:46:06
Bez tytułu
Dodał: termid
Dnia: 2007-05-09 18:01:11
Bez tytułu
Dodał: sarelo33
Dnia: 2006-12-30 23:50:14
Jest ok ale..
Dodał: theviant
Dnia: 2006-11-16 08:10:05
Google

Google


Newsletter
Zapisz się na nasz newsletter, jeżeli chcesz być na bieżąco informowany o aktualnościach..




Postfix z autoryzacj? i szyfrowanym po??czeniem SMTP Drukuj E-mail
Oceny: / 24
KiepskiBardzo dobry 
piątek, 29 sierpnia 2003 - Napisał: Artur Kulda (34806 odsłon)

Postfix to bardziej wydajny i bezpieczny demon SMTP aniżeli nadal powszechnie używany sendmail. Niemniej źle skonfigurowany może stanowić poważne zagrożenie bezpieczeństwa w sieci (głownie jako open relay) jak "dziurawy" sendmail. W artykule przedstawimy krótki opis jak skonfigurować postfixa oraz jak włączyć obsługę autoryzacji przy wysyłaniu poczty w postfixie.

0. Wstęp

Niniejszy artykuł przedstawia konfigurację Postfixa z autoryzacją i szyfrowanym połączeniem SMTP. Autoryzacja odbywa się na podstawie haseł systemowych, czyli na podstawie hasła do konta shellowego. W związku z tym, że taka autoryzacja wymaga przesyłania hasła za każdym razem kiedy chcemy wysłać list (co nie jest zbyt bezpieczne) "dozbrajamy" jeszcze Postfixa o obsługę TLS czyli szyfrowane połączenie SMTP. Ponadto SMTP AUTH i TLS jest wymuszony na klientach. Co to znaczy? To znaczy, że bez autoryzacji po szyfrowanym połączeniu nie zdołamy wysłać listu (jeżeli jest autoryzacja a nie ma szyfrowanego połączenia i na odwrót również nie uda nam się wysłać emaila). Wniosek z tego taki, że maila możemy wysłać tylko i wyłącznie gdy SMTP AUTH idzie w parze z TLSem 

1. Instalacja

Oczywiście polecam instalacje z portów. W naszym przypadku wykorzystywana będzie biblioteka SASL2. Jest ona potrzebna, aby móc wykorzystywać SMTP AUTH. W pierwszej kolejności wykonujemy następujące kroki. 

# cd /usr/ports/security/cyrus-sasl2
# make build && make install && make clean
# cd /usr/ports/security/cyrus-sasl2-saslauthd
# make build && make install && make clean

Następnie instalujemy Postfixa (w artykule 2.0.16). Podczas instalacji w menu zaznaczamy następujące opcje: DB3, SASL2, TLS:

# cd /usr/ports/mail/postfix
# make build && make install && make clean

2. Konfiguracja

Jeżeli podczas instalacji nie kazaliśmy aby zostały wprowadzone zmiany w pliku /etc/mail/mailer.conf, musimy dokonać tego teraz. Prawidłowo plik powinien wyglądać tak jak poniżej:

# cat /etc/mail/mailer.conf

sendmail /usr/local/sbin/sendmail
send-mail /usr/local/sbin/sendmail
mailq /usr/local/sbin/sendmail
newaliases /usr/local/sbin/sendmail

Zgodnie z dokumentacją Postfixa powinniśmy jeszcze dodać odpowiednie wpisy w pliku /etc/periodic.conf, jeżeli go nie mamy to musimy utworzyć i dodać poniższe wpisy:

daily_clean_hoststat_enable="NO"        # Purge sendmail host status cache daily
daily_status_mail_rejects_enable="NO"   # Check mail rejects
daily_status_include_submit_mailq="NO"  # Also submit queue
daily_submit_queuerun="NO"              # Also submit queue

a) podstawowa

Po instalacji konieczne jest skonfigurowanie Postfixa. Zmieniamy następujące linie lub jeżeli ich brakuje to dodajemy do pliku main.cf:

# cd /usr/local/etc/postfix
# vi main.cf

--- main.cf ---

# nazwa hosta (może być taka sama jak domena)
myhostname = host.domena.pl

# nazwa domeny
mydomain = domena.pl

myorigin = $mydomain
inet_interfaces = all

# przyjmujemy pocztę dla domen:
mydestination = $mydomain

# kod zwracany gdy nie ma w systemie odbiorcy 
unknown_local_recipient_reject_code = 550

# adresy sieci, z których dopuszczony będzie relaying, jeżeli robisz autoryzację
# i chcesz aby lokalni userzy również się autoryzowali pozostaw tylko 127.0.0.0/8
# w poniższych dwóch opcjach
mynetworks = ip_zewnetrzne, 127.0.0.0/8, 192.168.1.0/24
relay_domains = ip_zewnetrzne, 127.0.0.0/8, 192.168.1.0/24

# ścieżka do pliku i bazy z aliasami
alias_maps = hash:/usr/local/etc/postfix/aliases
alias_database = hash:/usr/local/etc/postfix/aliases

# ścieżka do katalogu z mailami
mail_spool_directory = /var/mail

# banner naszego smtp
smtpd_banner = $myhostname ESMTP $mail_name

# zmiana nagłówka maila z Postfix na cokolwiek 
# (możemy tu wpisać co chcemy np. Qmail) 
mail_name = Postfix

local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10

# max. wielkość maila (5MB):
message_size_limit = 5000000

# wielkość skrzynki pocztowej (25MB):
mailbox_size_limit = 25600000

# max. ilość wysłanych maili za jednym razem
smtpd_recipient_limit = 10

# blokowanie komendy SMTP VRFY (troszkę przystopuje spammerów)
disable_vrfy_command = yes

# dostarczanie maili jeżeli server jest wyłączony
# sprawdzaj zdalny server co pół godziny i zwracaj błąd do nadawcy po trzech dniach
queue_run_delay = 30m
maximal_queue_lifetime = 3d

# czas oczekiwania na komunikaty o błędach
smtpd_error_sleep_time = 3
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 5

--- end of main.cf ---

Aby dodać kilka aliasów wskazujących na jedno konto pocztowe edytujemy plik /usr/local/etc/postfix/aliases, który ma następującą składnię:

alias:konto
np.
admin:arti

co powoduje, że maile zaadresowane na zawsze trafią na konto arti. Po utworzeniu aliasów i zapisaniu zmian w pliku wydajemy komendę, która zbuduje nam bazę aliasów i bazę access (opisana w SMTP AUTH):

# newaliases
# postmap access

Dodajemy postfixa do grupy mail:

# pw mod group mail -M postfix

W tym momencie postfix już powinien zadziałać, odpalamy go i telnetujemy się na jego port

# postfix start
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 domena.pl ESMTP Postfix
EHLO domena.pl
250-domena.pl
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-XVERP
250 8BITMIME
QUIT
221 Bye
Connection closed by foreign host.

W takim przypadku wydaje się być wszystko w porządku. Spróbuj wysłać maila, jeżeli będą problemy to zaglądaj w logi /var/log/maillog i sprawdź powyższe kroki.

UWAGA: Po każdorazowej zmianie w pliku main.cf lub master.cf wydaj polecenie postfix reload aby Postfix zaczytał nową konfigurację. Również po każdorazowym dodaniu nowego aliasu wydajemy polecenie newaliases.

b) SMTP AUTH 

do naszego configa main.cf dodajemy poniższe opcje:

# włączenie autoryzacji
smtpd_sasl_auth_enable = yes

# to pozwoli na logowanie się starszych klientów (np. MS OE 4)
broken_sasl_auth_clients = yes

# opcje, które z metod autoryzacji nie będą obsługiwane
smtpd_sasl_security_options = noanonymous

# autoryzacja jest wymagana przy wysyłaniu listów z domen(y)
smtpd_sasl_local_domain = 

# poniższymi trzema opcjami możemy dowolnie manipulować i ustawić odpowiedni prawa
# więcej opcji znajdziesz w pliku sample-smtpd.cf

# sposób sprawdzania nagłówka RCPT TO: 
smtpd_recipient_restrictions = 
    permit_sasl_authenticated, 
    reject_unauth_destination

#  sprawdzanie IP kompa, z którego wysyłany jest list 
smtpd_client_restrictions = 
    permit_sasl_authenticated, 
    reject_unknown_client

# sposób sprawdzania nagłówka MAIL FROM: 
smtpd_sender_restrictions =
    permit_sasl_authenticated,
    check_sender_access hash:/usr/local/etc/postfix/access

Teraz utworzymy sobie bazę adresów e-mail, z których można wysyłać maile przez nasz serwer. Składnia tego pliku jest następująca:

adres e-mailco_zrobić
np.

REJECT

co oznacza, że adres e-mail, który ma w nagłówku MAIL FROM zostanie wysłany a mail z nagłówkiem zostanie zablokowany. 
Po utworzeniu pliku i zapisaniu zmian, każdorazowo budujemy bazę access:

# postmap access

P.S. Aby pozbyć się cfaniaków (niektórzy nasi użytkownicy), którzy po zautoryzowaniu się mogą dowolnie zmienić nagłówek MAIL FROM (np. mogą podać się za admina i wpisać sobie MAIL FROM ) musimy stworzyć sobie plik, w którym zamieścimy adresy e-mail i loginy z jakich można je wysłać. Jednym słowem mówiąc:

arti
arti

arti może mieć nagłówek MAIL FROM tylko taki jak zdefiniujemy w tym pliku (czyli albo albo ) a bolo może mieć tylko W ten oto sposób nikt się nie podszyje pod nikogo. Nazwijmy ten plik np. login i stwórzmy go w /usr/etc/local/postfix:

# cd /usr/local/etc/postfix
# vi login
# postmap login

Aby powyższe zadziałało musimy dodać dodatkową opcję do naszego main.cf:

smtpd_sender_login_maps = hash:/usr/local/etc/postfix/login

a w smtpd_sender_restrictions po znaku = dopisujemy:
reject_sender_login_mismatch

Tworzymy plik smtpd.conf w podanej lokalizacji z odpowiednimi wpisami :

# vi /usr/local/lib/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login

Edytujemy plik /usr/local/etc/rc.d/saslauthd.sh i zmieniamy wartość w saslauthd_flags z "-a pam" na "-a getpwent". Teraz linijka ta powinna wyglądać tak jak poniżej:

saslauthd_flags="-a getpwent"

Uruchamiamy postfixa i sasluthd:

# postfix start
# /usr/local/etc/rc.d/saslauthd.sh start

Następnie telnetujemy się na port 25 i sprawdzamy nasze dokonania:

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 domena.pl ESMTP Postfix
EHLO domena.pl
250-domena.pl
250-PIPELINING
250-SIZE 20480000
250-ETRN
250-AUTH PLAIN LOGIN 
250-AUTH=PLAIN LOGIN
250-XVERP
250 8BITMIME
QUIT
221 Bye
Connection closed by foreign host.

To znaczy, że wszystko jest ok, autoryzacja działa. Aby się upewnić spróbuj powysyłać kilka maili różnymi sposobami i z różnych miejsc. Możesz również spróbować wysłać maila z OE nie konfigurując go do używania autoryzacji, jeżeli nie wyśle to jest OK.

Konfiguracja klientów do używania SMTP AUTH.

Czas na konfiguracje klientów na przykładzie (Outlook Express.) :

Menu --> Narzędzia --> Konta --> Właściwości -->Serwery

Zaznacz "Serwer wymaga uwierzytelnienia"
Oczywiście twój e-mail wychodzący ma mieć adres i użytkownika domeny $mydomain.

c) TLS

teraz do naszej autoryzacji dorzucimy szyfrowane połączenie SMTP (aby mieć również szyfrowanego POP3 zainteresuj się programem Stunnel).
W tym wypadku będziemy musieli wygenerować odpowiednie certyfikaty dla naszego serwera. Możemy się posłużyć artykułem o Stunnel, w którym to jest opisane jak się takie certyfikaty tworzy. Na końcu naszego pliku main.cf dopisujemy poniższe opcje:

# ścieżka do pliku z certyfikatem serwera
smtpd_tls_cert_file = /usr/local/etc/postfix/cert/smtpdcert.pem
# ścieżka do pliku z kluczem prywatnym serwera
smtpd_tls_key_file = /usr/local/etc/postfix/cert/smtpdkey.pem
# ścieżka do pliku z certyfikatem naszej organizacji CA
smtpd_tls_CAfile = /usr/local/etc/postfix/cert/cacert.pem

# chcemy używać TLSa
smtp_use_tls = yes
smtpd_use_tls = yes

# używamy autoryzacji tylko i wyłącznie po szyfrowanym połączeniu
smtpd_tls_auth_only = yes
smtp_tls_note_starttls_offer = yes

# poziom logowania 0-4
smtpd_tls_loglevel = 1

smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Uruchamiamy postfixa i sasluthd:

# postfix start
# /usr/local/etc/rc.d/saslauthd.sh start

Następnie telnetujemy się na port 25 i sprawdzamy nasze dokonania:

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 domena.pl ESMTP Postfix
EHLO domena.pl
250-domena.pl
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-XVERP
250 8BITMIME
QUIT
221 Bye
Connection closed by foreign host.

Wydaje się być wszystko w porządku. Spróbujmy wysłać teraz maila bez dodatkowego konfigurowania klienta np. OE. Jeżeli nie wyśle to jest wszystko tak jak należy. Dlaczego? Dlatego, że wymusiliśmy aby autoryzacja odbywała się tylko po szyfrowanym połączeniu a tego jeszcze nie ustawiliśmy w kliencie.

Konfiguracja klientów do używania SMTP AUTH i TLS.

Czas na konfiguracje klientów na przykładzie (Outlook Express.) :

Menu --> Narzędzia --> Konta --> Właściwości -->Serwery

Zaznacz "Serwer wymaga uwierzytelnienia"

Menu --> Narzędzia --> Konta --> Właściwości -->Zaawansowane

Zaznacz "Ten serwer wymaga bezpiecznego połączenia SSL" w miejscu SMTP. 
Oczywiście twój e-mail wychodzący ma mieć adres i użytkownika domeny $mydomain.

Teraz powinniśmy osiągnąć efekt jaki pożądaliśmy. Postfix + SMTP AUTH + TLS. Cóż więcej trzeba chcieć. Teraz wystarczy dobrze przetestować serwer i zaglądać w logi.

3. Uruchamianie Postfixa podczas startu systemu.

Aby nasz Postfix zawsze był uruchamiany podczas startu systemu musimy napisać sobie mały skrypt, który będzie za nas to robił.

# cd /usr/local/etc/rc.d
# vi postfix.sh

--- postfix.sh ---

#!/bin/sh
case $1 in
    start)
        if [ -x /usr/local/sbin/postfix ]; then
        /usr/local/sbin/postfix start
        fi
    ;;
    stop)
        /usr/local/sbin/postfix stop
    ;;
    reload)
        /usr/local/sbin/postfix reload
    ;;
    *)
        echo "USAGE $0 (start|stop|reload)"
    exit 1
esac

--- end of postfix.sh ---

Jeszcze tylko zmiana praw do pliku i gotowe

# chmod 755 postfix.sh

Po bardziej szczegółowe informacje na temat Postfixa i jego konfiguracji odsyłam do dokumentacji /usr/local/share/doc/postfix oraz do plików sample-* w /usr/local/etc/postfix.
Za wszelkie uwagi i poprawki będę wdzięczny.


Autor: Artur Kulda
arti(at)bsd4u.org

Powyższy artykuł został udostępniony na zasadach Licencji BSD

Komentarze:
Re: Pozdrownienia dla autora artykułu.
Dodane przez tomus w dniu - 2004-04-03 21:24:53
Witam, 
 
Początkowo ze skonfigurowaniem Postfix'a + SASL + TLS miałem trochę problemów, ale jakoś się z nimi uporałem - dobra rada dla początkujących, którzy chcieli by to skonfigurować: 
 
Czytać uważnie artykuł i w razie problemów przeczytać jeszcze dokumentację na stronie http://www.postfix.org. 
 
Pozdrowienia dla autora :) - wielkie dzięki arti! , Tomek.
Re: Postfix z autoryzacją i szyfrowanym
Dodane przez sybnet w dniu - 2004-07-04 00:21:53
FreeBSD 5.2.1 --> po instalacji i konfiguracji wedłóg powyższego opisu NIE DZIAŁA. Po "telnet localhost 25" --> łączy się, ale nie wyśiwetla powitania, i nie odpowiada na żadne polecenia ( np. "ehlo wp.pl" ). Nie wiem co może być źle? POMOCY
Re: Postfix z autoryzacją i szyfrowanym
Dodane przez planar w dniu - 2004-07-12 00:43:35
Witam, 
Dla wszystkich, którym przy próbie wysłania maila pojawia się komunikat: "TLS not available due to temporary reason", w moim przypadku wina była po stronie klienta, a konkretnie oprogramowania antywirusowego (NAV). Po wyłączeniu skanowania poczty wychodzącej wszystko było OK. 
 
--  
Pozdrawiam 
LJ
Re: Postfix z autoryzacją i szyfrowanym
Dodane przez hellboy w dniu - 2004-08-01 11:23:40
Przejżyj logi w /var/log/maillog, Ja mialem to samo jak brakowalo jakiegos pliku lub nie byl zrobiony jako DB.  
Zeby pliki byly rehashowane musisz wydac polecenie  
postmap nazwa_pliku. 
Jezeli nie bedzie wszystkich plikow uzytych w konfiguracji to 
podczas logowania postfix bedzie sie blokowal z powodu bledu.
Re: Postfix z autoryzacją i szyfrowanym
Dodane przez slesh w dniu - 2004-09-07 15:14:34
Tekst w miare czytelny i zrozumialy jednak mam problem w punkcie: 
"Edytujemy plik /usr/local/etc/rc.d/saslauthd.sh i zmieniamy wartość w saslauthd_flags z "-a pam" na "-a getpwent". Teraz linijka ta powinna wyglądać tak jak poniżej: 
 
saslauthd_flags="-a getpwent" " 
 
dokładnie chodzi o zamiane flagi -a pam na -a getpwent. Przy takim ustawieniu saslauthd zwraca bład o nieznanej metodzie autoryzacji i sie nie odpala. 
 
Ma ktos jakis pomysł? 
 
FreeBSD 5.2.1 
Re: Postfix z autoryzacją i szyfrowanym
Dodane przez arti w dniu - 2004-09-07 18:31:23
Witam, 
 
No to spróbuj z -a pam. 
 
Artykuł był pisany dla wersji 4.x niemniej powinien też działać w 5.x po małych zmianach. 
 
A dokładnie jaki błąd zwraca?
Re: Postfix z autoryzacją i szyfrowanym
Dodane przez natan4 w dniu - 2004-10-05 21:16:27
Witam 
Oto moj konfig :) 
myhostname = domena.pl 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
myorigin = /etc/mailname 
mydestination = domena.pl 
relayhost = 
#relay_domains =  
mynetworks = 127.0.0.0/8 , 192.168.0.0/24 
mailbox_command = 
mailbox_size_limit = 0 
recipient_delimiter = + 
 
--cut--- 
dalej mam sasl i tls :) 
 
Jak chce wysylac poczte to musze miec odchaszowane "relay_domains = " 
i podac doemne czyli np zeby wyslac maila do hello.pl musze miec ustawione 
relay_domains = pl 
 
A jak wam to u was dziala ? 
Re: Postfix z autoryzacją i szyfrowanym
Dodane przez al w dniu - 2005-01-16 21:00:22
na wstepie dzieki za ten artykół, byl inspiracja do przejscia na posfix :), ale jak sie domyslacie mam problem. 
nie dziala mi autoryzacja, nie robilem jeszcze tls, a po zalogowniu sie telnetem dostaje taka odpowiedz : 
250-PIPELINING 
250-SIZE 10240000 
250-ETRN 
250-AUTH LOGIN PLAIN 
250-AUTH=LOGIN PLAIN 
250 8BITMIME 
 
niestety, jak ustawiam w usawieniach serwer wymaga uwierzytelnienia dostaje odpowiedz command not implemented. kiedy to wylacze moge spokojnie wysylac maile. pewnie gdzies robie blad tylko nie wiem gdzie szukac, bo niby wszystko robie jak w artykole. dzieki za odp. 
pozdrawiam 
al

Tylko zarejestrowani użytkownicy mogą pisać komentarze.
Prosze zaloguj się i dodaj komentarz.

Powered by AkoComment!

Ostatnio aktualizowany ( wtorek, 08 listopada 2005 )

« wstecz   dalej »
Ciekawostki
Możesz użyć 'whereis' by zlokalizować program, jego stronę man, lub katalog ze źródłem. Program ten jest szczególnie użyteczny, gdy chcesz się dowiedzieć gdzie w portach jest jakaś aplikacja. Spróbuj "whereis netscape" i "whereis whereis".
Pobierz
FreeBSD
OpenBSD
NetBSD
DragonFlyBSD
PC-BSD
FreeSBIE LiveCD
4.4BSD Lite
Reklama M3M.pl
Domeny
Książki

FreeBSD. Księga eksperta

FreeBSD. Księga eksperta

Cena: 125.00 zł
Dodaj do koszyka


FreeBSD. Podstawy administracji systemem

FreebBSD

Cena: 64.90 zł
Dodaj do koszyka


OpenBSD. Podstawy administracji systemem

OpenBSD

Cena: 84.90 zł
Dodaj do koszyka


OpenBSD. Tworzenie firewalla za pomocą PF

Firewall PF

Cena: 44.90 zł
Dodaj do koszyka

Licznik odwiedzin
Odwiedziło już nas
2522172
Internautów od lutego 2003

Korzystamy ze statysyk