AmavisdConfig
Материал из OpenWiki
Содержание
Amavisd-new
amavisd.conf
# Для запрещения проверки на вирусы или спам расскомментируйте нужную строку. # @bypass_virus_checks_maps = (1); # uncomment to DISABLE anti-virus code # @bypass_spam_checks_maps = (1); # uncomment to DISABLE anti-spam code # Число процессов висящих в памяти и обрабатывающих запросы. $max_servers = 15; # number of pre-forked children (2..15 is common) # После обработки скольки запросов перезапускать дочерний процесс. $max_requests = 20; # retire a child after that many accepts # Таймаут за который запрос должен успеть быть обработанным. $child_timeout = 5*60; # Пользователь и группа под которой будет выполняться amavisd. $daemon_user = 'vscan'; # (no default; customary: vscan or amavis) $daemon_group = 'vscan'; # (no default; customary: vscan or amavis) #-------------------------------- # Домен по умолчанию. $mydomain = 'test-domain.ru'; # a convenient default for other settings # Имя текущего хоста. $myhostname = 'relay.test-domain.ru'; # must be a fully-qualified domain name! #-------------------------------- # Путь к корневой директории chroot-окружения или рабочей директории amavisd. # Все параметры приведены для запуска внутри chroot. $MYHOME = '/usr/local/amavis'; # a convenient default for other settings $TEMPBASE = "$MYHOME/tmp"; # working directory, needs to be created manually $ENV{TMPDIR} = $TEMPBASE; # environment variable TMPDIR $daemon_chroot_dir = $MYHOME; # chroot directory or undef $db_home = "$MYHOME/db"; $helpers_home = "$MYHOME/var/run/amavisd"; # prefer $MYHOME clean and owned by root? $pid_file = "$MYHOME/var/run/amavisd/amavisd.pid"; $lock_file = "$MYHOME/var/run/amavisd/amavisd.lock"; # Если нужно сохранять отвергнутые письма в определенной директории. # $QUARANTINEDIR = "$MYHOME/var/virusmails"; #-------------------------------- # Список обслуживаемых локальных доменов, для отделения локальных пересылок. # @local_domains_maps = ( [[.$mydomain]] ); # .$mydomain - все поддомены домена $mydomain # Так как доменов у меня много, считаем что для все пересылки можно считать # локальными, разрешив при этом пометку писем со спамом. Реальные локальные # пересылки определяем по IP адресам, и не доабвляем к ним спам метки. # Если доменов несколько, лучше перечислить их. @local_domains_maps = ( [[.]] ); # У меня доменов несколько сотен, поэтому локальные пересылки определяем по # IP адресам. В master.cf в описании amavis транспорта обязатлельна строка # "-o lmtp_send_xforward_command=yes" @mynetworks = qw( 127.0.0.0/8 ::1 !192.168.0.0/16 !10.10.210.2); # Уровень говорливости логов. # 0: startup/exit/failure messages, viruses detected # 1: args passed from client, some more interesting messages # 2: virus scanner output, timing # 3: server, client # 4: decompose parts # 5: more debug details $log_level = 2; # Логи ведем через syslog. $DO_SYSLOG = 1; # log via syslogd (preferred) $SYSLOG_LEVEL = 'user.info'; # Разрешаем вставку указания пересылки через фильтр в Received: поле заголовка. $insert_received_line = 1; # behave like MTA: insert 'Received:' header # Меняем текст служебного заголовка. $X_HEADER_LINE = "antivirus-gw at $mydomain"; # Убираем использование модулей Amavis::DB, Amavis::DB::SNMP и # диблирование информационных хэшей на диске. Не сможем смотреть online # статистику, но работает так быстрее. $enable_db = 0; # enable use of BerkeleyDB/libdb (SNMP and nanny) $enable_global_cache = 0; # enable use of libdb-based cache if $enable_db=1 # На каком порту и IP принимаем запросы на проверку почты. # У меня почтовый сервер и система проверки на разных хостах, в обычных # ситуациях рекомендуется использовать только адрес 127.0.0.1. $inet_socket_port = 10024; # listen on this local TCP port(s) (see $protocol) $inet_socket_bind = '10.10.11.4'; # IP локального хоста # Кому разрешаем доступ к amavisd @inet_acl = qw( 127.0.0.1 ::1 10.10.11.4 10.10.11.30); # Куда переправляем проверенные письма и уведомления (10.10.11.30 - почтовый сервер). #$notify_method = 'smtp:[127.0.0.1]:10025'; $notify_method = 'smtp:[10.10.11.30]:10025'; $forward_method = $notify_method; # set to undef with milter! # После первого обнаружения вируса, не тратим ресурсы на проверку других вложений $first_infected_stops_scan = 1; # Защита от DoS атак, ограничения уровня вложенности, числа файлов и размера архивов. $MAXLEVELS = 10; $MAXFILES = 500; $MIN_EXPANSION_QUOTA = 100*1024; # bytes (default undef, not enforced) $MAX_EXPANSION_QUOTA = 300*1024*1024; # bytes (default undef, not enforced) # При обнаружении писем с вирусами, отправляем уведомление отправителю. # Только для вирусов не использующих поддельные адреса (см. правила ниже). # Для того чтобы молча убивать письма с вирусами, вместо D_BOUNCE напишите D_DISCARD. $final_virus_destiny = D_BOUNCE; # При блокировании средствами amavisd высылаем уведомление отправителю. $final_banned_destiny = D_BOUNCE; # Пропускаем письма со спамом (пометив их) и некорректно сформированные письма. $final_spam_destiny = D_PASS; $final_bad_header_destiny = D_PASS; #-------------------------------- # Вес для пометки SpamAssassin'ом писем как спам. $sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 5.0; # add 'spam detected' headers at that level $sa_kill_level_deflt = 5.0; # triggers spam evasive actions # Не проверяем на спам если письмо больше 100 Кб, чтобы не тратить зря ресурсы сервера. $sa_mail_body_size_limit = 100*1024; # don't waste time on SA if mail is larger # Разрешаем SpamAssassin'у проводить тесты с использованием сети. $sa_local_tests_only = 0; # 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') # Добавляем в Subject метку для писем со спамом. $sa_spam_subject_tag = '***SPAM*** '; #-------------------------------- # Не разрешаем помещение блока с вирусом в тело уведомления. $defang_virus = 0; # MIME-wrap passed infected mail $defang_banned = 1; # MIME-wrap passed mail containing banned name # От каких адресов отправлять уведомления. $mailfrom_notify_admin = "abuse\@$mydomain"; # notifications sender $mailfrom_notify_recip = "abuse\@$mydomain"; # notifications sender $mailfrom_notify_spamadmin = "abuse\@$mydomain"; # notifications sender $mailfrom_to_quarantine = undef; # null return path; uses original sender if undef $spam_quarantine_to = undef; # Кодировка которую нужно указывать в письмах-уведомлениях. $hdr_encoding = 'koi8-r'; $bdy_encoding = 'koi8-r'; $hdr_encoding_qb = 'Q'; # Пути к темплейтам уведомлений. $notify_sender_templ = read_text("$MYHOME/etc/notify/notify_sender.txt", 'koi8-r'); $notify_virus_sender_templ= read_text("$MYHOME/etc/notify/notify_virus_sender.txt", 'koi8-r'); # $notify_virus_admin_templ = read_text("$MYHOME/etc/notify/notify_virus_admin.txt", 'koi8-r'); $notify_virus_recips_templ= read_text("$MYHOME/etc/notify/notify_virus_recips.txt", 'koi8-r'); # $notify_spam_sender_templ = read_text("$MYHOME/etc/notify/notify_spam_sender.txt", 'koi8-r'); # $notify_spam_admin_templ = read_text("$MYHOME/etc/notify/notify_spam_admin.txt", 'koi8-r'); #-------------------------------- # Пути. $file = 'file'; # file(1) utility; use recent versions $gzip = 'gzip'; $bzip2 = 'bzip2'; $lzop = 'lzop'; # $rpm2cpio = ['rpm2cpio.pl','rpm2cpio']; $cabextract = 'cabextract'; $uncompress = ['uncompress', 'gzip -d', 'zcat']; $unfreeze = ['unfreeze', 'freeze -d', 'melt', 'fcat']; $arc = ['nomarch', 'arc']; $unarj = ['arj', 'unarj']; $unrar = ['rar', 'unrar']; $zoo = 'zoo'; $lha = 'lha'; $cpio = ['gcpio','cpio']; $ar = 'ar'; # $dspam = 'dspam'; #-------------------------------- # Список масок вирусов, которые подставляют нереальные адерса в поле отправителя. @viruses_that_fake_sender_maps = (new_RE( qr'nimda|hybris|klez|bugbear|yaha|braid|sobig|fizzer|palyh|peido|holar'i, qr'tanatos|lentin|bridex|mimail|trojan\.dropper|dumaru|parite|spaces'i, qr'dloader|galil|gibe|swen|netwatch|bics|sbrowse|sober|rox|val(hal)?la'i, qr'frethem|sircam|be?agle|tanx|mydoom|novarg|shimg|netsky|somefool|moodown'i, qr'@mm|@MM', # mass mailing viruses as labeled by f-prot and uvscan qr'Worm'i, # worms as labeled by ClamAV, Kaspersky, etc [qr'^(EICAR|Joke\.|Junk\.)'i => 0], [qr'^(WM97|OF97|W95/CIH-|JS/Fort)'i => 0], [qr/.*/ => 1], # true by default (remove or comment-out if undesired) )); # По каким маскам, проверяем антивирусом не только распакованный вариант, но # но и оригинальную версию до распаковки. @keep_decoded_original_maps = (new_RE( qr'^MAIL-UNDECIPHERABLE$', # recheck full mail if it contains undecipherables qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i, # qr'^Zip archive data', # don't trust Archive::Zip )); # Отвергаем прием писем с исполняемыми файлами во вложении $banned_filename_re = new_RE( # block certain double extensions anywhere in the base name qr'\.[^./]*\.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll)\.?$'i, qr'^application/x-msdownload$'i, # block these MIME types qr'^application/x-msdos-program$'i, qr'^application/hta$'i, [ 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|lha)$'=> 0 ], # allow any type within such archives qr'.\.(exe|vbs|pif|scr|bat|cmd|com|cpl)$'i, # banned extension - basic # qr'^\.(exe-ms)$', # banned file(1) types ); #-------------------------------- # Описание взаимодейсвия с антивирусным ПО. # Основной сканер. Используем обращение к демону clamd @av_scanners = ( # ### http://www.clamav.net/ ['ClamAV-clamd', \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"], qr/\bOK$/, qr/\bFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], # # NOTE: run clamd under the same user as amavisd; match the socket # # name (LocalSocket) in clamav.conf to the socket name in this entry # # When running chrooted one may prefer: ["CONTSCAN {}\n","$MYHOME/clamd"], ); # Запасные сканеры, если clamd окажется недоступным. @av_scanners_backup = ( # Вызов утититы clamscan. Пропишите путь к базе через опцию "-d". ### http://www.clamav.net/ - backs up clamd or Mail::ClamAV ['ClamAV-clamscan', 'clamscan', "--stdout -d /db_clamav --disable-summary -r --tempdir=$TEMPBASE {}", [0], [1], qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], # Если проверить на вирусы не удалось, пропускаем непроверенное письмо. # always succeeds (uncomment to consider mail clean if all other scanners fail) ['always-clean', sub {0}], ); # Подменяем некоторые настройки для отправителей из локальной сети. # Для локальных пользователей запрещаем проверку на спам и блокирование # средствами amavisd. $policy_bank{'MYNETS'} = { # mail originating from @mynetworks # spam_admin_maps => [[spamalert\@$mydomain]], # alert of internal spam bypass_spam_checks_maps => [1], # or: don't spam-check internal mail bypass_banned_checks_maps => [1], # don't banned-check internal mail }; # Пользователи которые хотят получать спам как есть, без пометки. @spam_lovers_maps = ( ['test1@test-domain.ru', 'man@test-domain.ru', 'new-test-domain.ru'], ); @spam_modifies_subj_maps = ( [qw( !test1@test-domain.ru !man@test-domain.ru !new-test-domain.ru . )] ); 1; # insure a defined return
Postfix
main.cf
content_filter=smtp-amavis:[10.10.11.4]:10024
master.cf
smtp-amavis unix - - y - 15 lmtp -o lmtp_data_done_timeout=1200 -o lmtp_send_xforward_command=yes -o disable_dns_lookups=yes 10.10.11.30:10025 inet n - y - - 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,10.10.11.4 -o strict_rfc821_envelopes=yes -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
Проверка
Сигнатура для проверки блокирования спама
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Сигнатура для проверки на вирусы
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*