Ключевые слова:postfix, mail, virus, spam, (найти похожие документы)
From: greenh
Newsgroups: email
Date: Mon, 18 Nov 2004 14:31:37 +0000 (UTC)
Subject: Проверка вирусов используя ClamAV и Postfix
Диалог у телевизора или как мы к postfix-у clamav прикручивали
frend> Привет
greenh> я кажется спарвился с clamav
frend> Через что?
greenh> amavis-new
frend> Ну да, я тоже пытался через него.
greenh> и что получается?
greenh> что пишет?
greenh> в общем если что - могу попробовать подсказать
frend> М-м-м... интересно.
greenh> :)
frend> Я сейчас запустил amavisd-new на make install. Пока ставит
всякие перловые кусочки.
greenh> ок
greenh> а clamav стоит?
frend> Да.
greenh> запускается?
greenh> не матерится влогах?
frend> Пока не запускал.
greenh> запусти clamav-clam.sh rcvar
greenh> сорри clamav-clamd.sh rcvar должен быть в usr/local/etc/rc.d
greenh> ты под чем? freebsd?
frend> да.
frend> Там есть только clamav.sh
greenh> если его запустить без параметров, что он говорит?
frend> Собственно, он у меня уже запущен.
frend> bash# ps -ax | grep clam
3 ?? Ss 0:00,91 /usr/local/bin/freshclam -d -c 2 -l
/var/log/freshcla
greenh> нет
freshclam - это обновление
frend> Ничего не говорит. Запустился еще один freshclam
greenh> а что ты ставил из портов?
frend> В смысле?
greenh> там три варианта clam
greenh> и какой clam стоит?
frend> М-м-м...
frend> Не из портов.
frend> Поставить из портов?
greenh> поставь из портов
он в security живет
frend> [ ] MILTER Compile the milter interface
Это не надо?
greenh> я ставил, но по моему не использовал
поставь, гне помешает
greenh> только предыдущий грохни
frend> Угу.
frend> Компилится.
greenh> ок
скажешь когда, ок?
frend> ОК
frend> make install
greenh> сделал?
frend> да
greenh> ок
rehash
и смотри что там в /usr/local/etc/rc.d/
greenh> и make clean ^)
frend> rehash - это что?
greenh> обновление всяких системных переменных типа pach и тп
frend> Не знает такой команды :)
frend> bash# ./clamav-clamd.sh rcvar
# clamav_clamd
$clamav_clamd_enable=NO
greenh> как так:???
ну и пес с ним
ага
теперь в rc.conf пишеим
clamav_clamd_enable='YES'
greenh> это была первая пакость :)
frend> Мнда.
frend> Что дальше?
greenh> теперь запускай clamav_clamd.sh start
frend> На конфиги ругается.
greenh> что говрит?
frend> bash# ./clamav-clamd.sh start
Starting clamav_clamd.
ERROR: Please edit the example config file /usr/local/etc/clamav.conf.
ERROR: Can't open/parse the config file /usr/local/etc/clamav.conf
greenh> ага
ясно
сейчас, 1 сек
frend> При том, что он там есть :)
greenh> 2 мин, ща приду
greenh> там есть .conf или .conf.default?
frend> Собственно, я его запустил.
greenh> т.е.?
frend> Tue Sep 7 15:51:27 -> +++ Started at Tue Sep 7 15:51:27
Tue Sep 7 15:51:27 -> clamd daemon 0.75.1 (OS: freebsd4.9, ARCH:
i386, CPU : i386)
frend> Tue Sep 7 15:51:36 -> Archive support enabled.
Tue Sep 7 15:51:36 -> RAR support disabled.
Tue Sep 7 15:51:36 -> Mail files support disabled.
Tue Sep 7 15:51:36 -> OLE2 support enabled.
Tue Sep 7 15:51:36 -> Self checking every seconds.
greenh> ага
ок
теперь запускай в отдельной консоли
freshclam
просто, без .sh
greenh> он должен начать обновлятся
frend> bash# bash# freshclam
ClamAV update process started at Tue Sep 7 15:57:38
Reading CVD header (main.cvd): OK
main.cvd is up to date (version: 26, sigs: 5, f-level: 2, builder: tomek)
Reading CVD header (daily.cvd): OK
daily.cvd is up to date (version: 481, sigs: , f-level: 2, builder: tomek)
frend> Правда, в лги ничего не написалось.
greenh> вот и замечательно
amavis-new стал?
frend> Я его еще не запускал.
greenh> и не запускай
стал?
frend> Ну да.
greenh> $mydomain = 'kristall-service.net';
$daemon_user = 'vscan';
$file = '/usr/bin/file';
$daemon_group = 'wheel';
$TEMPBASE = \"/tmp\";
$ENV{TMPDIR} = $TEMPBASE;
$max_servers = 5;
$max_requests = 10;
$child_timeout=5*60;
$unix_socketname = \"$MYHOME/amavisd.sock\";
$inet_socket_port = 4;
$inet_socket_bind = '127.0.0.1';
@inet_acl = qw( 127.0.0.1 );
$DO_SYSLOG = 0;
$LOGFILE = \"/var/log/amavis.log\";
$log_level = 2; # (defaults to 0)
$hdr_encoding = 'koi8-r'; # (default: 'iso--1')
$bdy_encoding = 'koi8-r'; # (default: 'iso--1')
@av_scanners = (
['ClamAV-clamd',
\\&ask_daemon, [\"CONTSCAN {}\\n\", \"/var/run/clamav/clamd\"],
qr/\\bOK$/, qr/\\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ]);
$virus_admin = \"greenh\\@kristall-service.net\";
$spam_admin = \"abuse\\@$mydomain\";
$mailfrom_notify_admin = \"postmaster\\@$mydomain\";
$mailfrom_notify_recip = \"postmaster\\@$mydomain\";
$mailfrom_notify_spamadmin = \"postmaster\\@$mydomain\";
$QUARANTINEDIR = '/var/mail/virtual/kristall-service.net/virus/new';
$virus_quarantine_to = 'virus-quarantine'; # traditional local
quarantine
$spam_quarantine_to = 'spam-quarantine';
greenh> это amavisd.conf
первую строчку пофикси
greenh> есть?
frend> Это полный конфиг?
greenh> то, что работает у меня
а в полном конфе столько всего.....
frend> Сделал
frend> Опять Rc.conf править? :)
greenh> ага
запусти amavis.sh rcvar и если нужно....
greenh> блин... :)
amavisd.sh rcvar
frend> Так.
frend> bash# ./amavisd.sh start
Starting amavisd.
ERROR: MISSING REQUIRED BASIC MODULES:
IO::Wrap
IO::Stringy
Unix::Syslog
Mail::Field
Mail::Address
Mail::Header
Mail::Internet
MIME::Head
MIME::Body
MIME::Entity
MIME::Parser
MIME::Decoder::Base64
MIME::Decoder::Gzip64
MIME::Decoder::QuotedPrint
BEGIN failed--compilation aborted at /usr/local/sbin/amavisd line 138.
greenh> стоп
а что у на с перлом?
какой стоит?
frend> Вроде, обновлял.
greenh> до 5,8?
frend> да
greenh> странно
а посмотри в/var/db/pkg модули есть?
frend> This is perl, v5.8.5 built for i386-freebsd-64int
frend> До хрена там.
frend> Может, из-за того, что я не перебутился после обновления перла?
greenh> а сделай к примеру в /var/db/pkg
а ты делал use.perl port
greenh> ????
frend> Да, делал.
greenh> а сделай к примеру в /var/db/pkg
portupgrade p5-MIME-Base64-3.01
frend> мнда
frend> bash# portupgrade p5-MIME-Base64-3.01
bash: portupgrade: command not found
greenh> cd /usr/ports/sysutils/portupgrade
make
make install clean
frend> Stop in /usr/ports/lang/ruby18.
*** Error code 1
frend> Dependency warning: used OpenSSL version contains known vulnerabilities
Please update or define either WITH_OPENSSL_BASE or WITH_OPENSSL_PORT
*** Error code 1
greenh> а ну так идм в порт с ruby и делай make WITH_OPENSSL_BASE=yes
frend> угу
greenh> там же make install clean
и потом собирай portupgrade
frend> Это ясно :)
greenh> ну как?
frend> идет...
frend> bash# portupgrade p5-MIME-Base64-3.01
[Rebuilding the pkgdb <format:bdb1_btree> in /var/db/pkg ... - 140
packages found (-0 +140)
......................................................................
......................................................................
done]
** No such installed package: p5-MIME-Base64-3.01
greenh> что и требовалось доказать
portupgrade -f p5-MIME-Base64-3.01
frend>
bash# portupgrade -f p5-MIME-Base64-3.01
** No such installed package: p5-MIME-Base64-3.01
greenh> ясно
cd //usr/ports/converters/p5-MIME-Base64
и вперед
frend> А вот нифига.
frend> bash# cd //usr/ports/converters/p5-MIME-Base64
bash# make
bash# make install
Для продолжения нажмите любую клавишу...
bash#
frend> Оно уже стоит :(
greenh> правильно
greenh> он стоял, но после пересборки перла его не стало
из var/db/pkg руками удаляешь его
greenh> а потом собираешь
frend> Только его? Или еще что-то надо?
greenh> а все, на что ругается amavis
по одному
frend> Ни фига себе
greenh> можно сделать portupgrade для всех установленных пакетов, но
вопервых это долго, а во вторых я этой манупуляции побаиваюсь
greenh> так что лучше так
а что, там полтора десятка модулей
frend> А что значит \"руками удалять\"? Удалить соответствующую директорию?
greenh> они маленькие, собираются быстро
greenh> да
frend> То есть, удаляю директорию, а потом - make install? Так?
greenh> да
frend> Попробуем
greenh> давай
greenh> я именно так и делал
frend> Поставил. Директория появилась. Делаю
bash# portupgrade p5-MIME-Base64-3.01
[Updating the pkgdb <format:bdb1_btree> in /var/db/pkg ... - 140
packages found (-0 +1) . done]
** No such installed package: p5-MIME-Base64-3.01
greenh> я мин через 10 буду
frend> Это нормально?
greenh> нет
greenh> а ты что переставлял?
frend> Именно его.
greenh> странно
greenh> погоди
greenh> тогда portupgrade -a -f
только внимательно следи, что он делает
а то он может с дуру начать squid или XFree обновлять
frend> И что тогда - прерывать? :)
greenh> ctrl-c
frend> bash# bash# portupgrade -a -f
Stale dependency: amavisd-new-2.1.1,1 --> unrar-3.30_1,3 -- manually
run 'pkgdb -F' to fix, or specify -O to force.
greenh> cltkfq
frend> ?
greenh> сделай
frend> bash# pkgdb -F
---> Checking the package registry database
Missing origin: postfix-2.0.7,1
Skip this for now? [yes]
?
greenh> y
greenh> ну как?
frend> Блин. Поругался...
greenh> кто на кого?
frend> Там до хрена всего было.
greenh> ну pkgdb выполнился?
frend> Stale dependency: amavisd-new-2.1.1,1 -> unrar-3.30_1,3
(archivers/unrar):
New dependency? (? to help):
greenh> y
а потом более новую версию
frend> Так.
frend> bash# pkgdb -F
---> Checking the package registry database
[Updating the pkgdb <format:bdb1_btree> in /var/db/pkg ... - 139
packages found (-0 +1) . done]
Missing origin: postfix-2.0.7,1
Skip this for now? [yes]
To skip it without asking in future, please list it in HOLD_PKGS.
Missing origin: screen-3.9.15
Skip this for now? [yes]
To skip it without asking in future, please list it in HOLD_PKGS.
frend> Всё.
greenh> попробуйтеперь portupgrade для одного пакета
frend> Для какого?
greenh> для того же
frend> bash# portupgrade p5-IO-stringy-2.108
Вроде, прошло.
greenh> а ты ж не для него делал
greenh> и вообще, попробуй amavis, может запустится
greenh> хотя врятли
frend> Пробовал.
greenh> ну и?
frend> ERROR: MISSING REQUIRED BASIC MODULES:
IO::Wrap
IO::Stringy
Unix::Syslog
Mail::Field
Mail::Address
Mail::Header
Mail::Internet
MIME::Head
MIME::Body
MIME::Entity
MIME::Parser
MIME::Decoder::Base64
MIME::Decoder::Gzip64
BEGIN failed--compilation aborted at /usr/local/sbin/amavisd line 138.
greenh> portupgrade -f p5-MIME-Base64-3.01 пробуй
greenh> или какая у твоего версия
frend> Так. Один пакет руками поставил. Теперь:
ERROR: MISSING REQUIRED BASIC MODULES:
Unix::Syslog
Mail::Field
Mail::Address
Mail::Header
Mail::Internet
MIME::Head
MIME::Entity
BEGIN failed--compilation aborted at /usr/local/sbin/amavisd line 138.
greenh> это лучше
а руками - это как?
frend> Из портов
greenh> ставь таким же макаром остальные
frend> Угу.
greenh> поставил этот?
p5-MIME-Base64-
frend> Неа. p5-IO-stringy-2.108
greenh> ну и замечательно
а p5-MIME-Base64 ты поставил до этого
frend> Потихоньку.
frend> :)
greenh> остальное ставится?
frend> А там же придется прописывать конфиги постфикса?
greenh> придется
но позже
а пока нада amavis запустить
frend> Теперь новая напасть:
bash# bash# ./amavisd.sh start
Starting amavisd.
Problem in the Amavis::Unpackers code: Can't locate Convert/TNEF.pm in
@INC (@INC contains: lib /usr/local/lib/perl5/site_perl/5.8.5/mach
/usr/local/lib/perl5/site_perl/5.8.5 /usr/local/lib/perl5/site_perl
/usr/local/lib/perl5/5.8.5/BSDPAN /usr/local/lib/perl5/5.8.5/mach
/usr/local/lib/perl5/5.8.5) at (eval 60) line 17.
BEGIN failed--compilation aborted at (eval 60) line 17.
bash#
greenh> бля ща, посмотрю, кто это такой
greenh> /usr/ports/converters/p5-Convert-TNEF
greenh> посмотри, нет ли его установленного в /var/db/pkg
greenh> есть?
frend> Да.
frend> Снести?
greenh> да
greenh> и поставить :)
greenh> ставится?
frend> Там уже следубщий пошел :)
frend> Problem in the Amavis::Unpackers code: Can't locate
Convert/UUlib.pm in @INC (@INC contains: lib
/usr/local/lib/perl5/site_perl/5.8.5/mach
/usr/local/lib/perl5/site_perl/5.8.5 /usr/local/lib/perl5/site_perl
/usr/local/lib/perl5/5.8.5/BSDPAN /usr/local/lib/perl5/5.8.5/mach
/usr/local/lib/perl5/5.8.5) at (eval 60) line 18.
BEGIN failed--compilation aborted at (eval 60) line 18.
greenh> ну, и дальше тоже самое....
greenh> не понятно, но почекму-то при перестановке перла такие грабли
происходят или я что-то не понимаю?
frend> Угу :(
frend> Всё.
bash# ./amavisd.sh start
Starting amavisd.
bash#
frend> bash# ps -ax | grep ama
3 ?? Ss 0:04,57 amavisd (master) (perl)
4 ?? S 0:00,03 amavisd (virgin child) (perl)
5 ?? S 0:00,02 amavisd (virgin child) (perl)
6 ?? S 0:00,03 amavisd (virgin child) (perl)
7 ?? S 0:00,03 amavisd (virgin child) (perl)
8 ?? S 0:00,03 amavisd (virgin child) (perl)
greenh> ок
а теперь amavis.log в студию....
frend> Весь? :)
frend> Sep 7 17:49:31 sibproject.com /usr/local/sbin/amavisd[8]: starting.
/usr/local/sbin/amavisd at sibproject.com amavisd-new-2.1.1, Unicode aware,
LC_ALL=ru_RU.KOI8-R, LANG=ru_RU.KOI8-R
Sep 7 17:49:31 sibproject.com /usr/local/sbin/amavisd[8]: user=vscan,EUID:
(); group=, EGID: ( )
Sep 7 17:49:31 sibproject.com /usr/local/sbin/amavisd[8]: Perl version 5.05
Sep 7 17:49:32 sibproject.com /usr/local/sbin/amavisd[3]: Net::Server:
Process Backgrounded
Sep 7 17:49:32 sibproject.com /usr/local/sbin/amavisd[3]: Net::Server:
/09/07-17:49:32 Amavis (type Net::Server::PreForkSimple) starting! pid(3)
Sep 7 17:49:32 sibproject.com /usr/local/sbin/amavisd[3]: Net::Server:
Binding to UNIX socket file /var/amavis/amavisd.sock using SOCK_STREAM
Sep 7 17:49:32 sibproject.com /usr/local/sbin/amavisd[3]: Net::Server:
Binding to TCP port 4 on host 127.0.0.1
Sep 7 17:49:32 sibproject.com /usr/local/sbin/amavisd[3]: Net::Server:
Group Not Defined. Defaulting to EGID ' '
Sep 7 17:49:32 sibproject.com /usr/local/sbin/amavisd[3]: Net::Server:
User Not Defined. Defaulting to EUID ''
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: Module Amavis::Conf 2.031
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: Module Archive::T
greenh> да
он же пока небольшой должен быть
frend> 5К
greenh> это все?
frend> Нет.
greenh> меня интересуют последние строки
greenh> ~10
frend> Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: Found $file
at /usr/bin/file
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $arc, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $gzip, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $bzip2, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $lzop, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $lha, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $unarj, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $uncompress, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $unfreeze, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $unrar, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $zoo, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $cpio, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $rpm2cpio, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $cabextract, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]: No $dspam, not using it
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]:
Using internal av scanner code for (primary) ClamAV-clamd
Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]:
SpamControl: initializing Mail::SpamAssassin
Sep 7 17:49:51 sibproject.com /usr/local/sbin/amavisd[3]: SpamControl: done
greenh> отлично!!!!!!!!!!!
greenh> Sep 7 17:49:33 sibproject.com /usr/local/sbin/amavisd[3]:
Using internal av scanner code for (primary) ClamAV-clamd
greenh> теперь
greenh> идем в /usr/local/etc/postfix/main.cf
frend> угу
greenh> в конец пишем
content_filter = smtp-amavis:[127.0.0.1]:4
greenh> потом в master.cf
smtp-amavis unix - - n - 5 smtp
-o smtp_data_done_timeout=
-o disable_dns_lookups=yes
127.0.0.1:5 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
greenh> я через 2 мин буду
frend> Вроде, работает.
greenh> постфикс переставил?
frend> Конечно.
greenh> вирусы ловит?
frend> Проверряю :)
greenh> кинуть что-рить?
frend> Там же есть в дистрибутиве :)
frend> Пока не надо.
greenh> что есть?
frend> Sep 7 18:02:40 sibproject.com /usr/local/sbin/amavisd[6]: (6-01) WARN:
all primary virus scanners failed, considering backups
Sep 7 18:02:40 sibproject.com /usr/local/sbin/amavisd[6]: (6-01)
TROUBLE in check_mail: virus_scan FAILED: virus_scan: ALL VIRUS SCANNERS
FAILED: ClamAV-clamd av-scanner FAILED: Too many retries to talk to
/var/run/clamav/clamd (Can't connect to UNIX socket /var/run/clamav/clamd:
No such file or directory) at (eval 51) line 243.
frend> Это из лога.
greenh> clamav запущен?
frend> В дистрибутиве amavisd-new есть каталог test-messages:
<sample-virus-simple.txt
$ sendmail -i your-address@example.com <sample-virus-nested.txt
$ sendmail -i your-address@example.com <sample-nonspam.txt
$ sendmail -i your-address@example.com <sample-spam-GTUBE-junk.txt
$ sendmail -i your-address@example.com <sample-spam-GTUBE-nojunk.txt
$ sendmail -i your-address@example.com <sample-spam.txt # old sample
$ sendmail -i your-address@example.com <sample-42-mail-bomb.txt
frend> bash# bash# ps -ax | grep clam
9 ?? Ss 0:00,01 /usr/local/sbin/clamd
greenh> посмотри, что clamav в логах пишет?
greenh> /var/run/clamav/clamd: папка есть?
greenh> ау
frend> ага.
greenh> а что в логах пишут?
frend> Tue Sep 7 18:07:15 -> Log file size limited to bytes.
Tue Sep 7 18:07:15 -> Reading databases from /usr/local/share/clamav
Tue Sep 7 18:07:21 -> Protecting against 8 viruses.
Tue Sep 7 18:07:23 -> ERROR: Socket file /tmp/clamd is in use by
another process.
Tue Sep 7 18:07:24 -> No stats for Database check - forcing reload
Tue Sep 7 18:07:28 -> Reading databases from /usr/local/share/clamav
Tue Sep 7 18:07:33 -> Database correctly reloaded (8 viruses)
greenh> А ЧТО В ПАПКЕ /var/run/clamav/clamd
frend> А ничего. :(
greenh> ЯСНО
frend> И мне ясно :)
greenh> в clamav.conf должно быть такое
PidFile /var/run/clamav/clamd.pid
есть?
frend> Нету.
greenh> вообще про PidFile ничего не сказано?
frend> В логе?
greenh> в rjyat
greenh> в конфе
frend> PidFile /var/run/clamav/clamd.pid
frend> LocalSocket /var/run/clamav/clamd
greenh> а их там нету?
frend> неа
frend> Похоже, что-то с правами доступа.
greenh> а проверь права
greenh> :)
frend> Угу. Всё есть. И сокет и pid
greenh> отлично
перезапускай постфикси пробуй :)
frend> Gkj[j ^(
greenh> что такое?
frend> Fuf/
frend> Ага. :)
greenh> ???
greenh> ну?
frend> Ща
frend> Ловит :)
greenh> отлично
что и требовалось доказать
шлифовку уже сам, а то я еще не разбирался
frend> Угу. Спасибо! Пока!
greenh> пока
-o smtp_data_done_timeout=1200
amavis и clamav надо упскать от одного пользователя, в /usr/local/etc/postfix/main.cf
оставить
smtp inet n - n - - smtpd