From: info from Bugzilla, text by Olegy <olegy at olegy.ru>
Newsgroups: email
Date: Mon, 15 Nov 2004 14:31:37 +0000 (UTC)
Subject: Установка антивируса и спамфильтра для почтовой системы qmail
Установка Антивирус+Спамфильтр для почтовой системы qmail (qmail+ucspi-tcp) OS FreeBSD
Установка нужного программного обеспечения:
-------------------------------------------
1) Обновляем порты если, они вручную не обновляются.
Рабочая конфигурация : amavisd-new-2.1.2 + clamav-0.80 стоит у меня на freebsd 4.9
2) cd /usr/ports/security/amavisd-new/
делаем make, если ругается на perl,
идём в /usr/ports/lang/perl5.8 делаем
make install
если всё поставилось без вопросов, тогда идём в
cd /work
делаем файл use.perl запускным, после чего запускаем -
./use.perl port
Теперь у нас есть perl линейки 5.8 и он анонсирован в системе как дефолтный.
Идём опять в /usr/ports/security/amavisd-new/
И делаем :
make
после чего идём в папку cd /work/amavisd-new-2.1.2
и делаем следующее :
patch <amavisd-new-qmqpqq.patch
Далее :
make install
Это мы поставили приблуду которая свяжет нам спамфильтр и антивирус
(поддерживает около 10-ти антивирусных систем, можно включить все сразу,
"для параноиков" 8-))) ).
3) Ставим спамфильтр - cd /usr/ports/mail/p5-Mail-SpamAssassin/
make
make install
4) Ставим антивирус cd /usr/ports/security/clamav/
make
make install
5) Нам нужно пропатчить наш qmail, ищем папку с исходниками qmail-а,
если таковой уже давно нет, тогда идём на
http://www.opennet.ru/base/net/qmail_antispam.txt.html
и качаем по ссылкам qmail и все нужные патчи к нему, плюс тот что нужен
нам можно найти здесь - http://www.imladris.sk/howto/download/qmail-queue.patch
Далее патчим qmail всеми патчами.
Идём в каталог с qmail-ом, находим файл qmail-qmqpc.c и меняем в нем
#define PORT_QMQP 628
на
#define PORT_QMQP 10628
Устанавливаем qmail туда же где он уже стоит.
Настройка программного обеспечения:
------------------------------------
1) Идём туда где у нас лежит файл с адресами которым разрешен
"открытый релей", у меня такой файл лежит в /etc называется
tcp.smtp, в него нужно добавить строчку:
127.10.10.10:allow,RELAYCLIENT="",QMAILQUEUE="bin/qmail-queue.orig"
Далее нужно создать файл tcp.smtp.amavis и сунуть в него следующее :
В моем случае -
-u 89 : это uid пользователя vpopmail
-u 83 : это gid группы vchkpw
2) В папке /var/qmail/control создать файл qmqpservers и сунуть в него:
127.10.10.10
3) Нам нужен алиал ip на локальном интерфэйсе, для этого запускаем команду:
ifconfig lo0 inet 127.10.10.10 netmask 255.255.255.255 alias
И дописываем в /etc/rc.conf :
ifconfig_lo0_alias0="inet 127.10.10.10 netmask 255.255.255.255"
4) Привожу свой конфигурационный файл от amavisd-new (в нём только нужно
указать ваш дефолтный домен), лежит он /usr/local/etc/amavisd.conf:
use strict;
# a minimalistic configuration file for amavisd-new with all necessary settings
#
# (see amavisd.conf-default for a list of all variables with their defaults)
# (see amavisd.conf-sample for a traditional-style commented file)
# COMMONLY ADJUSTED SETTINGS:
# @bypass_virus_checks_maps = (1); # uncomment to DISABLE anti-virus code
# @bypass_spam_checks_maps = (1); # uncomment to DISABLE anti-spam code
$max_servers = 10; # number of pre-forked children (2..15 is common)
$max_requests = 350;
$daemon_user = 'vscan'; # (no default; customary: vscan or amavis)
$daemon_group = 'vscan'; # (no default; customary: vscan or amavis)
$mydomain = 'ВАШ.ДОМЕН'; # a convenient default for other settings
$MYHOME = '/var/amavis'; # a convenient default for other settings
$TEMPBASE = "$MYHOME/tmp"; # working directory, needs to be created manually
$ENV{TMPDIR} = $TEMPBASE; # environment variable TMPDIR
$QUARANTINEDIR = '/var/virusmails';
# $daemon_chroot_dir = $MYHOME; # chroot directory or undef
$log_level = 0; # verbosity 0..5
$log_recip_templ = undef; # disable by-recipient level-0 log entries
$DO_SYSLOG = 0; # log via syslogd (preferred)
$SYSLOG_LEVEL = 'mail.debug';
$LOGFILE = "$MYHOME/amavis.log";
$enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny)
$enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1
$protocol = "QMQPqq";
$inet_socket_port = 10628; # listen on this local TCP port(s) (see $protocol)
$inet_socket_bind = '127.10.10.10'; # limit socket bind to loopback interface
@inet_acl = qw( 127.10.10.10 );
#$unix_socketname = "$MYHOME/amavisd.sock"; # when using sendmail milter
$sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
$sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 6.31; # triggers spam evasive actions
$sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
$sa_mail_body_size_limit = 200*1024; # don't waste time on SA if mail is larger
$sa_local_tests_only = 1; # only tests which do not require internet access?
$sa_auto_whitelist = 1; # turn on AWL in SA 2.63 or older (irrelevant
# for SA 3.0, cf option is 'use_auto_whitelist')
# @lookup_sql_dsn =
# ( ['DBI:mysql:database=mail;host=127.0.0.1;port=3306', 'user1', 'passwd1'],
# ['DBI:mysql:database=mail;host=host2', 'username2', 'password2'] );
# REMAINING IMPORTANT VARIABLES ARE LISTED HERE BECAUSE OF LONGER ASSIGNMENTS
@viruses_that_fake_sender_maps = (new_RE(
[qr'bEICARb'i => 0], # av test pattern name
[qr'^(WM97|OF97|Joke.)'i => 0], # adjust names to match your AV scanner
[qr/.*/ => 1], # true for everything else
));
@keep_decoded_original_maps = (new_RE(
# qr'^MAIL$', # retain full original message for virus checking (can be slow)
qr'^MAIL-UNDECIPHERABLE$', # recheck full mail if it contains undecipherables
qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i,
));
# for $banned_namepath_re, a new-style of banned table, see amavisd.conf-sample
$banned_filename_re = new_RE(
# qr'^UNDECIPHERABLE$', # is or contains any undecipherable components
# block certain double extensions anywhere in the base name
qr'.[^./]*.(exe|vbs|pif|scr|bat|cmd|com|dll).?$'i,
# qr'[{}]', # curly braces in names (serve as Class ID extensions - CLSID)
qr'^application/x-msdownload$'i, # block these MIME types
qr'^application/x-msdos-program$'i,
qr'^application/hta$'i,
# qr'^message/partial$'i, qr'^message/external-body$'i, # rfc2046 MIME types
# [ qr'^.(Z|gz|bz2)$' => 0 ], # allow any type in Unix-compressed
[ qr'^.(rpm|cpio|tar)$' => 0 ], # allow any type in Unix archives
# [ qr'^.(zip|rar|arc|arj|zoo)$'=> 0 ], # allow any type within such archives