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
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
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:
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
# 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:
# 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:
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:
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
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
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.
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".