среда, июля 05, 2006

Связка Postfix+Clamav+SpamAssassin+Amavisd

Рекомендую к прочтению также вот этот документ (Установка связки Postfix, MySQL, SpamAssassin, Maia в FreeBSD.), как более свежий :)

Сначала устанавливаем postfix+msql+courier-imap+cyrus-sasl 2 по статье
"Настройка postfix с возможностью шифрования и защиты от вирусов и спама"
http://www.opennet.ru/base/net/postfix_tls.txt.html

Ссылка по теме:
http://www.deepnet.ru/docs/source/postfix_pgsql.shtml

Clamav

/usr/ports/security/clamav (без милтера)
make install

добавить в rc.conf
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"

/usr/local/etc/clamd.conf

LogFile /var/log/clamav/clamd.log
LogFileMaxSize 2M
LogTime yes
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /var/tmp
DatabaseDirectory /var/db/clamav
LocalSocket /var/run/clamav/clamd
FixStaleSocket yes
MaxThreads 10
ReadTimeout 120
IdleTimeout 30
MaxDirectoryRecursion 15
FollowDirectorySymlinks yes
SelfCheck 1800
User vscan
AllowSupplementaryGroups yes
ScanPE
ScanOLE2
ScanMail
ScanHTML
ScanArchive
ArchiveMaxFileSize 15M
ArchiveMaxRecursion 10
ArchiveMaxFiles 1500
ArchiveMaxCompressionRatio 300

/usr/local/etc/freshclam.conf

DatabaseDirectory /var/db/clamav
UpdateLogFile /var/log/clamav/freshclam.log
PidFile /var/run/clamav/freshclam.pid
DatabaseOwner vscan
AllowSupplementaryGroups yes
DatabaseMirror database.clamav.net
Checks 48
#NotifyClamd

Создаем файл virus.com со следующим содержанием:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

# clamscan virus.com
РАБОТАТЬ НЕ БУДЕТ, нет пользователя vscan в cистеме



Ставим SpamAssassin
/usr/ports/mail/p5-Mail-SpamAssassin

#make

x AS_ROOT (потом исправим )
x SSL (в принипе тоже не использую)
x RAZOR
x SPF_QUERY
x TOOLS

#make install

редактируем /usr/local/etc/rc.d/sa-spamd.sh

command_args="-d -r ${pidfile}" исправляем на
command_args="-x -d -m 5 -r ${pidfile}"

Дока по теме где-то там
#perldoc Mail::SpamAssassin::Conf

добавляем в /etc/rc.conf
spamd_enable="YES"

# mkdir -p /var/spool/filter/spamassassin/
# chmod -R 777 /var/spool/filter

создаем файл
/usr/local/etc/mail/spamassassin/local.cf

##############################################
#
##############################################
lock_method flock
trusted_networks 192.168/16 127/8
trusted_networks 127.
whitelist_from *@google.com
##############################################
rewrite_header subject [Possible SPAM]:
required_hits 6.0
required_score 6.0
report_safe 2
use_bayes 1
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 0.1
bayes_auto_learn_threshold_spam 12.0
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
use_auto_whitelist 1

##############################################
auto_whitelist_path /var/spool/filter/spamassassin/auto_whitelist
bayes_path /var/spool/filter/spamassassin/bayes
auto_whitelist_file_mode 0770
bayes_file_mode 0770

##############################################
ok_languages ru en
ok_locales ru en
report_charset windows-1251

##############################################
score FROM_ILLEGAL_CHARS 1.5
score HEAD_ILLEGAL_CHARS 1.5
score SUBJ_ILLEGAL_CHARS 1.5
score FORGED_IMS_TAGS 0.5
#
##############################################

score BAYES_00 -9.8
score BAYES_20 -2.856
score BAYES_40 -0.002
score BAYES_60 0.002
score BAYES_80 3.314
score BAYES_99 10.8

Команда spamassassin -D --lint
выводит текущую конфигурацию (смотрим косяки)

Обучение спамфильтра
sa-learn --spam --dir /home/user/spam
sa-learn --ham --dir /home/user/ham

Хочу еще раз заметить, что работать не должно,
нет юзера vscan.

Ставим Amavisd-new
/usr/ports/security/amavisd-new

добавить в /etc/rc.conf
amavisd_enable="YES"
amavis_milter_enable="YES"
Проверить наличие файлов amavisd.sh и amavis-milter.sh
в папке /usr/local/etc/rc.d

Добавим в файл /usr/local/etc/rc.d/amavisd.sh строку
amavisd_flag="-u vscan"

Правим /usr/local/etc/amavisd.conf
исправляем $mydomain
$virus_admin
раскомментируем и правим
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_BOUNCE;
$final_spam_destiny = D_DISCARD;
$final_bad_header_destiny = D_DISCARD;
раскомментируем секцию ClamAV

Обратить внимание на banned extenion.
(иначе не все вложения будут приниматься )

Проверим /etc/master.passwd пользователь vscan
/etc/group группа vscan
Есть? Вот и чудненько.

/var/spool/filter/spamassassin/
/var/spool/filter
/var/db/clamav
/var/log/clamav
/var/run/clamav/ хозяин vscan

Добавим в файл /usr/local/etc/postfix/master.cf
(ВНИМАНИЕ!!! вначале строк с -o символ табуляции)

smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes

127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
# -o relay_recipient_map=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
# -o smtpd_recipient_restrictions=permit_mynetworks,reject_maps_rbl,reject
-o mynetwork=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_errror_limit=1000

Добавим в файл /usr/local/etc/postfix/main.cf

content_filter = smtp-amavis:[127.0.0.1]:10024

12 комментариев:

Mike комментирует...

Подскажи, а где упоминания о spamd в master.cf? Или он как подругому работает с постфиксом?

Айзятуллен Рамиль комментирует...

/usr/ports/security/amavisd-new
работает с постфиксом. В статье все написано.

Mike комментирует...

Благодарю что отклюкнулись.

Да работает, но в первых он относит к спаму практически все сообщения, т.е. если написать на ящих находящийся на твоем же домене (не на собственный а на другой) и просто указать в загаловке TEST ну и в теле тоже, но напишет что это спам. И еще интересный один момент, отключаем спамассасин из rc.d - фильтр спама по прежнему работает. Откуда и возникает вопрос, как работает спамассасин с постфиксом, посредством amavis-new или амавис сам является фильтром спама?

Так же еще есть небольшой вопрос, поставил лимит на прием в main.cf постфикса 15м (message_size_limit = 15728640), лимит остался 5 мегов, квоты отключены.

Заранее благодарен.

Айзятуллен Рамиль комментирует...

-Спамассасин с постфиксом работает посредством amavis-new.
-Вообще в настройках статьи письма со спамом не доходят до получателя, отсюда вопрос где вы прочитали, что ваше письмо спам?
-После изменения в файле main.cf сделайте postfix reload

Mike комментирует...

Прочел что письмо спам естесственно в логах maillog, письма не доходят, маркирются как SPAM практически все (может где стоит слишвом жесткая палитика фильтра?).

В конфиге амавис (т.е. amavisd.conf) не нужно вносить никаких дополнительных настроек за исключением описанных в статье?

Возможно спамассасин неообходимо учить (sa-learn), ежели да, то возможно есть обученный вариант программы.

Айзятуллен Рамиль комментирует...

Пришлите на мыло кусок maillog

Анонимный комментирует...

Поскажите что за ошибка?
postfix/smtpd[4226]: warning: valid_hostname: invalid character 237(decimal): ???????_????

Айзятуллен Рамиль комментирует...

Конечно подскажу

Анонимный комментирует...

Очепятка
s/$final_banned_destiny = D_BOUNSE;/$final_banned_destiny = D_BOUNCE;/

Айзятуллен Рамиль комментирует...

Спасибо, исправил.

vgasys комментирует...

Почему письма из yahoo.com,gmail.com,mail.ru,yandex.ru
определяется как spam и не доходит до пользователя

Рамиль комментирует...

не могу знать, добавь в белый список