[svn/pld-doc]: rev 215 - pld-doc/book/pl_book__uslugi
pawelb w svn.pld-dc.org
pawelb w svn.pld-dc.org
Nie, 11 Sty 2004, 15:50:51 CET
Author: pawelb
Date: 2004-01-11 15:50:50 +0100 (Sun, 11 Jan 2004)
New Revision: 215
Added:
pld-doc/book/pl_book__uslugi/pl_uslugi_poczta__postfix.sec
Log:
- init
Added: pld-doc/book/pl_book__uslugi/pl_uslugi_poczta__postfix.sec
===================================================================
--- pld-doc/book/pl_book__uslugi/pl_uslugi_poczta__postfix.sec 2004-01-11 14:49:48 UTC (rev 214)
+++ pld-doc/book/pl_book__uslugi/pl_uslugi_poczta__postfix.sec 2004-01-11 14:50:50 UTC (rev 215)
@@ -0,0 +1,563 @@
+<?xml version="1.0" encoding="iso-8859-2"?>
+<section>
+ <title>Opis instalacji postfixa by Grifter</title>
+ <para>
+ Hmm postfix to takie coś co pozwala nam zrobić serwer pocztowy na naszym serwerze. No tak, w sumie powiecie ściagamy poldkiem instalujemy i działa... działa ale chcemy coś wiecej... chcemy by nasz smtpd byl ładnie skonfigurowany i taki bardziej 31337 ;)
+ </para>
+ <section>
+ <title>Zaczynamy</title>
+ <para>
+ Ściagamy to co nam będzie potrzebne. Wiadomo... postfix i śmieci które mu są potrzebne:
+ </para>
+ <screen>
+ poldek -i postfix cyrus-sasl cyrus-sasl-plain cyrus-sasl-saslauthd cyrus-sasl-login
+ </screen>
+ <para>
+ A tutaj coś co bedzie nam potrzebne do tworzenia certyfikatow.
+ </para>
+ <screen>
+ poldek -i openssl-tools
+ </screen>
+ <para>
+ A tutaj coś żebyśmy mogli pobraś pocztę z serwera.
+ </para>
+ <screen>
+ poldek -i solid-pop3d inetd rc-inetd
+ </screen>
+ </section>
+ <section>
+ <title>Konfiguracja</title>
+ <para>
+ Przyszedł czas na konfigurację postfixa.
+ </para>
+ <screen>
+ # echo 'pwcheck_method:saslauthd' > /etc/sasl/smtpd.conf
+ </screen>
+ <para>
+ Uruchom saslauthd:
+ </para>
+ <screen>
+ # /etc/rc.d/init.d/saslauthd start
+ </screen>
+ <para>
+ Uruchom postifixa:
+ </para>
+ <screen>
+ # /etc/rc.d/init.d/postfix start
+ </screen>
+ <para>
+ Teraz chcemy żeby postfix wymagał autentykacji:
+ </para>
+ <screen>
+ # postconf -e smtpd_sasl_auth_enable=yes
+ # postconf -e smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
+ </screen>
+ <para>
+ Teraz linijka dla popsutych Outlook'ow.
+ </para>
+ <screen>
+ # postconf -e broken_sasl_auth_clients=yes
+ # postconf -e mynetworks=127.0.0.0/8,192.168.1.1/32
+ </screen>
+ <para>
+ Restart postfixa:
+ </para>
+ <screen>
+ # /etc/rc.d/init.d/postfix restart
+ </screen>
+ <para>
+ No i to wszystko razem powinno wygladać tak:
+ </para>
+ <screen>
+ # postconf -n
+ alias_database = hash:/etc/mail/aliases
+ alias_maps = hash:/etc/mail/aliases
+ biff = no
+ broken_sasl_auth_clients = yes
+ command_directory = /usr/sbin
+ config_directory = /etc/mail
+ daemon_directory = /usr/lib/postfix
+ debug_peer_level = 2
+ default_privs = nobody
+ mail_owner = postfix
+ mail_spool_directory = /var/mail
+ myhostname = networking.ee
+ mynetworks = 127.0.0.0/8, 192.168.1.1/32, 192.168.1.1/32
+ myorigin = $myhostname
+ queue_directory = /var/spool/postfix
+ setgid_group = maildrop
+ smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
+ smtpd_sasl_auth_enable = yes
+ </screen>
+ </section>
+ <section>
+ <title>Szyfrowanie</title>
+ <para>
+ Wlączamy teraz szyfrowanie wysyłania poczty oraz transmisji między MXami dla rożnych domen
+ </para>
+ <para>
+ JAK WYGENEROWAC CERTYFIKAT SSL?
+ </para>
+ <para>
+ Podczas generowania certyfikatu bedziesz musiał odpowiedzieć na kilka prostych pytan ;)
+ </para>
+ <para>
+ Robimy to w sposób następujący:
+ </para>
+ <screen>
+ # openssl genrsa -out key.pem 1024
+ # openssl req -new -x509 -key key.pem -out cert.pem
+ # cat cert.pem >> key.pem; mv -f key.pem cert.pem
+ # cp cert.pem /var/lib/openssl/certs/nasza.domena.pl.pem
+ </screen>
+ <para>
+ Do pliku /etc/mail/main.cf należy dodać 4 linijki, takie jak poniżej:
+ </para>
+ <screen>
+ smtpd_tls_cert_file = /var/lib/openssl/certs/nasza.domena.pl.pem
+ smtpd_tls_key_file = $smtpd_tls_cert_file
+ smtpd_use_tls = yes
+ smtp_use_tls = yes
+ </screen>
+ <para>
+ W pliku /etc/mail/master.cf należy zastapić aktualną linijkę czyli tą z domyślnej instalacji:
+ </para>
+ <screen>
+ #smtps inet n - n - - smtpd
+ na naszą aktualną:
+ smtps inet n - y - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
+ </screen>
+ </section>
+ <section>
+ <title>Domeny</title>
+ <para>
+ Jeżeli posiadamy więcej niż jedną domenę na serwerze to w /etc/mail/main.cf dopisujemy:
+ </para>
+ <screen>
+ mydestination = $myhostname, jakas.domena.pl, costam.gdziestam.pl, PLD.biz.pl
+ </screen>
+ <para>
+ Jeżeli chcemy aby nasz postfix obłsugiwał wirtualne domeny (przyznawał się do nich) dopisujemy w /etc/mail/main.cf takie dwie linijki:
+ </para>
+ <screen>
+ relay_domains = hash:/etc/mail/domains
+ virtual_maps = hash:/etc/mail/virtual
+ </screen>
+ <para>
+ Tworzymy /etc/mail/domains i robimy nastepujące wpisy:
+ </para>
+ <screen>
+ # plik domains, w nim wpisane domeny dla których nasz serwer pocztę bedzie przyjmował
+ networking.ee relay
+ jakas.domena.pl relay
+ costam.gdziestam.pl relay
+ PLD.biz.pl relay
+ </screen>
+ <para>
+ Do /etc/mail/virtual dopisujemy na przykład coś takiego:
+ </para>
+ <screen>
+ # plik virtual, w nim wpisane są kąta w domenach ktore obsługujemy
+ # schemat wpisu
+ # ktostam.nazwisko w domena.pl konto_w_systemie
+ rafal.drozd w networking.ee grifter
+ rafal.drozd w jakas.domena.pl grifter
+ rafal.drozd w costam.gdziestam.pl grifter
+ rafal.drozd w PLD.biz.pl grifter
+ virusalert w networking.ee grifter
+ # to ostatnie będzie nam później do amavisa potrzebne :)
+ </screen>
+ <para>
+ Teraz musimy wklepać
+ </para>
+ <screen>
+ # postmap /etc/mail/domains
+ # postmap /etc/mail/virtual
+ </screen>
+ <para>
+ No i restart postfixa
+ </para>
+ <screen>
+ # /etc/rc.d/init.d/postfix restart
+ </screen>
+ </section>
+ <section>
+ <title>Usprawnienia</title>
+ <para>
+ Dodatkowe wpisy które poprawią pracę naszego postfixa :)
+ </para>
+ <para>
+ Edytujemy /etc/mail/main.cf i dodajemy następujace wpisy:
+ </para>
+ <screen>
+ disable_vrfy_command = yes
+ # liczba odbiorcow max 100 dla jednego maila
+ smtpd_recipient_limit = 100
+ smtpd_error_sleep_time = 5
+ smtpd_hard_error_limit = 10
+ smtpd_helo_required = yes
+ # ogranicz do 2 mega [2000000] wielkosc przesylki, wlasciwie majac dobre lacze mozna
+ # wpisac 10 mega [10000000]
+ message_size_limit = 2000000
+ # spam fight! :>
+ header_checks = regexp:/etc/mail/header_checks
+ mail_name = PLD - $myhostname
+ smtpd_banner = $myhostname ESMTP $mail_name. We block/report all spam.
+ smtpd_soft_error_limit = 60
+ default_process_limit = 3
+ maps_rbl_domains = relays.ordb.org
+ smtpd_client_restrictions = reject_maps_rbl
+ </screen>
+ <para>
+ Tworzymy /etc/mail/header_checks i dopisujemy:
+ </para>
+ <screen>
+ /^To: .*friend w public/ REJECT Header-To address revoked due to too much spam.
+ /^Subject: ADV\W/ REJECT Header-Subject beginning with "spam" ADV tag rejected.
+ </screen>
+ </section>
+ <section>
+ <title>Końcowa konfiguracja</title>
+ <screen>
+ # postconf -n
+ alias_database = hash:/etc/mail/aliases
+ alias_maps = hash:/etc/mail/aliases
+ biff = no
+ broken_sasl_auth_clients = yes
+ command_directory = /usr/sbin
+ config_directory = /etc/mail
+ daemon_directory = /usr/lib/postfix
+ debug_peer_level = 2
+ default_privs = nobody
+ default_process_limit = 3
+ disable_vrfy_command = yes
+ header_checks = regexp:/etc/mail/header_checks
+ mail_name = PLD - $myhostname
+ mail_owner = postfix
+ mail_spool_directory = /var/mail
+ maps_rbl_domains = relays.ordb.org
+ message_size_limit = 2000000
+ myhostname = networking.ee
+ mynetworks = 127.0.0.0/8,192.168.1.1/32
+ myorigin = $myhostname
+ queue_directory = /var/spool/postfix
+ relay_domains = hash:/etc/mail/domains
+ setgid_group = maildrop
+ smtp_use_tls = yes
+ smtpd_banner = $myhostname ESMTP $mail_name. We block/report all spam.
+ smtpd_client_restrictions = reject_maps_rbl
+ smtpd_error_sleep_time = 5
+ smtpd_hard_error_limit = 10
+ smtpd_helo_required = yes
+ smtpd_recipient_limit = 100
+ smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
+ smtpd_sasl_auth_enable = yes
+ smtpd_soft_error_limit = 60
+ smtpd_tls_cert_file = /var/lib/openssl/certs/nasza.domena.pl.pem
+ smtpd_tls_key_file = $smtpd_tls_cert_file
+ smtpd_use_tls = yes
+ virtual_maps = hash:/etc/mail/virtual
+ </screen>
+ <para>
+ Zawartość master.cf
+ </para>
+ <screen>
+ # grep -v ^# /etc/mail/master.cf
+ smtp inet n - n - - smtpd
+ smtps inet n - y - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
+ pickup fifo n - n 60 1 pickup
+ cleanup unix n - n - 0 cleanup
+ qmgr fifo n - n 300 1 qmgr
+ rewrite unix - - n - - trivial-rewrite
+ bounce unix - - n - 0 bounce
+ defer unix - - n - 0 bounce
+ flush unix n - n 1000? 0 flush
+ smtp unix - - n - - smtp
+ showq unix n - n - - showq
+ error unix - - n - - error
+ local unix - n n - - local
+ virtual unix - n n - - virtual
+ lmtp unix - - n - - lmtp
+ cyrus unix - n n - - pipe flags=R user=cyrus argv=/usr/lib/cyrus/deliver -e -m ${extension} ${user}
+ uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
+ ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
+ bsmtp unix - n n - - pipe flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
+ </screen>
+ </section>
+ <section>
+ <title>Solid-pop3d</title>
+ <para>
+ Solid-pop3d, czyli coś dzięki czemu będziemy mogli pobrać pocztę z serwera.
+ </para>
+ <para>
+ Uruchomienie demona inetd:
+ </para>
+ <screen>
+ # /etc/rc.d/init.d/rc-inetd start
+ </screen>
+ <para>
+ Należy wyedytować plik /etc/spop3d-ssl.conf w którym podajemy scieżkę do certyfikatu /var/lib/openssl/certs/nasza.domena.pl.pem
+ </para>
+ <para>
+ Plik wygląda mniejwięcej tak:
+ </para>
+ <screen>
+ <Global>
+ /* AllowRootLogin yes */
+ MailDropName "/var/mail/%s"
+ MailDropType mailbox
+ UserBullFile .spop3d-bull
+ AutoLogoutTime 60s
+ UserOverride yes
+ AllowAPOP yes
+ ChangeGID true
+ TLSWrap yes
+ TLSCertFile /var/lib/openssl/certs/nasza.domena.pl.pem
+ TLSKeyFile /var/lib/openssl/certs/nasza.domena.pl.pem
+ /* ReadExpire 0 */
+ /* UnreadExpire 5w */
+ </Global>
+ </screen>
+ <para>
+ Zrestartuj potem demona inetd:
+ </para>
+ <screen>
+ # /etc/rc.d/init.d/rc-inetd restart
+ </screen>
+ <para>
+ No i restart postfixa
+ </para>
+ <screen>
+ # /etc/rc.d/init.d/postfix restart
+ </screen>
+ </section>
+ <section>
+ <title>amavis + mks</title>
+ <para>
+ Przystępujemy do instalacji i konfiguracji amavisa + mks :)
+ </para>
+ <para>
+ Instalujemy poldkiem mksa, serwer mksd, bazy, oraz scrypt aktualizujący bazy
+ </para>
+ <screen>
+ poldek -i mkd mksd mks-bases mks-updater
+ </screen>
+ <para>
+ Teraz sciągamy jakiegoś wirusa i sprawdzamy czy mks32 działa...
+ </para>
+ <screen>
+ # wget http://www.eicar.org/download/eicar.com
+ # mks32 eicar.com
+ mks_vir: init... 1.9.0 for Linux i386, 2003.07.02
+ mks_vir: database version 2003 7 11 13 23
+ mks_vir: init OK, scan mode
+ mks_vir: check file(s)
+ mks_vir: file: eicar.com
+ mks_vir: --heuristic for virus Eicar.Test
+ mks_vir: --heuristic for virus Eicar.Test
+ mks_vir: status: virus found: eicar.com
+ mks_vir: exit code: 0x01
+ </screen>
+ <para>
+ Jesli dostaliście coś takiego... tzn ze wszystko jest ok ;)
+ </para>
+ <para>
+ Teraz przetestujemy czy mksd działa poprawnie.
+ </para>
+ <screen>
+ # /etc/rc.d/init.d/mksd start
+ # mksscan ../mks32-1-9-0-Linux-i386/eicar.com
+ VIR Eicar.Test /root/skaner/eicar.com
+ </screen>
+ <para>
+ Jesli dostaleś coć takiego tzn. ze wszystko jest okej.
+ mksd przyśpiesza znacznie pracę na słabych maszynach... wtedy znacznie odczujesz.
+ </para>
+ <para>
+ Instalujemy teraz amavisa
+ </para>
+ <screen>
+ poldek -i amavisd-new
+ </screen>
+ <para>
+ No i teraz najgorsze ;)
+ </para>
+ <para>
+ Edytujemy /etc/amavisd.conf
+ </para>
+ <para>
+ Odkomentuj linie:
+ </para>
+ <screen>
+ @bypass_spam_checks_acl = qw( . ); # uncomment to DISABLE anti-spam code
+ </screen>
+ <para>
+ Pozmieniaj odpowiednie linie
+ </para>
+ <screen>
+ $mydomain = 'twoja.domena.pl'; # (no useful default)
+ $daemon_user = 'root'; # (no default; customary: vscan or amavis)
+ $daemon_group = 'root'; # (no default; customary: vscan or amavis)
+ </screen>
+ <para>
+ Zakomentuj linie:
+ </para>
+ <screen>
+ #$unix_socketname = "$MYHOME/amavisd.sock"; # amavis helper protocol socket
+ </screen>
+ <para>
+ Jeśli nie chcesz żeby amavis używal pewnych pakerów to zakomentuj odpowiednie linie, np.
+ </para>
+ <screen>
+ #$unrar = 'unrar';
+ </screen>
+ <para>
+ Usuń wszystkie wpisy na temat antywirusów (@av_scanners = ) i zastąp to wpisem z pliku README z archiwum mksd:
+ </para>
+ <screen>
+ ['MkS_Vir daemon',
+ 'mksscan', '-s -Q {}',
+ [0], [1..7],
+ qr/^... (\S+)/
+ ],
+ </screen>
+ <para>
+ Usun wpisy z @av_scanners_backup =
+ </para>
+ <para>
+ W swoim systemie pocztowym (postfix) utwórz użytkownika (lub alias) "virusalert" lub pozmieniaj wpisy:
+ </para>
+ <screen>
+ $mailfrom_notify_admin
+ $mailfrom_notify_recip
+ $virus_admin
+ </screen>
+ <para>
+ My zrobiliśmy wczesniej aliasa dla virusalert'a ;)
+ </para>
+ <para>
+ Ja sobie jeszcze dopisałem:
+ </para>
+ <screen>
+ $hdrfrom_notify_sender = $mailfrom_notify_admin;
+ </screen>
+ <para>
+ Jesli nie chcesz aby nadawcy listow oraz admini dostawali informacje o wirusach w domyślnym języku (English) to odkomentuj linie i zrób własne wpisy w /var/amavis/*.txt :]
+ </para>
+ <screen>
+ # $notify_sender_templ = read_text('/var/amavis/notify_sender.txt');
+ # $notify_virus_sender_templ=read_text('/var/amavis/notify_virus_sender.txt');
+ # $notify_virus_admin_templ = read_text('/var/amavis/notify_virus_admin.txt');
+ # $notify_virus_recips_templ=read_text('/var/amavis/notify_virus_recips.txt');
+ i zmien
+ #$bdy_encoding = 'iso-8859-1'; # (default: 'iso-8859-1')
+ na
+ $bdy_encoding = 'iso-8859-2'; # (default: 'iso-8859-1')
+ </screen>
+ <para>
+ Wedlug licencji powinnieneś umieścić w notify_sender.txt reklamę http://www.mks.com.pl
+ gdyż jest do warunek licencji na używanie mks'a ;) Na końcu pliku /usr/sbin/amavisd
+ znajdują sie przykładowe szablony.
+ </para>
+ <para>
+ W pliku /etc/mail/master.cf dopisujemy nową linnię:
+ </para>
+ <screen>
+ localhost:10025 inet n - n - - smtpd
+ </screen>
+ <para>
+ No i restart postfixa,amavisda i mksa
+ </para>
+ <screen>
+ # /etc/rc.d/init.d/postfix restart
+ # /etc/rc.d/init.d/mksd restart
+ # /etc/rc.d/init.d/amavisd restart
+ </screen>
+ <para>
+ Teraz testujemy amavisa:
+ </para>
+ <screen>
+ # telnet 127.0.0.1 10024
+ Trying 127.0.0.1.10024...
+ Connected to localhost.
+ Escape character is '^]'.
+ 220 [127.0.0.1] ESMTP amavisd-new service ready
+ MAIL FROM: <root>
+ 250 2.1.0 Sender root OK
+ RCPT TO: <root>
+ 250 2.1.5 Recipient root OK
+ DATA
+ 354 End data with <CR><LF>.<CR><LF>
+ Subject: test bez wirusa
+ test
+ .
+
+ 250 2.6.0 Ok, id=29569-01, from MTA: 250 Ok: queued as A1017FD1E
+ </screen>
+ <para>
+ Dostaleś 250? To znaczy, ze amavisd sprawdził przesyłke :) nie wierzysz?
+ tail -n 100 -f /var/log/maillog
+ </para>
+ <para>
+ A teraz sprawdzimy jak reaguje na przesyłkę z wirusem:
+ </para>
+ <screen>
+ # telnet 127.0.0.1 10024
+ Trying 127.0.0.1.10024...
+ Connected to localhost.
+ Escape character is '^]'.
+ 220 [127.0.0.1] ESMTP amavisd-new service ready
+ MAIL FROM: <root>
+ 250 2.1.0 Sender root OK
+ RCPT TO: <root>
+ 250 2.1.5 Recipient root OK
+ DATA
+ 354 End data with <CR><LF>.<CR><LF>
+ Subject: test z wirusem
+
+ X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
+ .
+ 250 2.5.0 Ok, but 1 BOUNCE
+ </screen>
+ <para>
+ No i znalazł wirusa :) w logach mamy:
+ </para>
+ <screen>
+ Jul 14 04:17:43 networking amavis[29569]: (29569-02) INFECTED (Eicar.Test),
+ <root> -> <root>, quarantine virus-20030714-041716-29569-02, Message-ID: , Hits: -
+ </screen>
+ <para>
+ Teraz jeszcze mala obróbka plików cf od postfixa ;)
+ </para>
+ <para>
+ Edytujemy /etc/mail/master.cf
+ </para>
+ <screen>
+ Linijke:
+ smtp inet n - n - - smtpd
+ zamieniamy na:
+ smtp inet n - n - - smtpd -o content_filter=smtp-amavis:[127.0.0.1]:10024
+ </screen>
+ <para>
+ oraz dodajemy jeszcze:
+ </para>
+ <screen>
+ smtp-amavis unix - - n - 2 smtp
+ -o smtp_data_done_timeout=1200
+ -o disable_dns_lookups=yes
+ </screen>
+ <para>
+ Restart postfixa:
+ </para>
+ <screen>
+ # /etc/rc.d/init.d/postfix restart
+ </screen>
+ <para>
+ i powinno wszystko nam pieknie latac:)
+ </para>
+ <para>
+ Wyślij sobie eicar.com w załączniku a zobaczysz że smtp odrzuci i dostaniesz maila z alertem:]
+ </para>
+</section>
+
+</section>
Więcej informacji o liście dyskusyjnej pld-doc