Postfix

Z wiki linux-user
Skocz do: nawigacji, wyszukiwania
 
Linia 28: Linia 28:
 
Taka zmiana zadziała dopiero po wylogowaniu się lub restarcie komputera. Możesz również zmienić nazwe hosta za pomocą polecenia hostname. Zmiana będzie natychmiatowa lecz nie trwała to znaczy że po restarcie hostname zmieni się do wartości poprzedniej.
 
Taka zmiana zadziała dopiero po wylogowaniu się lub restarcie komputera. Możesz również zmienić nazwe hosta za pomocą polecenia hostname. Zmiana będzie natychmiatowa lecz nie trwała to znaczy że po restarcie hostname zmieni się do wartości poprzedniej.
  
'''Wyłącz również usługę sendmail'''  
+
'''Wyłącz również usługę sendmail'''  
 
  /etc/init.d/sendmail stop  
 
  /etc/init.d/sendmail stop  
 
  chkconfig --level 2345 sendmail off
 
  chkconfig --level 2345 sendmail off
Linia 58: Linia 58:
 
  pwcheck_method: saslauthd  
 
  pwcheck_method: saslauthd  
 
  mech_list: plain login
 
  mech_list: plain login
 +
 +
 +
=== Certyfikaty TLS ===
 +
 +
Nie możemy dopóścić do tego aby nasz serwer był tzw open relay. Musimy go odpowiednio zabezpieczyć.
 +
 +
$ mkdir /etc/postfix/ssl
 +
$ cd /etc/postfix/ssl
 +
$ openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
 +
$ chmod 600 smtpd.key
 +
$ openssl req -new -key smtpd.key -out smtpd.csr
 +
$ openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
 +
$ openssl rsa -in smtpd.key -out smtpd.key.unencrypted
 +
$ mv -f smtpd.key.unencrypted smtpd.key
 +
$ openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out
 +
cacert.pem -days 365
 +
 +
Po wygenerowaniu kluczy i certyfikatów przechodzimy do edycji pliku main.cf. Używamy do tego znanej już nam komendy ''postconf -e''
 +
 +
$ postconf -e 'smtpd_tls_auth_only = no'
 +
$ postconf -e 'smtp_use_tls = yes'
 +
$ postconf -e 'smtpd_use_tls = yes'
 +
$ postconf -e 'smtp_tls_note_starttls_offer = yes'
 +
$ postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
 +
$ postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
 +
$ postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
 +
$ postconf -e 'smtpd_tls_loglevel = 1'
 +
$ postconf -e 'smtpd_tls_received_header = yes'
 +
$ postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
 +
$ postconf -e 'tls_random_source = dev:/dev/urandom'
 +
 +
=== Konfiguracja dovecot'a ===
 +
 +
Edytujemy plik '''/etc/dovecot.conf''' i dodajemy do niego linijkę:
 +
 +
protocols imap imaps pop3 pop3s
 +
 +
Edytujemy plik '''/etc/postfix/master.cf''', musimy odhaszować następujące linie
 +
 +
smtps inet n - n - - smtpd
 +
-o smtpd_tls_wrappermode=yes
 +
-o smtpd_sasl_auth_enable=yes
 +
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
 +
 +
Włączamy usługi '''posfixa''', '''saslauthd''' i '''dovecot'''
 +
 +
/etc/init.d/postfix start
 +
/etc/init.d/saslauthd start
 +
/etc/init.d/dovecot start
 +
chkconfig --level 2345 postfix on
 +
chkconfig --level 2345 saslauthd on
 +
chkconfig --level 2345 dovecot on
 +
 +
Pamiętaj że powinieneś mieć odblokowane porty na swojej bramie dla usług: '''imap''', '''pop3''', '''imaps''', '''pop3s''', '''smtp''', '''smtps'''
 +
 +
== Instalujemy antywirusa ==
 +
 +
Dodajemy nowe repozytorium do pliku ''/etc/yum.repos.d/CentOS-Base.repo''
 +
 +
[rpmforge]
 +
name = Red Hat Enterprise $releasever - RPMforge.net - dag
 +
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
 +
enabled = 1
 +
protect = 0
 +
gpgcheck = 0
 +
 +
Wydajemy polecenie
 +
 +
yum clean all
 +
 +
=== Instalujemy potrzebne oprogramowanie ===
 +
 +
yum install clamd clamav
 +
 +
pobieramy aktualny pakiet '''clamsmtp'''
 +
 +
wget http://www.inet.lt/clamsmtp/clamsmtp-1.10-1.src.rpm
 +
 +
==== Budujemy pakiet ====
 +
 +
rpmbuild --rebuild clamsmtp-1.10-1.src.rpm
 +
 +
W wyniku czego powstaje plik '''rpmclamsmtp-1.10-1.i386.rpm''', który znajduje się w ścieżce ''/usr/src/redhat/RPMS/i386/''.
 +
 +
==== Instalujemy zbudowany pakiet ====
 +
 +
rpm -ihv clamsmtp-1.10-1.i386.rpm
 +
 +
 +
Edytujemy plik ''/etc/postfix/master.cf'' i dodajemy do niego następujące linijki
 +
 +
# Filtr AV scan (uťywany przez content_filter w main.cf)
 +
scan unix - - n - 16 smtp
 +
-o smtp_send_xforward_command=yes
 +
# For injecting mail back into postfix from the filter
 +
127.0.0.1:10026 inet n - n - 16 smtpd
 +
-o content_filter=
 +
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
 +
-o smtpd_helo_restrictions=
 +
-o smtpd_client_restrictions=
 +
-o smtpd_sender_restrictions=
 +
-o smtpd_recipient_restrictions=permit_mynetworks,reject
 +
-o mynetworks_style=host
 +
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
 +
 +
Następnie dodajemy do pliku ''main.cf'' wpisy
 +
 +
postconf -e 'smtpd_proxy_timeout = 600s'
 +
postconf -e 'content_filter = scan:127.0.0.1:10025'
 +
postconf -e 'receive_override_options =no_address_mappings'
 +
 +
Modyfikujem plik ''/etc/clamsmtpd.conf'' tak aby znajdowały się w nim następujące wpisy
 +
 +
OutAddress: 10026
 +
Listen: 127.0.0.1:10025
 +
User: clamav
 +
 +
Na koniec pozostaje nam włączyć wszystkie usługi
 +
 +
/etc/init.d/clamd start
 +
/etc/init.d/clamsmtpd start
 +
chkconfig --level 2345 clamd on
 +
chkconfig --level 2345 clamsmtpd on
 +
 +
== Instalacja usługi spamassasin ==
 +
 +
Instalujemy potrzebne pakiety
 +
yum install spamassassin.i386 spamassassin-tools.i386
 +
Włączamy usługę /etc/init.d/spamassassin start
 +
chkconfig --level 2345 spamassassin on
 +
 +
Włączamy aktualizację
 +
sa-update
 +
Dodajemy odpowiedni wpis do pliku ''main.cf''
 +
postconf -e 'mailbox_command = /usr/bin/procmail'
 +
Tworzymy plik ''/etc/procmailrc'' i dodajemy do niego następujące wpisy UMASK=0073
 +
VERBOSE=yes
 +
:0fw
 +
| /usr/bin/spamc -u $LOGNAME
 +
:0
 +
$HOME/Maildir/
 +
Restartujemy usługę spamassassin
 +
/etc/init.d/spamassassin restart
 +
 +
Dużo więcej informacjii o pakiecie spamassassin można przeczytać na oficjalnej stronie projektu spamassassin.
 +
 +
== Konfiguracja końcowa ==
 +
 +
Edytujemy plik ''/etc/hosts'' tak aby miał przypisany zewnętrzny adres ip do nazwy hosta bo inaczej nie będzie możliwości odbierania listów spoza sieci. Jeśli chcesz skonfigurować klienta w Twojej sieci lokalnej to też musisz dodać do pliku ''/etc/hosts'' klienta, ip serwera w sieci lokalnej i jego hostname
 +
 +
== Informacje dodatkowe ==
 +
 +
Szybka instalacja webowego klienta poczty. Możemy w bardzo prostysposób dać możliwość użytkownikom korzystania z naszej poczty poprzez strone www. Do tego celu instalujemy i konfigurujemy [[squirrelmail|squirrelmaila]]. Aby uruchomić taką usłuhę musimy wcześniej mieć uruchomiony usługę httpd czyli serwer stron www.
 +
 +
yum install squirrelmail
 +
 +
Uruchamiamy w konsoli skrypt służący do konfiguracji systemu webmail
 +
 +
/usr/share/squirrelmail/config/conf.pl
 +
 +
Restartujemy serwer www
 +
 +
/etc/init.d/httpd restart
 +
 +
Po przeprowadzeniu konfiguracji możemy się zalogować na naszą pocztę na adresie: ''http://twoj_adres_ip/webmail'' Możemy również zainstalować bardziej zaawansowanego klienta webowego o nazwie [[RoundCube]], jak to zrobić możecie przeczytać na stronie wiki instalacja [[RoundCube|rouncube]].
 +
 +
 +
== Filtrowanie treści wiadomości ==
 +
 +
'''Postfix''' dysponuje bardzo fajnym mechanizmem filtrowania treści przychodzących jak i wychodzących wiadomości. Jest to szczególnie przydatna funkcja jeśli np wiemy, że serwer poczty będzie np głównie wykorzystywany przez dzieci i chcielibyśmy wycinac wiadomości z nieodpowiednim słownictwem.
 +
 +
Aby dokonać tego czynu na początku musimy dodać odpowiednią opcję do pliku '''main.cf'''
 +
 +
body_checks = regexp:/etc/postfix/body_checks
 +
 +
lokalizacja pliku jak i sama nazwa '''body_checks''' jest przykładowa i może być inna. Następnie w ścieżce podanej wyżej tworzymy plik o nazwie takiej jak podaliśmy w opcji body_checks w tym przypadku '''body_checks'''
 +
 +
vim /etc/postfix/body_checks
 +
~^[[:alnum:]+/]{60,}\s*$~      OK
 +
#SPAM
 +
/(AS SEEN ON NATIONAL TV|READ THIS E-MAIL TO THE END)/
 +
  REJECT Spam #1
 +
/We are shanghai longsun electrical alloy/
 +
  REJECT Chinese spammer from hell #2
 +
/Do you want EVERYONE to know your business/
 +
  REJECT Spam #3
 +
/(Zainab|San?ni) Abacha/
 +
  REJECTNigeria Spam #4
 +
/MILITARY HEAD OF STATE IN NIGERIA/
 +
  REJECT Nigeria fraud spam #5
 +
/antivirus \.5xx\.net/
 +
  REJECT Virus hoax (0190-dialer) #6
 +
/MOSE CHUKWU/
 +
  REJECT Business fraud spam #7
 +
/Ahmed Kabbah/
 +
  REJECT Business fraud spam #8
 +
/Godwin Igbunu/
 +
  REJECT Business fraud spam #9
 +
/I PRESUME THIS EMAIL WILL NOT BE A SURPRISE TO YOU/
 +
  REJECT Business fraud spam #10
 +
/http:\/\/www\.a1-oportunity4u\.com\/euro2/
 +
  REJECT Business fraud spam #11
 +
/http:\/\/66.151.240.30\//
 +
  REJECT Spam of the worst kind #12
 +
/http:\/\/members.tripod.com.br\/lev3irkd/
 +
  REJECT Spam of the worst kind #13
 +
#Mistyfikacje
 +
/jdbgmgr\.exe/
 +
  REJECT Virus hoax #14
 +
/ready to dictate a war/
 +
  REJECT Hoax #15
 +
/inquiries@un\.org/
 +
  REJECT Hoax #16
 +
/UNO is ready to receive signatures/
 +
  REJECT Hoax #17
 +
/Third World War/
 +
  REJECT Hoax #18
 +
#Wirusy
 +
/The processing of this message can take a few minutes\.\.\./
 +
  REJECT Win32.Netsky.V #19
 +
/Converting message.Please wait\.\.\./
 +
  REJECT Win32.Netsky.V #20
 +
/Please wait while loading failed message\.\.\./
 +
  REJECT Win32.Netsky.V #21
 +
/Please wait while converting the message\.\.\./
 +
  REJECT Win32.Netsky.V #22
 +
 +
 +
Oczywiście sam plik możemy dowolnie zmieniać i dostosować do swoich potrzeb, przykład ma na celu pokazać, że bez trudu możemy kontrolować przepływ informacjami w naszym systemie pocztowym.
 +
 +
Po zakończeniu edycji pliku oraz dodania opcji '''body_checks''' do pliku '''main.cf''' pamiętaj o przerestartowaniu usługi postfix
 +
 +
/etc/init.d/postfix reload
 +
 +
== Dodatkowe opcje ==
 +
 +
*'''2bounce_notice_recipient''' (domyślnie: postmaster) - jedna z możliwych klas błędów, każda taka klasa może generować powiadomienia o błędach. Polecenie wskazuje adres obdbiorcy powiadomienia o błędzie, np 2bounce_notice_recipient = jkowalski@domenkax.pl
 +
*'''append_at_myorgin''' (domyślnie: yes) - opcja powoduje dołączenie wartości z pola myorigin do adresów, które składają się tylko z części lokalnej np jeśli adresatem jest jkowalski, to opcja ta spowoduje dołączenie do adresata dalszej wartości czyli jkowalski@domenkax.pl. Umożliwia to przesyłanie listów w sieci lokalnej podając tylko nazwe adresata.
 +
*'''body_checks_size_limit''' (domyślnie: 51200) - wartość podawana w bajtach, przy zastosowaniu tego polecenia możemy ograniczyć wielkość początkowego fragmentu treści wiadomości, np body_checks_size_limit = 51200
 +
*'''daemon_timeout''' (domyślnie: 18000s) - polecenie wskazuje na czas przez jaki demony postfix'a mogą obsługiwać dane żądanie, po jego przekroczeniu kończą pracę.
 +
*'''default_recipient_limit''' (domyślnie: 10000) - opcja ustawia limit liczby odbiorców, których menadżer kolejek przechowuje w pamięci dla konkretnego transportu.
 +
*'''disable_dns_lookups''' (domyślnie: no) - jeżeli ustawimy parametr na yes to postfix nie będzie szukać rekordów MX a pocztę doręcza bezpośrednio na adres z rekordu A, który będzie ustawiony dla domeny docelowej.
 +
*'''empty_address_recipient''' (domyślnie: MAILER-DAEMON) - jeżeli została wysłana wiadomość z pustym polem nadawcy, wiadomość nie może być doręczona. Taka wiadomość zostaje wysłana na adres podany w tej opcji np empty_address_recipient = jkowalski@domenkax.pl
 +
*'''header_size_limit''' (domyślnie: 102400) - opcja pozwala ustawić limit liczby znaków w nagłówku wiadomości, nadmiarowy teks zostaje odrzucony bez żadnych komunikatów.
 +
*'''line_length_limit''' (domyślnie: 2048) - ustawia limit długości wierszy w wiadomości. Wiersze przekraczające tę długość są dzielone i odtwarzane przy doręczeniu np line_length_limit = 3000
 +
*'''luser_relay''' (domyślnie: pusta) - adres docelowy, na który będą wysyłane wszystkie wiadomości dla nieznanych odbiorców.
 +
*'''max_idle''' (domyślnie: 100s) - maksymalny czas bezczynności, jaki proces demona postfixa może czekać na nowe żądanie.
 +
*'''maximal_backoff_time''' (domyślnie: 4000s) - ustawienie maksymalnego limitu czasu, po jakim postfix ponowi póbę doręczenia odłożonych wiadomości.
 +
*'''message_size_limit''' (domyślnie: 10240000) - opcja ustawia limit wielkości dowolnej wiadomości jaką nasz system może przyjąć, wielkość określana jaes w bajtach, np messae_limit_size = 10000000
 +
*'''qmgr_message_limit''' (domyślnie: 20000) - określenie limitu liczby wiadomości w kolejce active
 +
*'''smtp_data_xfer_timeout''' (domyślnie: 180s) - ustawienie limitu czasu oczekiwania przez klienta SMTP przy wysyłaniu treści wiadomośc. Jeśli połączenie utknie na czas dłuższy od ustawionej wartości, klient SMTP przerwie połączenie.
 +
*'''smtpd_banner''' (domyślnie: $myhostname ESMTP $mail_name) - tekst który zostanie wyświetlony po kodzie 220 w nagłówku powitalnym SMTP. Jeżeli będziesz chciał zmienić ten parametr musisz pamiętać o dołączeniu dyrektywy $myhostname jest to wymóg RFC.
 +
*'''smtpd_recipient_limit''' (domyślnie: 1000) - limit liczby odbiorców dozwolonych w poleceniach RCPT TO dla każdej wiadomości.
 +
*'''undisclosed_recipients_header''' (domyślnie: To: undisclosed-recipients:;) - wiersz nagłówka wstawiany, gdy w żadnym z nagłówków To:, Resent-To:, Cc: nie jest podany odbiorca.
 +
 +
== Polecenia postfix'a ==
 +
 +
Poniżej przedstawiam liste komend, które mogą być użyte w systemie z zainstalowanym '''postfix'em''' do wykonywania różnych operacji. Pełny opis wszystkich poleceń związanych z systemem '''postfix''' znajduje się na stronach [[man]].
 +
 +
*'''postalias''' - tworzy i odpytuje bazy danych aliasów
 +
*'''postconf''' - polecenie umożliwiające zmiane i wyświetlenie parametrów postfix'a.
 +
*'''postdrop''' - wstawia wiadomość do kolejki poczty, która ma być doręczona przez postfixa.
 +
*'''postkick''' - wysyła żądanie do konkretnej usługi postfix'a.
 +
*'''postlock''' - blokuje wskazany plik dla dostępu z wyłącznością. Pozwala na używanie blokad zgodnych z postfix'em.
 +
*'''postlog''' - rejestruje wskazane informacje.
 +
*'''postmap''' - tworzy i odpytuje tablice powiązań.
 +
*'''postqueue''' - daje dostęp do kolejki postfix'a na poziomie użytkownika.
 +
*'''postsuper''' - daje dostęp do kolejki postfixa na poziomie super użytkownika. Pozwala administratorowi usuwać wiadomości, wstrzymywać je i zwalniać wstrzymanie.
 +
<br />
 +
Oficjalna strona systemu postfix - [http://www.postfix.org www.postfix.org]<br />
 +
Konfiguracja postfixa za pomocą pakietu postfix.admin - [http://postfixadmin.sourceforge.net postfixadmin.sourceforge.net]
 +
 +
<br /><google1 style="4"></google1>

Aktualna wersja na dzień 16:19, 23 kwi 2012

Osobiste
Przestrzenie nazw

Warianty
Działania
Nawigacja
Narzędzia


Sponsor serwisu

Firma informatyczna ITProjek Bydgoszcz usługi informacztyczne, serwery, linux, windows, strony www, hosting, sieci komputerowe, system archiwizacji danych