(ОС: Debian 5.0)
apt-get install amavisd-new spamassassin clamav
Настройка SpamAssassin
Параметры запуска (/etc/default/spamassassin):
OPTIONS="--max-children 5 --sql-config --username=spamfilter --nouser-config -D"
Ключ -D включает дебаг, соответственно после тестирования его следует убрать
OPTIONS="--max-children 5 --sql-config --username=spamfilter --nouser-config -D"
Ключ -D включает дебаг, соответственно после тестирования его следует убрать
Создаем MySQL базу (в примере mailfilter) для хранения данных AWL, Bayes:
mysql -u mailfilter -p mailfilter < /usr/share/doc/spamassassin/awl_mysql.sql mysql -u mailfilter -p mailfilter < /usr/share/doc/spamassassin/bayes_mysql.sql
Вот этот дамп не заливаем, так как Amavisd не умеет работать с дефолтной sql базой SpamAssassin и у него своя sql база для хранения пользовательских настроек
/usr/share/doc/spamassassin/userpref_mysql.sql
/usr/share/doc/spamassassin/userpref_mysql.sql
Добавляем в конфиг spamassassin настройки для доступа к его MySQL базе:
user_awl_dsn DBI:mysql:mailfilter:localhost user_awl_sql_username mailfilter user_awl_sql_password secret user_awl_sql_table awl auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList bayes_sql_dsn DBI:mysql:mailfilter:localhost bayes_sql_username mailfilter bayes_sql_password secret bayes_store_module Mail::SpamAssassin::BayesStore::SQL
Проверяем корректность конфига:
spamassassin --lint
Настройка Postfix
Добавить в /etc/postfix/master.cf:
amavisfeed unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o smtp_tls_note_starttls_offer=no 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o smtpd_restriction_classes= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters -o local_header_rewrite_clients= -o smtpd_milters= -o local_recipient_maps= -o relay_recipient_maps=
Добавить в /etc/postfix/main.cf:
content_filter=amavisfeed:[127.0.0.1]:10024
Настройка Amavisd-new
Раскомментировать в /etc/amavis/conf.d/15-content_filter_mode:
@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Внести в группу:
gpasswd -a clamav amavis
Разбор конфига Amavisd
Внести в /etc/amavis/conf.d/20-debian_defaults
$mydomain = 'local.lan';
(где local.lan Ваш основной почтовый домен)
Поправить в /etc/amavis/conf.d/05-node_id:
$myhostname = 'cyrus.local.lan';
(где cyrus.local.lan имя вашего хоста)
Дебаг, детализация от 0 до 5:
$log_level = 5;
Порог срабатывания, превышение которого или равнение на него добавляет к письму заголовки со служебной информацией по работе спам фильтра:
$sa_tag_level_deflt = -200.0;
Первый параметр устанавливает уровень достигнув которого письмо помечается как спам,
а второй параметр устанавливает уровень когда письмо считается спамом и срабатывают reject/bounce/discard/pass, quarantine, notify
Обычно выставляют одинаковый уровень.
а второй параметр устанавливает уровень когда письмо считается спамом и срабатывают reject/bounce/discard/pass, quarantine, notify
Обычно выставляют одинаковый уровень.
$sa_tag2_level_deflt = 6.31; $sa_kill_level_deflt = 6.31;
Действия предпринимаемые на различные события:
$final_virus_destiny = D_DISCARD; $final_banned_destiny = D_BOUNCE; $final_spam_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS;
Заголовок письма посылаемого в качестве оповещения на различные события (оповещения отправителя о вирусе в его письме или оповещения админа):
$hdrfrom_notify_sender = 'Content-filter at $myhostname';
Адрес пользователя которому отправлять оповещения:
$virus_admin = "sayan.tsyrenov\@$mydomain";
(меняем на свой адрес)
Создать MySQL базу для карантина и настроить на нее amavisd,
Дамп для базы брать из /usr/share/doc/amavisd-new/README.sql-mysql.gz
Дамп для базы брать из /usr/share/doc/amavisd-new/README.sql-mysql.gz
@storage_sql_dsn = ( ['DBI:mysql:mailzu:localhost', 'mailzu', 'secret'] ); $banned_files_quarantine_method = 'sql:'; $spam_quarantine_method = 'sql:';
Добавить в основной конфиг amavis (здесь добавляется порт на который c MailZu будет отсылаться "освобожденный" спам)
$inet_socket_port = [10024,9998]; $interface_policy{'9998'} = 'AM.PDP'; $inet_socket_bind = undef; $policy_bank{'AM.PDP'} = { protocol => 'AM.PDP', inet_acl => [qw( 127.0.0.1 [::1] 172.16.0.21 )], };
Настройка MailZu
Скопировать и настроить конфиг:
cyrus:/var/www/mailzu/config# cp config.php.sample config.php $conf['amavisd']['spam_release_port'] = '9998'; $conf['db']['binquar'] = true; $conf['auth']['s_admins'] = array ('sayan.tsyrenov@local.lan', 'tsyrenov.sayan@local.lan');
Для поддержки адреса электронной почты в качестве логина при аутентификации по IMAP, выставить пустое значение
$conf['auth']['serverType'] = 'imap'; $conf['auth']['imap_domain_name'] = '';
Создать файл логов:
touch /var/log/mailzu.log
chown www-data:www-data mailzu.log
Скрипт удаления старых данных из MySQL базы (изменить в скрипте месторасположение perl и выставить параметры
доступа к базе данных, скрипт запускается с ключом --database <типа базы>):
доступа к базе данных, скрипт запускается с ключом --database <типа базы>):
/var/www/mailzu/scripts/mz_db_clean.pl
Подправить кодировку, используемую для отображения HTML
/var/www/mailzu/lang/en_US.lang.php
$charset = 'UTF-8';
Внести поправку в /var/www/mailzu/lib/PHPMailer.class.php
Комментариев нет:
Отправить комментарий