|
Strona 1 z 8 Zapewne już część osób czytała ten tekst w postaci pliku PDF dostępnego na tej stronie. Jest to ta sama wersja tekstu lecz w postaci HTML, która to będzie na bieżąco aktualizowana w miarę możliwości.
Od autora…
To opracowanie powstało z myślą o użytkownikach systemu FreeBSD, którzy chcą
na swojej maszynie zainstalować Postfix'a z autoryzacją, szyfrowanym połączeniem
SMTP oraz dodatkowo skanerami antywirusowymi. Jako, że w sieci krąży wiele
opracowań na temat postfixa, które są po rozrzucane – postanowiłem zebrać to
wszystko w jedną całość. Należy się jednak liczyć, iż opracowanie to nie jest
pozbawione błędów.
Ustawienia przedstawione w tym opracowaniu są ustawieniami podstawowymi i
były testowane na systemie:
- FreeBSD 5.2.1
z paczkami o wersjach:
- Postfix-2.1.4,1
- Cyrus-sasl-2.1.19
- Cyrus-sasl-saslauthd-2.1.19
- Openssl-0.9.7d_1
- Clamav-0.75.1
- Amavisd-new-2.1.1,1
- Mks32-FreeBSD5.2-i386-1-9-6
- MksdFreeBSD-1.15.2
W przyszłości, nowsze wersje w/w programów mogą wymagać rozszerzonych
ustawień i mogą nie współpracować poprawnie z opisanymi ustawieniami.
Opracowanie to może być rozpowszechniane bez ograniczeń jednakże musi być
nieodpłatne i nie komercyjne.
Autorzy:
- Andrzejewski Rafał - rafal(at)bsd4u.org
- Kulda Artur - arti(at)bsd4u.org
- Stala Tomasz - tomek(at)zso.tbg.net.pl
- Zdoliński Artur - zdolny(at)poczta.onet.pl (opracowanie całości)
Wstęp
Postfix2.1.4 + SASL2 + TLS + Popa3d + AMaViS + Clam AntiVirus + MKS Vir
Postfix - Postfix jest serwerem MTA (Mail Transport Agent). Jest on o
wiele przyjemniejszy i łatwiejszy w konfiguracji, bardziej wydajny oraz
bezpieczniejszy niż powszechnie używany sendmail, którego kod źródłowy
zintegrowany jest z kodem źródłowym systemów *BSD. Źródła Postfix'a są dostępne
do ściągnięcia na oficjalnej stronie projektu -
http://www.postfix.org/
SASL2 - Autoryzacja poczty wychodzącej (SMTP AUTH) to zabezpieczenie
uniemożliwiające wysyłkę poczty bez uprzedniego zalogowania się do konta. Dzięki
niemu nikt nie będzie mógł podszyć się pod Twój adres e-mail, a odbiorca danej
wiadomości będzie miał pewność, że jesteś jej autorem. Funkcja ta zabezpiecza
także przed wysłaniem poczty za pośrednictwem Twojego serwera przez nie
autoryzowanego nadawcę lub spamera. Opisana tu konfiguracja zapewnia taką
autoryzację za pomocą biblioteki Cyrus-SASL2.
TLS – Wszystkie wiadomości przesyłane i odbierane z danego programu
pocztowego będą szyfrowane co uniemożliwi dostęp do nich niepowołanym osobom.
Szyfrowanie to będzie odbywać się za pomocą SSL. Secure Socket Layer jest to
protokół bezpiecznej komunikacji między klientem a serwerem, stworzony przez
firmę Netscape. SSL zapewnia trzy rzeczy:
- prywatność - połączenie jest szyfrowane
- autoryzację - klient i serwer określa swoją tożsamość
- integralność przesyłanych danych - przez sumy kontrolne
AMaViS - Jak zostało napisane na jego oficjalnej stronie (http://www.amavis.org),
jest wysoko-wydajnym interfejsem pośredniczącym pomiędzy MTA i programami
(skryptami) zajmujących się filtrowaniem treści: skanerów antywirusowych lub
filtrów antyspamowych. Jest napisany w Perlu, co w znaczący sposób wpływa
(pozytywnie) na jego wydajność.
Clam AntiVirus - Jest to darmowym programem antywirusowym
przeznaczonym dla systemów UNIX. Głównym jego celem jest integralność z
serwerami poczty. W dodatku posiada on specjalne narzędzie do automatycznej
aktualizacji bazy wirusów.
MKS_Vir - Jest darmowym programem antywirusowym przeznaczonym dla
systemów Linux/UNIX. Został skompilowany w wersji statycznej i dynamicznej na
platformę i386 zatem jest idealnym narzędziem do ochrony antywirusowej na
serwerach pocztowych.
Podstawową rzeczą z jakiej sobie trzeba zdać sprawę podczas instalacji
serwera poczty jest to, iż cały serwer poczty składa się z wielu części które
współpracują ze sobą i odpowiadają za różne funkcję. Przykładowe „bloki” –
części funkcjonalne zostały wymienione wyżej. Przykładowy schemat całego serwera
pocztowego:.
1. Instalacja Postfix'a (MTA)
Do tego dochodzi ściągnięcie najnowszych poprawek (patch'y), jak również
bardzo potrzebnej aby móc korzystać z autoryzacji SMTP biblioteki (SASL2).
Dlatego najprostszym i najłatwiejszym sposobem na zainstalowanie tego
wszystkiego może być skorzystanie z drzewa portów. Jak wiemy nasz komputer
wszystkie te powyższe czynności (instalacja, patchowanie) wykona za nas
automatycznie.
Przechodzimy do katalogu z postfixem i instalujemy go. System automatycznie
powinien pobrać najświeższe pliki (o ile uaktualniliśmy nasze drzewo portów)
oraz najnowsze patche.
# cd /usr/ports/mail/postfix
# make build && make install && make clean
Po wydaniu tych poleceń powinno nam się pokazać menu, w którym wybieramy
potrzebne nam opcje, z którymi nasz Postfix będzie współpracował. Wybieramy więc
- DB3, SASL2, TLS.
a. Podstawowa konfiguracja Postfix'a
Zacznijmy od wyłączenia sendmaila, edytujemy więc plik `rc.conf` i ustawiamy
w nim następujące zmienne:
# ee /etc/rc.conf
--- rc.conf ---
sendmail_enable="NONE"
sendmail_flags="-bd"
sendmail_pidfile="/var/spool/postfix/pid/master.pid"
sendmail_outbound_enable="NO"
sendmail_submit_enable="NO"
sendmail_msp_queue_enable="NO"
mta_start_script="" |
--- end rc.conf ---
--- periodic.conf
daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO" |
--- end periodic.conf ---
Teraz możemy stworzyć dowiązanie symboliczne do katalogu z postfixem, oraz do
pliku z aliasami, czyli tak zwany `symbolic link` - jeżeli jakiekolwiek
dowiązania już istnieją – zapisz sobie do jakiego pliku były one, po czym usuń
(# rm <file>).
Tworzenie dowiązań:
# ln -s /usr/local/etc/postfix /etc/postfix
# ln -s /usr/local/etc/postfix/aliases /etc/aliases
# ln -s /usr/local/etc/postfix/access /etc/access
# /usr/local/bin/newaliases
Jeśli już wyłączyliśmy sendmaila, możemy przystąpić do konfiguracji naszego
serwera, edytujemy plik `main.cf` następnie zmieniamy w nim co nam potrzeba
# ee /usr/local/etc/postfix/main.cf
W zasadzie to mógłbyś zastąpić cały przykładowy plik konfiguracyjny tym,
który jest poniżej. Początkowo nie zamierzałem tu opisywać dokładnie wszystkich
opcji, jedynie te najważniejsze. Jednak skoro ma to być w pewnym sensie
pomocnik, poszedłem na kompromis i postarałem się w miarę zrozumiale opisać
poszczególne opcje. Zakładam, że masz skonfigurowany serwer DNS lub jakąś
wydelegowaną domenę. W opisanym przeze mnie konfigu domeny te będą nosić nazwy „domana.pl”
oraz „domena2.pl”, przy czym „domena2.pl” będzie domeną wirtualną, o czym
napiszę w dalszej części artykułu. Niektóre z opcji są ustawione defaultowo i
nie musisz ich zmieniać. Oto plik konfiguracyjny:
UWAGA!! Plik przedstawiony poniżej jest plikiem dla postfixa Postfix-2.1.4,1
– jeśli używasz nowszej wersji zalecane by było abyś przegrał plik typu „sample”
(dist-main.cf) na miejsce oryginalnego pliku konfiguracyjnego i samemu go
przerobił.
--- main.cf ---
# LOCAL PATHNAME INFORMATION
# (Definiujemy ścieżki do katalogów)
# Katalog z plikami komunikującymi się z naszym MTA.
queue_directory = /var/spool/postfix
# Katalog zawierający pliki do administracji Postfixem.
command_directory = /usr/local/sbin
# Katalog z programami demona.
daemon_directory = /usr/local/libexec/postfix
# QUEUE AND PROCESS OWNERSHIP
# Ustawiamy właściciela.
mail_owner = postfix
# INTERNET HOST AND DOMAIN NAMES
# Wpisujemy nazwę naszego serwera lub domenę:
myhostname = domena.pl
# Ustawiamy nazwę naszej domeny:
mydomain = $myhostname
# SENDING MAIL
# Opcja ta odpowiedzialna jest za definicję pola "From: " w nagłówkach:
myorigin = $myhostname
# RECEIVING MAIL
# Adresy interfejsów na których będzie nasłuchiwał Postfix:
inet_interfaces = $myhostname, localhost
# inet_interfaces = all
# Opcja wskazująca Postfix'owi nazwy domen, na które serwer ma akceptować
# pocztę przychodzącą wyłącznie na te domeny:
mydestination = $myhostname domena2.pl localhost.$mydomain
# REJECTING MAIL FOR UNKNOWN LOCAL USERS
# Opcja odpowiedzialna za listę nazw odbiorców wiadomości:
local_recipient_maps = unix:passwd.byname $alias_maps
# Numer kodu, który będzie zwracany, gdy w systemie nie ma odbiorcy:
unknown_local_recipient_reject_code = 550
# Ustawiamy limit ilości wiadomości, które mogą być
# dostarczone do użytkownika w tym samym czasie:
local_destination_concurrency_limit = 2
# Ustawiamy limit ilości użytkowników, których Postfix
# może obsłużyć równocześnie w tym samym czasie:
default_destination_concurrency_limit = 10
# TRUST AND RELAY CONTROL
# Adresy sieci, z których będzie można przekierować pocztę:
mynetworks = 127.0.0.0/8, 192.168.1.0/24
# Adresy komputerów, z których można będzie przekierować pocztę (relay):
relay_domains = 127.0.0.0/8
# ALIAS DATABASE
# Ścieżka do pliku i bazy z aliasami:
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# DELIVERY TO MAILBOX
# Katalog, w którym przechowywane będą wiadomości:
mail_spool_directory = /var/mail
#mail_spool_directory = /var/spool/mail
# SHOW SOFTWARE VERSION OR NOT
# Ustawienia nagłówna i banner'a naszego serwera:
mail_name = Postfix
smtpd_banner = $myhostname ESMTP $mail_name
# DEBUGGING CONTROL
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
# INSTALL-TIME CONFIGURATION INFORMATION
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = no
# OTHERS
# Maksymalna wielkość wysyłanej wiadomości (10 mb):
message_size_limit = 10240000
# Maksymalna pojemność skrzynki pocztowej (25 mb):
mailbox_size_limit = 25600000
# Maksymalna ilość wiadomości wysłanych za jednym razem przez użytkownika:
smtpd_recipient_limit = 10
# Opcja odpowiedzialna za blokowanie komendy SMTP VRFY:
disable_vrfy_command = yes
# Parametr odpowiedzialny za 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
# Ustawienia czasów oczekiwania na komunikaty o błędach:
smtpd_error_sleep_time = 3
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 5 |
--- end main.cf
Oczywiście powyższe opcje musisz dostosować do własnych potrzeb. Oryginalny
plik ze szczegółowym opisem - /usr/local/etc/postfix/dist-main.cf
|