Qmail smtp-auth, clamd, rbl

Instalacja Qmaila w Slackware jest dosyć prosta lecz niektórym czasem sprawia trochę trudności postanowiłem napisać ten artykuł, gdyż obecne artykuły w sieci są nieaktualne. Chodzi dokładnie o patcha do smtp-auth w wersji 0.31. Ostatnio w logach znalazłem dużo różnych wiadomości wysyłanych przez osoby nieuprawnione. Od kiedy zainstalowałem patch 0.58 problem zniknął.

  
Poniżej przedstawię instalacje qmail z autoryzacją smtp z patchem 0.58 oraz skanerem antywirusowym clamd i blokadą spamerów po rbl.

Instalacja realizowana na systemie Slackware 10.2.

 

1. Ściągamy źródła:


qmail,http://www.qmail.org/netqmail-1.05.tar.gz
ucspi-tcp,ftp://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
daemontools,ftp://cr.yp.to/daemontools/daemontools-0.76.tar.gz
clamav http://belnet.dl.sourceforge.net/sourceforge/clamav/clamav-0.92rc2.tar.gz
qmail-scanner http://heanet.dl.sourceforge.net/sourceforge/qmail-scanner/qmail-scanner-2.02.tgz
maildrop http://prdownloads.sourceforge.net/courier/maildrop-2.0.4.tar.bz2
smtpd-auth http://www.fehcom.de/qmail/auth/qmail-smtpd-auth-058_tgz.bin

2. W tym momencie powinieneś uzyskać uprawnienia root'a, jeśli jeszcze ich nie masz


su

umask 022

mkdir -p /usr/local/src

mv netqmail-1.05.tar.gz ucspi-tcp-0.88.tar.gz /usr/local/src

mkdir -p /package

mv daemontools-0.76.tar.gz /package

chmod 1755 /package

mv qmail-smtpd-auth-058_tgz.bin /usr/local/src

Teraz możesz rozpakować pakiety.

cd /usr/local/src

gunzip netqmail-1.05.tar.gz

tar xpf netqmail-1.05.tar

cd netqmail-1.05

./collate.sh # watch for errors here

cd netqmial-1.0.5

mv /usr/local/src/ qmail-smtpd-auth-058_tgz.bin /usr/local/src/netqmail-1.0.5/netqmail-1.0.5/ qmail-smtpd-auth-058_tgz.bin

tar zxvf qmail-smtpd-auth-058_tgz.bin

./install_smtpd-auth.sh

cd ../..

gunzip ucspi-tcp-0.88.tar.gz

tar xpf ucspi-tcp-0.88.tar

rm *.tar # opcjonalne, tylko jeśli masz mało miejsca na dysku

cd /package

gunzip daemontools-0.76.tar.gz

tar xpf daemontools-0.76.tar

rm *.tar # opcjonalne, j.w.

Powinieneś mieć teraz podkatalogi nazwane /usr/local/src/netqmail-1.05, /usr/local/src/ucspi-tcp-0.88 i /package/admin/daemontools-0.76.

3. Zakładanie Katalogów


Program instalacyjny qmail'a sam tworzy podkatalogi, ktore są potrzebne. Dla ciebie pozostaje tylko stworzenie katalogu "domowego":

mkdir /var/qmail

Możesz teraz przejść do następnego podpunktu.

 

4. Tworzenie użytkowników i grup



Najprościej zrobić to tworząc skrypt. W katalogu źrodłowym znajdź plik o nazwie INSTALL.ids. Znajdują się w nim polecenia, które należy wykonać, w wersjach dla wielu różnych platform, więc najlepiej skopiować go do pliku o innej nazwie i dokonać jego edycji.

cd /usr/local/src/netqmail-1.05/netqmail-1.05

cp INSTALL.ids IDS

Następnie przy użyciu edytora tekstu usuń z niego to co nie jest potrzebne. Dla przykładu oto co powinno znaleźć się w IDS dla FreeBSD po zakończeniu edycji:

pw groupadd nofiles

pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent

pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent

pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent

pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent

pw groupadd qmail

pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent

pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent

pw useradd qmails -g qmail -d /var/qmail -s /nonexistent



Następnie użyj chmod by uczynić go wykonywalnym lub uruchom go poprzez sh:

Pierwsza metoda:

chmod 700 IDS

./IDS

Druga metoda:

/bin/sh IDS

Gdy skrypt zakończy działanie będziesz miał już stworzonych wszystkich potrzebnych użytkowników oraz grupy i możesz przejść do następnego punktu.


5. Kompilacja



Jesteś już gotowy do rozpoczęcia kompilacji. Zmień katalog na /usr/local/src/netqmail-1.05/netqmail-1.05 i zaczynajmy:

cd /usr/local/src/netqmail-1.05/netqmail-1.05

W punkcie Sprawdzenie działania kompilatora znalazłeś kompilator C. Jeśli nie nazywa się on cc, albo gdy katalog w którym on się znajduje nie został dodany do zmiennej środowiskowej PATH, będziesz musiał dokonać edycji plików conf-cc i conf-ld. Powiedzmy, że twój kompilator nazywa się gcc i jego katalog nie jest w twej ścieżce dostępu. W takim razie dokonaj edycji conf-cc i conf-ld i napisz "gcc" zamiast "cc".

Teraz napisz:

make setup check

Po zakończeniu kompilacji trzeba skonfigurować qmail'a. Kilka skryptów dostarczonych wraz z nim ułatwi to.

Jeśli twoj DNS jest poprawnie skonfigurowany napisz:

./config

Jeśli, z jakiegoś powodu, config nie znalazł nazwy twego hosta w DNS trzeba uruchomić skrypt o nazwie config-fast:

./config-fast pełna.nazwa.hosta

Na przykład, jeśli twoja domena to example.com, a nazwa twojego hosta to dolphin powinieneś napisać:

./config-fast dolphin.example.com

Uwaga: W małych sieciach LAN możesz chcieć użyć pseudodomeny takiej jak ".local". np. jeśli twój host nazywa się "mash", możesz wykonać ./config-fast mash.local. Jeśli tak zrobisz bądź pewien by skonfigurować qmail'a by używał prawidłowej domeny internetowej. (Zob. rozdział 3, Konfiguracja.)

qmail został właśnie zainstalowany w twym systemie i jest gotowy do pracy! Za chwilę przeczytasz jak go uruchomić i przetestować.

6. Instalacja ucspi-tcp



Rozpakowaliśmy już qmail, ucpsi-tcp i daemontools z archiwów tar. Przejdźmy zatem do katalog ucpsi-tcp:

cd /usr/local/src/qmail/ucspi-tcp-0.88

Jeśli w punkcie Kompilacja dokonałeś zmian w plikach conf-cc i conf-ld będziesz musiał wprowadzić te same zmiany tutaj.

Następnie:

patch < /usr/local/src/netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch

make

make setup check

To już wszystko. ucpsi-tcp jest zainstalowany.

7. Instalacja daemontools



Zmień katalog:

cd /package/admin/daemontools-0.76

I znowu, jeśli zmodyfikowałeś pliki conf-cc i conf-ld podczas instalacji qmail'a i ucspi-tcp będziesz musiał zrobić te same zmiany tutaj.

Następnie:

cd src

patch < /usr/local/src/netqmail-1.05/other-patches/daemontools-0.76.errno.patch

cd ..

package/install


Uruchomienie Qmail


8. /var/qmail/rc



Stwórz plik ./var/qmail/rc o takiej treści:

#!/bin/sh

# Using splogger to send the log through syslog.

# Using procmail to deliver messages to /var/spool/mail/$USER by default.

exec env - PATH="/var/qmail/bin:$PATH" \

qmail-start '|preline procmail' splogger qmail

/usr/local/bin/rblmsmtpd /var/qmail/bin/qmail-smtpd /bin/checkpassword /bin/true /bin/cmd5checkpw /bin/true 2>&1



Następnie wykonaj polecenia:

chmod 755 /var/qmail/rc

mkdir /var/log/qmail



9. Pliki startowe systemu


a. Skrypt qmail'a

Jeśli ręcznym uruchomiłeś skrypt /var/qmail/rc qmail został częściowo uruchomiony. Chcemy jednak, by qmail był automatycznie uruchamiany podczas każdego startu systemu i by był bezpiecznie zamykany podczas wyłączania komputera.

Aby to osiągnąć utwórz skrypt podobny do poniższego w /var/qmail/bin/qmailctl:

#!/bin/sh



# description: the qmail MTA



PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin

export PATH



QMAILDUID=`id -u qmaild`

NOFILESGID=`id -g qmaild`



case "$1" in

start)

echo "Starting qmail"

if svok /service/qmail-send ; then

svc -u /service/qmail-send /service/qmail-send/log

else

echo "qmail-send supervise not running"

fi

if svok /service/qmail-smtpd ; then

svc -u /service/qmail-smtpd /service/qmail-smtpd/log

else

echo "qmail-smtpd supervise not running"

fi

if [ -d /var/lock/subsys ]; then

touch /var/lock/subsys/qmail

fi

;;

stop)

echo "Stopping qmail..."

echo " qmail-smtpd"

svc -d /service/qmail-smtpd /service/qmail-smtpd/log

echo " qmail-send"

svc -d /service/qmail-send /service/qmail-send/log

if [ -f /var/lock/subsys/qmail ]; then

rm /var/lock/subsys/qmail

fi

;;

stat)

svstat /service/qmail-send

svstat /service/qmail-send/log

svstat /service/qmail-smtpd

svstat /service/qmail-smtpd/log

qmail-qstat

;;

doqueue|alrm|flush)

echo "Flushing timeout table and sending ALRM signal to qmail-send."

/var/qmail/bin/qmail-tcpok

svc -a /service/qmail-send

;;

queue)

qmail-qstat

qmail-qread

;;

reload|hup)

echo "Sending HUP signal to qmail-send."

svc -h /service/qmail-send

;;

pause)

echo "Pausing qmail-send"

svc -p /service/qmail-send

echo "Pausing qmail-smtpd"

svc -p /service/qmail-smtpd

;;

cont)

echo "Continuing qmail-send"

svc -c /service/qmail-send

echo "Continuing qmail-smtpd"

svc -c /service/qmail-smtpd

;;

restart)

echo "Restarting qmail:"

echo "* Stopping qmail-smtpd."

svc -d /service/qmail-smtpd /service/qmail-smtpd/log

echo "* Sending qmail-send SIGTERM and restarting."

svc -t /service/qmail-send /service/qmail-send/log

echo "* Restarting qmail-smtpd."

svc -u /service/qmail-smtpd /service/qmail-smtpd/log

;;

cdb)

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

chmod 644 /etc/tcp.smtp.cdb

echo "Reloaded /etc/tcp.smtp."

;;

help)

cat <<HELP

stop -- stops mail service (smtp connections refused, nothing goes out)

start -- starts mail service (smtp connection accepted, mail can go out)

pause -- temporarily stops mail service (connections accepted, nothing leaves)

cont -- continues paused mail service

stat -- displays status of mail service

cdb -- rebuild the tcpserver cdb file for smtp

restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it

doqueue -- schedules queued messages for immediate delivery

reload -- sends qmail-send HUP, rereading locals and virtualdomains

queue -- shows status of queue

alrm -- same as doqueue

flush -- same as doqueue

hup -- same as reload

HELP

;;

*)

echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"

exit 1

;;

esac



exit 0



Skrypt ten jest dostępny także ze strony http://www.lifewithqmail.org/qmailctl-script-dt70.

Utwórz ten skrypt w edytorze albo ściągnij go z powyższej strony (zalecane).

Uczyń skrypt qmailctl uruchamialnym i zlinkuj go do katalogu znajdującego się w twojej ścieżce dostępu:

chmod 755 /var/qmail/bin/qmailctl

ln -s /var/qmail/bin/qmailctl /usr/bin



10. Skrypty supervise

Utwórz teraz katalogi supervise dla poszczególnych usług qmail'a:

mkdir -p /var/qmail/supervise/qmail-send/log

mkdir -p /var/qmail/supervise/qmail-smtpd/log

Stwórz plik /var/qmail/supervise/qmail-send/run:

#!/bin/sh

exec /var/qmail/rc

Stwórz plik /var/qmail/supervise/qmail-send/log/run:

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail

Stwórz plik /var/qmail/supervise/qmail-smtpd/run:

#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`

if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi

if [ ! -f /var/qmail/control/rcpthosts ]; then
echo "No /var/qmail/control/rcpthosts!"
echo "Refusing to start SMTP listener because it'll create an open relay"
quot;
exit 1
fi

exec /usr/local/bin/softlimit -m 2000000 /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /usr/local/bin/rblsmtpd -r list.dsbl.org -r bl.spacop.net -r sbl-xbl.spamhaus.org /var/qmail/bin/qmail-smtpd /bin/checkpassword /bin/true 2&>1
Uwaga: Obszar pamięci określony przez polecenie softlimit może wymagać zwiększenia w zależności od typu systemu operacyjnego oraz hardware. Jeśli połączenia z portem 25 będą stwarzać problemy lub gdy hosty zewnętrzne nie będą mogły wysyłać do ciebie poczty zwiększ ten parametr do 3000000 lub 4000000.

W niektórych sytuacjach konieczne będzie nadanie temu parametrowi znacznie wyższej wartości. Przykładowo jeśli planujesz używać skanera antywirusowego mksd to w chwili obecnej potrzebuje on aż 128mb pamięci dla swych celów (od tłumacza).


Stwórz plik concurrencyincoming:

echo 20 > /var/qmail/control/concurrencyincoming

chmod 644 /var/qmail/control/concurrencyincoming

Stwórz plik /var/qmail/supervise/qmail-smtpd/log/run:

#!/bin/sh

exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd

Uczyń pliki startowe plikami uruchamialnymi:

chmod 755 /var/qmail/supervise/qmail-send/run

chmod 755 /var/qmail/supervise/qmail-send/log/run

chmod 755 /var/qmail/supervise/qmail-smtpd/run

chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

I utwórz katalogi dla logów:

mkdir -p /var/log/qmail/smtpd

chown qmaill /var/log/qmail /var/log/qmail/smtpd

I wreszcie zlinkuj katalog supervise do /service:

ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

Katalog /service tworzony jest w trakcie instalacji pakietu daemontools

Uwaga: qmail uruchomi się automatycznie wkrótce po utworzeniu powyższych linków. Jeśli nie chcesz żeby już teraz rozpoczął pracę napisz:

qmailctl stop

11. Kontrola dostępu do SMTP



Zezwól na wysyłanie poczty z localhosta poprzez SMTP:

echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp

qmailctl cdb

12. Zatrzymanie i wyłączenie zainstalowanego MTA



Mimo, że możliwa jest jednoczesna praca qmail'a i zainstalowanego MTA, którym prawdopodobnie jest Sendmail, nie zalecam tego chyba że wiesz co robisz. A jeśli czytasz ten tekst to prawdopodobnie tak nie jest :-)

Jeśli twym obecnym MTA jest Sendmail powinieneś być w stanie zatrzymać go uruchamiając skrypt zawarty w init.d z argumentem "stop". Jedno z poniższych powinno zadziałać:

/etc/init.d/sendmail stop

/sbin/init.d/sendmail stop

/etc/rc.d/init.d/sendmail stop

Jeśli nie możesz znależć skryptu init.d/sendmail spróbuj zlokalizować PID Sendmail'a poprzez "ps -ef|grep sendmail" lub "ps waux|grep sendmail" i zatrzymaj go:

kill PID-of-sendmail

Jeśli twym MTA nie jest Sendmail zajrzyj do jego dokumentacji aby dowiedzieć się jak należy go zatrzymać.

Powinieneś rozważyć całkowite usunięcie starego MTA z systemu. A przynajmniej usuń skrypt z init.d po to by nie startował ponownie podczas reboot'u systemu.

Dla Red Hat'a usuniecię Sendmail'a można osiągnąc poprzez:

rpm -e --nodeps sendmail

Uwaga: Jeśli posiadasz dystrybucję, która używa RPM jako systemu kontroli zainstalowanych pakietów, czyli np. Red Hat usunięcie pakietu MTA może spowodować pewne problemy w przyszłości. Narzędzia, które przeprowadzają update systemu mogą próbować zainstalować ponownie Sendmail'a gdyż mogą nie być w stanie wykryć, że masz zainstalowany inny MTA. Mate Wierdl stworzył pakiet o nazwie "fałszywy_mta" który zapobiega tym problemom. Zainstaluj po prostu RPM dostępny tutaj http://www.csi.hu/mw/fake_mta-1-1memphis.noarch.rpm.

Sprawdź czy nic nie nie nasłuchuje na porcie SMTP (25). Jeśli coś tam jest może to być stary MTA, inetd, lub xinetd. Poniższe polecenie nie powinno dać żadnych wyników (chyba, że qmail-smtpd jest uruchomiony):

netstat -a | grep smtp

Jeśli jednak coś otrzymałeś będziesz musiał zlokalizować przyczynę problemu i usunąć ją zanim uruchomisz qmail'a.

Na koniec zastąp istniejący /usr/lib/sendmail jego wersją z qmail'a

mv /usr/lib/sendmail /usr/lib/sendmail.old # zignoruj błędy

mv /usr/sbin/sendmail /usr/sbin/sendmail.old # zignoruj błędy

chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old # zignoruj błędy

ln -s /var/qmail/bin/sendmail /usr/lib

ln -s /var/qmail/bin/sendmail /usr/sbin

Uwaga: Jest bardzo ważne by stworzyć linki sendmail , niezależnie od tego jaki MTA miałeś zainstalowany. Polecenie sendmail wywoływane jest przez wiele aplikacji w celu wysłania maila.

Jesteśmy już prawie gotowi do uruchomienia qmail'a. Ostatni krok to stworzenie kilku systemowych aliasów.

  

13. Tworzenie systemowych aliasów



Istnieją trzy aliasy systemowe, które powinny być stworzone w każdym systemie w którym działa qmail:

Alias


Przeznaczenie

postmaster


wymagany przez RFC 821, wskazuje na administratora poczty (ciebie)

mailer-daemon


standardowy odbiorca niedostarczonych listów

root


przekierowuje pocztę z uprzywilejowanego konta do administratora systemu

By stworzyć te aliasy zdecyduj gdzie chcesz żeby była dostarczana poczta kierowana do nich (do użytkownika lokalnego, czy do adresu na zewnątrz), stwórz i wypełnij odpowiednie pliki .qmail. Na przykład, powiedzmy że lokalny użytkownik dave jest zarówno administratorem poczty, jak i administratorem systemu:

echo dave > /var/qmail/alias/.qmail-root

echo dave > /var/qmail/alias/.qmail-postmaster

ln -s .qmail-postmaster /var/qmail/alias/.qmail-mailer-daemon

chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster

Jeśli pragniesz dowiedzieć się więcej zajrzyj do INSTALL.alias.

  

14. Instalacja systemu antywirusowego ClamAV dla qmaila



Pierwsze co musisz zrobić, to ściągnąć najnowszą wersję antywirusa ClamAV. Następnie musisz założyć odpowiednią grupę i użytkownika z prawami którego będzie on działał.

groupadd clamav

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

rozpakowujesz pakiety:
cd /usr/local/src/
tar zxvf clamav-0.92rc2.tar.gz
cd clamav-0.91.2

./configure

make

make install

Aby uruchomić demona musisz go najpierw skonfigurować. Domyślnie ta konfiguracja jest w pliku /usr/local/etc/clamd.conf.

Przede wszystkim musisz usunąć linię "Example", żeby w ogóle uruchomić demona. Warto przejrzeć wszystkie opcje konfiguracyjne, żeby przynajmniej 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/

Jeśli coś jest nie tak, to warto przede wszystkim włączyć wysoki poziom logowania demona (LogVerbose) i zobaczyć w logach jaka jest przyczyna błędnego działania.

Jeśli już doprowadzisz do działania clamd, to możesz przejść do następnego kroku.

   

15. Instalacja qmail-scannera



Musisz stworzyć grupę 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

rozpakować
cd /usr/local/src/
bzip –d | tar xvf maildrop-2.0.4.tar.bz2
cd maildrop-2.0.4
./configure
make
make install
cd ..
tar zxvf qmail-scanner-2.02.tgz
cd qmail-scanner-2.02

W tym momencie możesz uruchomić konfigurację pakietu:

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

--debug no

Zgodnie z powyższą linijką wszelkie powiadomienia administracyjne qmail-scanner będzie wysyłał na adres Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.

Jeśli qmail-scanner znajdzie oprogramowanie którego potrzebuje, to wyświetli podsumowanie jakie wartości zostaną użyte przy instalacji. Najważniejsza jest linijka:

scanners="clamdscan_scanner"

Oznacza ona, że qmail-scanner znalazł zainstalowanego ClamAV i będzie go obsługiwał w trybie demona. Jeśli wszystko jest OK, to możesz dodać opcję "--install", żeby configure faktycznie zainstalowało cały program.

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

--debug no --install

Po instalacji sprawdź, czy użytkownik qmaild będzie miał prawa do uruchamiania skanera:

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

Jeśli dostaniesz komunikat "Can't do setuid" lub "Permission denied", to najprawdopodobniej nie masz zainstalowanego pakietu suid-perl (w RedHacie jest to "perl-suidperl", w Debianie "perl-suid").
Ustawienie QMAILQUEUE

Ostatnią rzeczą którą trzeba zrobić, to ustawić zmienną QMAILQUEUE, która powie qmailowi, że jako programu do kolejkowania poczty ma użyć qmail-scannera. Najwygodniejszym sposobem jest dopisanie jej do pliku /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 potrzeba uruchamiać antywirusa (stąd brak zmiennej QMAILQUEUE w pierwszej linijce). 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 trzeba przebudować 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

W tym momencie qmail powinien już skanować przechodzące przesyłki przy pomocy antywirusa. Możesz to przetestować przesyłająć pocztę do siebie i obserwować nagłówki. Powinny tam się pojawić wpisy informujące o skanowaniu przesyłki:

Received: from 111.222.33.44 by grendel ... with qmail-scanner-1.25

(clamdscan: 0.85.1/925. spamassassin: 3.0.3.

Clear:RC:0(111.222.33.44):SA:0(0.2/5.0):.

Processed in 0.116137 secs);

Potencjalne problemy

Po dodaniu skanera antywirusowego znacząco zwiększa się apetyt qmaila na pamięć. Jeśli masz qmaila wywoływanego z ograniczeniem pamięci do wykorzystania, to limit ten może okazać się niewystarczający.

Objawia się to najczęściej takim komunikatem przy próbie wysłania poczty:

451 qq temporary problem (#4.3.0)

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

  

16. Na koniec...


Zatrzymujemy qmail komendą
qmailctl stop
Uruchamiamy
qmailctl start

  

I powinniśmy mięć działający bezpieczny serwer pocztowy z autoryzacją.

Materiały z których korzystałem (wręcz przeklejałem całe opracowania):

http://www.globi.org/lwq/
http://www.linkor.com.pl/src/qmail_antywirus.php