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