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
W kolejnym kroku musisz rozpakować, skompilować i zainstalować cały pakiet:
tar -zxvf clamav-0.87.tar.gz cd clamav-0.87 ./configure make make install
Po wydaniu polecenia:
clamscan -r -l scan.txt clamav-0.87
w pliku scan.txt powinna się pojawić informacja o kilkukrotnym wykryciu “wirusa” ClamAV-Test-File. Jeśli tak jest, to znaczy że ClamAV działa poprawnie.
Demon znacznie lepszy
Jednak w przypadku serwera dużo lepszym rozwiązaniem jest uruchomienie demona clamd i odwoływanie się do niego poprzez program clamdscan. Takie rozwiązanie jest znacznie wydajniejsze. Program nie musi za każdym razem wczytywać z dysku całej bazy wirusów, tylko raz uruchomiony trzyma ją cały czas w pamięci. 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.
Nałożenie patcha qmailqueue
Qmail-scanner jest programem, który integruje qmaila z różnymi systemami antywirusowymi, w tym z ClamAV.Do poprawnego działania qmail-scanner potrzebuje qmaila z zainstalowanym patchem qmailqueue-patch. Jeśli jeszcze nie masz zaaplikowanego tego patcha, to musisz go nałożyć i przekompilować qmaila.
Oryginał wiadomości z patchem znajdziesz tutaj. Natomiast na naszych stronach jest gotowy patch do zaaplikowania.
Nałożenie patcha wygląda następująco. W katalogu nadrzędnym do qmail-1.03 musisz uruchomić:
patch -p0 < qmailqueue-patch cd qmail-1.03 make
Następnie potrzebujesz podmienić qmail-smtpd
cp /var/qmail/bin/qmail-smtpd /var/qmail/bin/qmail-smtpd.old cp qmail-smtpd /var/qmail/bin/
i zrestartować qmaila.
Instalacja qmail-scannera
Najpierw musisz pobrać najnowszą wersję ze strony http://qmail-scanner.sourceforge.net/ Następnie 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
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 konto_mailowe@twoja.domena.pl 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.




[…] spotykane integracje ClamAV dotyczą programów pocztowych – przykładem niech będzie opisana przez Marcina Kądziołkę integracja ClamAV z serwerem pocztowym Qmail. Na groźnego wirusa można jednak natknąć się nie tylko w mailu, ale także ściągając (i […]