4 Краткий отчет о практике (приложение 1). Строки с таким выделением
Скачать 0.62 Mb.
|
Установка amavisd-new, SpamAssassin и ClamAVДля установки amavisd-new, spamassassin и clamav, выполним следующую команду: sudo apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax Включим ClamAV и SpamAssassin отредактировав /etc/amavis/conf.d/15-content_filter_mode sudo nano /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); Отредактируем /etc/amavis/conf.d/50-user sudo nano /etc/amavis/conf.d/50-user Добавим посередке параметр $pax='pax'; и @lookup_sql_dsn = (['DBI:mysql:mail; host=127.0.0.1; port=3306', 'mail_admin' ,' $sql_select_policy = 'SELECT "Y" as local FROM domains WHERE CONCAT("@",domain) IN (%k)'; (нам нужно указать amavis, что виртуальные домены являются локальными. Иначе он не будет вставлять заголовки и проверять на спам, т.к. будет считать, что письма, посланные на виртуальные домены — исходящие) . Не забудьте подставить свой пароль пользователя mysql mail_admin. Откроем файл /etc/amavis/conf.d/20-debian_defaults sudo nano /etc/amavis/conf.d/20-debian_defaults Дальше — список параметров, которые используются у меня с кратким пояснением, зачем и почему. $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 $spam_check_negative_ttl = 30*60; $spam_check_positive_ttl = 30*60; Это позволяет держать небольшой кеш уже проверенных писем и не проверять точно такие же письма заново, если они уже есть в кеше. Проверка идет по сигнатуре, которую amavis генерирует сам. Полезно, когда, в частности, один и тот же спам валится на несколько адресов. ttl-параметры - это срок жизни сигнатуры в кеше (с положительным и отрицательным результатом проверки на спам). В моем случае, процент попадания в кеш порядка 8. $sa_spam_subject_tag = '***SPAM*** '; $sa_spam_report_header = 1; $sa_tag_level_deflt = undef; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 4.5; # add 'spam detected' headers at that level $sa_kill_level_deflt = 6.9; # triggers spam evasive actions $sa_dsn_cutoff_level = 6.9; # spam level beyond which a DSN is not sent $sa_quarantine_cutoff_level = 11.9; $sa_spam_subject_tag - добавление указанной строки в начало темы письма. Удобно для получателей. $sa_spam_report_header - добавление заголовков с подробным отчетом о результатах проверки. Учтите только, что эти заголовки будут вставлены только в письма, признанные спамом. Подробный отчет - это объяснения каждого сработавшего правила spamassassin, типа вот такого: X-Spam-Report: * 1.4 MSGID_MULTIPLE_AT Message-ID contains multiple '@' characters * 0.0 HTML_MESSAGE BODY: HTML included in message * 0.0 BAYES_50 BODY: Bayesian spam probability is 40 to 60% * [score: 0.5000] * 1.8 MIME_BASE64_TEXT RAW: Message text disguised using base64 encoding * 1.3 AWL AWL: From: address is in the auto white-list $sa_tag_level_deflt - добавлять заголовки с результатом проверки на спам в сообщения с указанной оценкой и выше. Здесь - всегда добавлять эти заголовки. Заголовки вот такие: Х-Spam-Flag: YES X-Spam-Score: 4.54 X-Spam-Level: X-Spam-Status: Yes, score=4.54 required=4.5 tests=[AWL=1.336, BAYES_50=0.001, HTML_MESSAGE=0.001, MIME_BASE64_TEXT=1.753, MSGID_MULTIPLE_AT=1.449] если опознан спам и X-Spam-Flag: NO X-Spam-Score: -0.708 X-Spam-Level: X-Spam-Status: No, score=-0.708 required=4.5 tests=[AWL=0.403, BAYES_05=-1.11, SPF_PASS=-0.001] если сообщение «чистое». Еще раз подчеркну, что в этом случае заголовка «X-Spam-Report:» не будет. Если нужен - нужно править сам amavis. $sa_tag2_level_deflt - уровень, начиная с которого сообщение признается спамом. $sa_kill_level_deflt - уровень, начиная с которого выполняется правило по обработке спама (описание ниже) $sa_dsn_cutoff_level - уровень, начиная с которого не отсылается сообщение о невозможности доставки. Очень советую его иметь равным $sa_kill_level_deflt, иначе Вас, скорее всего, внесут в какой-нибудь черный список. Особенно это любит делать, например, att.com $sa_quarantine_cutoff_level - уровень начиная с которого письмо не сохраняется в карантине (/var/lib/amavis/virusmails/…) $final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine) $final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA $final_spam_destiny = D_DISCARD; $final_bad_header_destiny = D_PASS; # False-positive prone (for spam) $virus_admin = "admin\@aaa.ru"; # due to D_DISCARD default Параметры задают правила обработки «нехороших» сообщений: $final_virus_destiny - просто игнорировать (сами письма сохраняются в карантине) $final_banned_destiny - письма с запрещенными вложениями по типу файлов: сообщить отправителю о невозможности доставки $final_spam_destiny - игнорировать (это и есть то самое правило обработки спама, о котором шла речи выше) $final_bad_header_destiny - некорректные заголовки писем пропускать. $virus_admin - адрес, куда доставлять сообщения о вирусах и отраженных письмах с запрещенными вложениями (postmaster), чтобы можно было проверить содержимое писем в карантине. О письмах со спамом, попавшим в карантин, сообщений не будет. Настройки, связанные с вирусами и запрещенными вложениями лучше оставить «по умолчанию». Конкретные уровни оценки выставьте сами (я использую именно такие, и они меня полностью удовлетворяют, по крайней мере, по прошествии довольно большого времени и накопленной bayes-овской базы и с регулярными обновлениями правил spamassassin). Недавно специально проверял - за три дня ложных срабатываний было 0 (менял D_DISCARD на D_PASS у $final_spam_destiny). Сделаем так, чтобы amavis не проверял исходящие письма на спам, а только входящие (на вирусы он будет проверять все письма). Вставим строки # add these for SASL SA bypass $policy_bank{'MYUSERS'} = { # mail from submission and smtps ports originating => 1, # Since amavisd-new 2.5.0 # declare that mail was submitted by our smtp client bypass_spam_checks_maps => [1], # don't spam-check this mail bypass_banned_checks_maps => [1], # don't banned-check this mail bypass_header_checks_maps => [1], # don't header-check this mail }; Отредактируйте файл /etc/amavis/conf.d/21-ubuntu_defaults sudo nano /etc/amavis/conf.d/21-ubuntu_defaults и закомментируйте строки #$final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE) #$final_banned_destiny = D_DISCARD; # (defaults to D_BOUNCE) #$final_spam_destiny = D_DISCARD; # (defaults to D_REJECT) #$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested #$virus_admin = undef; #$spam_admin = undef; Добавим пользователя clamav в группу amavis и перезапустим amavisd-new и ClamAV: sudo adduser clamav amavis sudo /etc/init.d/amavis restart sudo /etc/init.d/clamav-daemon restart sudo /etc/init.d/clamav-freshclam restart Укажем, чтобы postfix проверял почту через amavis sudo postconf -e 'content_filter = amavis:[127.0.0.1]:10024' sudo postconf -e 'receive_override_options = no_address_mappings' Отредактируем файл /etc/postfix/master.cf sudo nano /etc/postfix/master.cf и добавим в конец следующие строки amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes 127.0.0.1:10025 inet 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 -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_bind_address=127.0.0.1 Перезапустим postfix sudo /etc/init.d/postfix restart Для периодической очистки карантина вставим в cron sudo crontab -e 1 0 * * * find /var/lib/amavis/virusmails/* -mtime +60 | xargs rm &> /dev/null (ежедневная очистка всех файлов из карантина, старше 60 дней) |