background image

bezpieczeństwo

Bezpieczeny serwer pocztowy

32

maj 2007

bezpieczeństwo

Bezpieczeny serwer pocztowy

33

www.lpmagazine.org

   

 lin

ux

@

so

ftw

ar

e.

co

m

.p

l

Q

mail  został  napisany  z  myślą  o  bezproble-
mowym  działaniu,  posiada  duże  możliwo-
ści konfiguracji, jest też zadziwiająco szybki. 
W  poprzednim  artykule  pisałam  o  samym 

qmailu,  jego  podstawowej  instalacji,  instalacji  patcha 
SMTP-AUTH,  autorespondera  oraz  programu  rblsmtpd 
do blokowania adresów wpisanych na listach RBL.

Instalacja rozszerzenia SPF

SPF (ang. Sender Policy Framework) jest rozszerzeniem po-
zwalającym  serwerowi  sprawdzić,  czy  nagłówki  maila, 
który właśnie odbiera, nie zostały sfałszowane.

Przykładowo: jeśli osoba posiadająca domenę mojado-

mena.pl przy wysyłaniu poczty korzysta z serwera pocz-
towego  poczta.mojadomena.pl,  to  za  pomocą  SPF-a  mo-
że zdefiniować, że tylko listy wychodzące z tego serwera 
pochodzą faktycznie od niej. Wówczas maile które w na-
główku w polu From mają adres @mojadomena.pl, ale zo-
stały wysłane z innego serwera pocztowego, mogą zostać 
odrzucone.

Takie działanie ma na celu ograniczenie ilości spamu 

oraz zmniejszenie ilości rozsyłających się wirusów.

Instalacja potrzebnego 

oprogramowania

Instalację SPF-a dla qmaila rozpoczynamy od ściągnięcia 
patcha ze strony http://www.saout.de/misc/spf/

Kolejnym  krokiem  jest  nałożenie  ściągniętej  łatki 

(w katalogu ze źródłami qmaila):

cd katalog/qmail-1.03/
patch -p0 < qmail-spf-rc5.patch

Teraz  kolej  na  kompilację  i  podmianę  pliku  qmail-smtpd
Najprostszy  sposób  to  zatrzymanie  qmaila,  a  następnie 
wydanie komendy:

make setup check

Po pomyślnej kompilacji należy utworzyć plik konfigura-
cyjny dla SPF. Nazywa się on /var/qmail/control/spfbehavior 
i  zawiera  liczbę  oznaczającą  sposób  zachowania  się  roz-
szerzenia SPF.

Statusy zwracane przez SPF oznaczają, w jakim stop-

niu  przesyłany  mail  łamie  reguły  ustalone  przez  właści-

Qmail – nowoczesny 

serwer pocztowy 

Qmail to program typu MTA (ang. Mail Transfer Agent) jego autorem jest Daniel J. Bernstein. Jest to 
system transportu poczty elektronicznej powstały jako alternatywa dla sendmaila – programu, który 
swego czasu „zasłynął” z dużej ilości błędów zagrażających bezpieczeństwu.

Agnieszka Kądziołka

background image

bezpieczeństwo

Bezpieczeny serwer pocztowy

32

maj 2007

bezpieczeństwo

Bezpieczeny serwer pocztowy

33

www.lpmagazine.org

ciela domeny. Wartości wyższe niż 3 nie po-
winny  być  stosowane,  ponieważ  istnieje  ry-
zyko  odrzucania  całkiem  poprawnych  ma-
ili (na przykład na skutek chwilowej awarii 
DNS-a  nie  będzie  możliwe  sprawdzenie  re-
kordu SPF)

Jak przetestować SPF?

W celach testowych w pliku spfbehavior wpisz
wartość  "1",  żeby  SPF  dodawał  jedynie  na-
główki w sprawdzanych mailach.

Po wysłaniu do siebie wiadomości przez 

poprawny serwer pocztowy w nagłówku ma-
ila powinien pojawić się taki wpis:

Received-SPF: pass 
   (0: SPF record 
   at twojadomena.pl designates
   111.222.11.12 as permitted sender)

Jeśli  natomiast  serwer  nie  jest  uprawniony 
do przesyłania poczty z danej domeny, wpis 
w nagłówku powinien wyglądać tak:

Received-SPF: softfail 
   (0: transitioning SPF record 
   at jakasdomena.pl
does not designate 
   111.222.33.44 
   as permitted sender)

Jeśli pojawiają się takie nagłówki, oznacza to, 
że SPF jest poprawnie zainstalowany.

W  przeciwnym  wypadku  sprawdź,  czy 

na  pewno  masz  plik  /var/qmail/control/spfbe-
havior
  oraz  czy  ma  on  odpowiednie  prawa 
(qmail musi móc go odczytać).

Jak sprawdzić czy dana domena 

obsługuje SPF?

Najprostszym  sposobem  jest  sprawdzenie 
w  DNS  rekordu  typu  TXT  dla  tej  domeny. 
Można to zrobić np. takim poleceniem:

host -t txt onet.pl

Jeśli wśród odpowiedzi będzie linijka zaczy-
nająca się od 

v=spf1

, tzn. że ta domena ob-

sługuje SPF.

Przykładowo – dla domeny onet.pl linij-

ka ta wygląda następująco:

onet.pl descriptive text 
"v=spf1 ip4:213.180.128.0/19 -all”

Jeśli  twoja  domena  nie  ma  odpowiedniego 
wpisu w DNS-ie, należy go dodać. Najprościej 
jest  skorzystać  z  kreatora  na  stronie  http://
old.openspf.org/wizard.html

Instalacja systemu 

antywirusowego ClamAV 

dla qmaila

Clam  AntiVirus  (ClamAV)  jest  systemem 
antywirusowym dostępnym na licencji GPL 
przeznaczonym  do  integracji  z  serwerami 
pocztowymi  (np.  z  qmailem),  a  jego  głów-
ne zadanie to skanowanie załączników ma-
ili.  Pomysłodawcą  programu  jest  Tomasz 
Kojm. ClamAV, aktualnie dostępny w wer-
sji 0.90, zawiera w swojej bazie ponad 90 000 
sygnatur wirusów.

Aby  zainstalować  system  antywiruso-

wy ClamAV, należy pobrać jego najnowszą
wersję ze strony http://www.clamav.net/stable.
php#pagestart

ClamAV powinien mieć własnego użyt-

kownika i grupę, z prawami których będzie 
działał.  Przykładowo  –  aby  stworzyć  użyt-
kownika oraz grupę o nazwie clamav, nale-
ży wydać polecenia:

groupadd clamav
useradd -g clamav 
-s /bin/false 
-c "Clam Antivirus" 
clamav

Następnie należy rozpakować, skompilować 
i zainstalować ściągnięty pakiet:

tar -zxvf clamav-0.90.tar.gz
cd clamav-0.90
./configure
make
make install

Aby sprawdzić czy ClamAV działa popraw-
nie, można zrobić prosty test:

clamscan -r -l scan.txt clamav-0.90

Po wykonaniu tego polecenia w pliku scan.
txt
  powinna  się  pojawić  informacja  o  kil-
kukrotnym wykryciu wirusa ClamAV-Test-
File
. Oznacza to, że ClamAV działa popraw-
nie.

ClamAV jako demon

Aby  ClamAV  działał  wydajnie,  lepszym 
pomysłem jest uruchomienie go jako demo-
na  clamd  i  odwoływanie  się  do  niego  po-
przez  program  clamdscan.  W  takiej  konfi-
guracji program nie musi za każdym razem 
wczytywać z dysku całej bazy wirusów, ale 
raz uruchomiony trzyma ją cały czas w pa-
mięci.

W celu uruchomienia demona należy go 

najpierw  skonfigurować.  Domyślnie  konfi-
guracja  trzymana  jest  w  pliku  /usr/local/etc/
clamd.conf
.

Pierwszym  krokiem  powinno  być  usu-

nięcie linii „Example”, żeby w ogóle urucho-
mić demona. Warto przejrzeć wszystkie opcje 
konfiguracyjne, aby wiedzieć, jakie oferuje on 
możliwości. Jednak demon powinien dobrze 
działać przy domyślnych ustawieniach.

Wystarczy więc go uruchomić:

/usr/local/sbin/clamd

i sprawdzić, czy poprawnie skanuje pliki:

clamdscan /tmp/

W przypadku problemów warto włączyć wy-
soki poziom logowania demona (LogVerbose
i zobaczyć w logach, jaka jest przyczyna błęd-
nego działania.

Skanowanie poczty – qmail-scanner

Aby zintegrować qmaila z systemem antywi-
rusowym ClamAV, należy skorzystać z pro-
gramu qmail-scanner.

Do poprawnego działania qmail-scanner 

potrzebuje qmaila z zainstalowanym patchem 
qmailqueue-patch. Patcha można pobrać z ad-
resu http://www.qmail.org/qmailqueue-patch.

Nałożenie  patcha  wygląda  następująco: 

w katalogu nadrzędnym do qmail-1.03 nale-
ży uruchomić:

patch -p0 < qmailqueue-patch
cd qmail-1.03
make

Liczba Znaczenie
0

Wyłączenie SPF

1

Dodawaj jedynie nagłówki "Received-SPF", nigdy nie blokuj

2

Zwracaj błędy typu "spróbuj później", jeśli masz problemy ze sprawdzeniem rekordu SPF 
w DNS-ie

3

Odrzucaj maile, jeśli SPF zwróci status fail

4

Odrzucaj maile, jeśli SPF zwróci status softfail

5

Odrzucaj maile, jeśli SPF zwróci status neutral

6

Odrzucaj maile, jeśli SPF zwróci status inny niż „przepuszczaj”

background image

34

bezpieczeństwo

Bezpieczeny serwer pocztowy

maj 2007

35

bezpieczeństwo

Bezpieczeny serwer pocztowy

www.lpmagazine.org

Następnie należy podmienić qmail-smtpd (za-
chowując kopię bezpieczeństwa):

cp /var/qmail/bin/qmail-smtpd 
/var/qmail/bin/
qmail-smtpd.old
cp qmail-smtpd 
/var/qmail/bin/

i zrestartować qmaila.

Aby zainstalować qmail-scannera, nale-

ży pobrać najnowszą wersję oprogramowa-
nia  ze  strony  http://qmail-scanner.sourceforge.
net/.

Kolejnym  krokiem  jest  stworzenie  gru-

py i użytkownika, z poziomu którego będzie 
działał qmail-scanner:

groupadd qscand 
useradd -c "Qmail-Scanner 
Account" -g qscand 
-s /bin/false qscand

Po  rozpakowaniu  ściągniętego  archiwum 
trzeba uruchomić konfigurację pakietu:

./configure 
--admin konto_mailowe 
--domain twoja.domena.pl 
--debug no

Powyższa konfiguracja oznacza, że wszelkie 
powiadomienia  administracyjne  qmail-scan-
ner  będzie  wysyłał  na  adres  konto_mailowe-
@twoja.domena.pl
.

Zachowanie podczas wysyłania powia-

domień  można  skonfigurować,  używając 
opcji 

-notify

, np. 

-notify "none"

 – ozna-

cza to, że powiadomienia nie będą wysyła-
ne wcale.

Po  skonfigurowaniu  pakietu  należy 

zwrócić uwagę na podsumowanie (czy nie 
ma błędów), a w szczególności na linijkę:

scanners=
   "clamdscan_scanner"

Oznacza  ona,  że  qmail-scanner  znalazł  zain-
stalowanego ClamAV i będzie go obsługiwał 
w trybie demona.

Jeśli wszystko jest OK, możesz zainstalo-

wać program (uruchom 

./configure

 z opcją 

--install

):

./configure 
--admin konto_mailowe 
--domain twoja.domena.pl 
--notify "none" \
--debug no --install

Po instalacji sprawdź, czy użytkownik qma-
ild będzie miał prawa do uruchamiania ska-
nera:

setuidgid qmaild 
   /var/qmail/bin/
   qmail-scanner-queue.pl 
   -g

Jeśli  otrzymasz  komunikat  Can't  do  setu-
id
  lub  Permission  denied,  to  najprawdopo-
dobniej nie masz zainstalowanego pakietu 
suid-perl  (w  RedHacie  jest  to  perl-suidperl
w Debianie – perl-suid).

Ostatnią rzeczą, którą należy zrobić jest 

ustawienie  zmiennej 

QMAILQUEUE

.  Zmien-

na ta przechowuje wartość używaną przez 
qmaila do odnalezienia programu do kolej-
kowania poczty. Należy w niej podać ścież-
kę  do  programu  qmail-scanner.  Najwygod-
niejszym sposobem jest dopisanie jej do pli-
ku /etc/tcp.smtp.

Jeśli  przed  modyfikacją  plik  ten  wyglą-

dał np. tak:

127.:allow,RELAYCLIENT=""
:allow

to po dodaniu obsługi antywirusowej będzie 
wyglądał tak:

127.:allow,
RELAYCLIENT="":allow,
   QMAILQUEUE=
   "/var/qmail/bin/
   qmail-scanner-queue.pl"

Zasadniczo  do  poczty  przesyłanej  bezpo-
średnio  z  serwera  nie  trzeba  uruchamiać 
antywirusa  (dlatego  w  pierwszej  linijce 
nie wpisujemy zmiennej 

QMAILQUEUE

). Jeśli 

jednak  serwer  obsługuje  np.  pocztę  przez 
WWW i mogą się pojawić listy z wirusami 
przesyłane  przez  localhosta,  to  oczywiście 
przy  127.  też  warto  dopisać  odpowiednie

QMAILQUEUE

.

Po zmianie czegokolwiek w tcp.smtp trze-

ba  przebudować  jego  wersję  binarną  –  tcp.
smtp.cdb
:

qmailctl cdb

lub – jeśli nie masz qmailctl:

tcprules 
   /etc/tcp.smtp.cdb 
   /etc/tcp.smtp.tmp < 
   /etc/tcp.smtp chmod 644 
   /etc/tcp.smtp.cdb

Od  tej  chwili  qmail  powinien  już  skanować 
przechodzące przesyłki. Możesz to przetesto-
wać przesyłając pocztę do siebie i obserwując 
nagłówki. Powinny tam się pojawić wpisy in-
formujące o skanowaniu przesyłki:

Received: from 111.222.33.44 
by grendel ... with 
qmail-scanner-1.25
(clamdscan: 0.86.2/1290. 
spamassassin: 3.1.7.
Clear:RC:0(111.222.33.44):
SA:0(0.2/5.0):.
Processed in 0.116137 secs);

Po dodaniu skanera antywirusowego zna-
cząco  zwiększa  się  apetyt  qmaila  na  pa-
mięć.  Jeśli  masz  qmaila  wywoływanego 
z ograniczeniem pamięci do wykorzystania, 
limit  ten  może  okazać  się  niewystarcza-
jący.

Objawia się to najczęściej przy próbie wy-

słania poczty takim komunikatem:

451 qq temporary problem (#4.3.0)

Trzeba  wtedy  zwiększyć  ilość  pamięci  do-
stępnej dla qmaila. W przypadku ClamAV 
wartością wystarczającą jest 25MB.

Konta wirtualne 

– vpopmail dla qmaila

Vpopmail jest pakietem na licencji GPL, któ-
ry  umożliwia  łatwe  zarządzanie  wirtualny-
mi  kontami  pocztowymi  na  serwerze  pocz-
towym.

Aby zainstalować vpopmaila, należy po-

brać  najnowszą  wersję  pakietu  ze  strony 
http://www.inter7.com/index.php?page=vpop-
mail.

Po  rozpakowaniu  archiwum  dodajemy 

odpowiednie grupy w systemie:

tar -zxvf vpopmail-5.*
cd vpopmail-5.*
groupadd 
-g 89 vchkpw
useradd 
-g vchkpw 
-u 89 vpopmail

Kolejnym  krokiem  jest  kompilacja  pakietu. 
Można użyć opcji domyślnych, ale warto się 
zapoznać  z  możliwościami  konfiguracyjny-
mi tego pakietu. Listę dostępnych opcji zoba-
czysz wydając polecenie:

./configure 
   --help

background image

34

bezpieczeństwo

Bezpieczeny serwer pocztowy

maj 2007

35

bezpieczeństwo

Bezpieczeny serwer pocztowy

www.lpmagazine.org

Na  uwagę  zasługuje  np.  blokowanie  zapi-
sywania  haseł  w  postaci  niezaszyfrowanej 
(

--disable-clear-passwd

),  wybieranie  spo-

sobu  logowania  zdarzeń  (

--enable-log-

ging

)  czy  współpraca  z  bazą  danych  My-

SQL (kilka różnych opcji).

Po wybraniu opcji konfiguracji

./configure [opcje konfiguracji]

czas na kompilację oraz instalację pakietu:

make
make install-strip

Po  zainstalowaniu  pakietu  powinniśmy  do-
dać komputery, które będą uprawnione do 
przesyłania poczty przez serwer (można to 
również  zrobić  korzystając  z  autoryzacji 
SMTP-AUTH). 

echo "192.168.1.:allow,
   RELAYCLIENT=\"\"" >> 
   ~vpopmail/etc/tcp.smtp

Ostatnim krokiem jest dodanie domen, które 
mają być obsługiwane przez serwer:

cd /home/vpopmail/bin
./vadddomain test.com.pl

oraz użytkowników w tych domenach:

./vadduser jakisuser@test.com.pl

Po wykonaniu powyższych komend powi-
nien zostać utworzony katalog /home/vpop-
mail/domains/test.com.pl/
  i  w  nim  katalogi 
użytkowników.

Jeśli serwer jest uprawniony do odbioru

poczty dla domen, które mu zostały przypi-
sane (rekord MX w DNS-ie wskazuje na nie-
go), to w tym momencie przesłanie poczty 
na adres jakisuser@test.com.pl powinno spo-
wodować  pojawienie  się  listu  w  katalogu 
/home/vpopmail/domains/test.com.pl/jakisuser/
Maildir/new/.

Jeśli tak się stało, można uznać, że pakiet 

vpopmail działa prawidłowo.

Patch realrcptto 

do qmaila

Zwykle serwer pocztowy działa tak, że po 
otrzymaniu  maila  do  dostarczenia  przyj-
muje  go  do  kolejki.  Dopiero  gdy  nadej-
dzie jego pora, mail jest pobierany z kolej-
ki i następuje próba jego dostarczenia – wy-
szukiwany jest odbiorca listu. Gdy odbior-
ca  nie  zostanie  odnaleziony,  do  nadawcy 

maila zostanie przesłany mail z odpowied-
nim komunikatem informacyjnym. Spame-
rzy zauważyli, że bardzo łatwo sfałszować 
nadawcę listu i zaczęli wstawiać adres ofia-
ry  właśnie  w  polu  źródłowym.  Wówczas 
odbity mail trafia do ofiary z zupełnie nie-
winnego serwera. List w formie zwrotu po-
zwala  też  w  większości  przypadków  omi-
nąć  filtry  antyspamowe  analizujące  treści 
listów.

Istnieje  możliwość  takiej  konfiguracji

qmaila,  aby  już  na  początku  transmisji 
sprawdzał on, czy konto odbiorcy znajduje 
się na serwerze. Jeśli nie – połączenie zosta-
nie przerwane. Do tego właśnie służy patch 
realrcptto
.

Instalacja patcha

Aby go zainstalować, należy pobrać jego naj-
nowszą  wersję  ze  strony  http://code.dogmap.
org./qmail/.

Następny  krokiem  jest  przejście  do  ka-

talogu  ze  źródłami  qmaila  i  nałożenie  ścią-
gniętej łatki:

cd katalog/
   qmail-1.03/
   patch -p1 
   < qmail-1.03-realrcptto-
   2006.12.10.patch

Niestety  część  poprawek  może  zostać  od-
rzucona,  jeśli  wcześniej  były  zakładane  in-
ne patche.

Należy wtedy wejść do plików z rozsze-

rzeniem .rej i sprawdzić, jaki fragment ko-
du nie został zaaplikowany, a następnie rę-
cznie  dokonać  odpowiednich  poprawek 
w źródłach.

Na pewno konflikt tego typu występuje 

przy bardzo popularnym patchu 

qmail-smt-

pauth

.

Jeśli masz już poprawnie zmodyfikowa-

ne źródła, kompilacja sprowadza się do po-
lecenia

make

Po  pomyślnej  kompilacji  musisz  zatrzymać 
qmaila:

qmailctl stop

po czym podmienić dwa pliki:

cp qmail-smtpd 
   /var/qmail/bin/
cp qmail-qmtpd 
   /var/qmail/bin/

Następnie wystarczy ponownie wystartować 
serwer:

qmailctl start

Po restarcie qmaila dobrze jest sprawdzić, 
czy nowe oprogramowanie zachowuje się 
poprawnie. Najprościej będzie wysłać ma-
ila  na  nieistniejący  adres  w  twojej  dome-
nie:

telnet localhost 25
ehlo test.com
mail from: test@test.com
250 ok
rcpt to: 
nieistnieje@lokalna.domena
552 sorry, no mailbox here 
by that name. (#5.1.1)

Jeśli otrzymasz komunikat jak powyżej, zna-
czy to, że wszystko działa zgodnie z oczeki-
waniami.

Dodatkowe uwagi

Realrcptto  w  trakcie  trwania  sesji  SMTP
sprawdza,  czy  możliwe  jest  dostarczenie
maila do podanego odbiorcy. W tym celu
sprawdza  konta  fizyczne,  konta  wirtualne
oraz aliasy. Jeśli na serwerze mamy alias 
.qmail-default, to używanie qmail-realrcptto 
mija się z celem, gdyż alias ten pasuje do 
wszystkich  odbiorców,  którzy  nie  zostali 
wcześniej znalezieni przy dostarczaniu pocz-
ty.

W przypadku vpopmaila plik ten jest 

automatycznie  zakładany  i  wykorzysty-
wany  do  odbijania  maili  lub  do  przekie-
rowywania  błędnie  zaadresowanej  pocz-
ty  na  konto  jednego  z  użytkowników 
(tzw.  catch-all  account).  Plik  .qmail-default 
jest  również  wykorzystywany  do  podpi-
nania  wszelkich  filtrów,  np.  antyspamo-
wych. Dlatego też, jeśli zdecydujemy się na
jego  usunięcie,  musimy  przenieść  obsługę 
filtrów w inne miejsce, np. do qmail-scan-
nera
.

Podsumowanie

Dzięki  wpółpracy  serwera  qmail  z  roz-
szerzeniem  SPF,  programem  antywiruso-
wym,  systemem  antyspamowym,  syste-
mem vpopmail oraz patch realrcptto blo-
kujący  wysyłanie  niepotrzebnych  zwro-
tów maili otrzymujemy stabilny, bezpiecz-
ny,  funkcjonalny  a  zarazem  nowoczesny
serwer pocztowy.