Я хотел бы знать, как настроить amavisd-new для сканирования только спама на определенных клиентах (IP-адреса, CIDR или имена хостов) или, альтернативно, в домене электронной почты отправителя.
Я знаю, что это можно сделать с почтовым адресом получателя, но не о том, как это сделать с почтовым адресом отправителя. Это даже возможно сделать на IP-адресе получателя с помощью банков политики. Но мой подход должен заключаться в том, чтобы быть независимым от получателя и передавать только отправителю.
Я хочу сканировать только письма, исходящие от Yahoo, Google, Hotmail и других крупных отправителей. Таким образом, легче настроить, каких отправителей следует наблюдать, чем тех, которых не следует.
Я знаю, что этого легче достичь на стороне MTA, но это не часть вопроса, потому что я уже предлагаю решение на стороне MTA. Я хочу сделать это на amavisd-new. И это не помогает знать, как помещать отправителей в белый список, поскольку это все равно означает, что почта проходит все сканирование, но затем получает высокую отрицательную оценку. Почту вообще не следует сканировать, если только ее не отправят крупные игроки.
Итак, какие параметры в amavisd-new являются правильными, чтобы включить сканирование для определенных отправителей и только для них?
Белый список Amavisd для всех, кроме определенного домена
Вам нужен whitelist_sender_map (Вот) с использованием регулярного выражения (Вот)
Добавить в белый список все, кроме Domain.X
@whitelist_sender_maps = ( new_RE( qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$))'i ));
Добавить в белый список все, кроме домена и субдомена X
@whitelist_sender_maps = ( new_RE( qr'[@.](?!(gmail\.com$|hotmail\.com$|aol\.com$))'i ));
Изменение
Например, добавление msn.com в исключение из белого списка
@whitelist_sender_maps = ( new_RE( qr'[@.](?!(gmail\.com$|hotmail\.com$|aol\.com$|msn\.com$))'i ));
Не нарушайте это правило на несколько правил, это не то, чего вы хотите
Нарушение правил в 2 или более строках внесет ВСЕ В БЕЛЫЙ СПИСОК !!
(Если возможно, я выделю этот раздел красным)
Проще говоря, белый список - это последовательная проверка, по одной строке / правилу за раз.
Давайте посмотрим на следующие НЕПРАВИЛЬНО пример
# DO NOT COPY THIS @whitelist_sender_maps = ( new_RE( qr'@(?!(gmail\.com$|hotmail\.com$))'i, qr'@(?!(aol\.com$|msn\.com$))'i )); # DO NOT COPY THIS
В итоге вы заносите в белый список всех отправителей !!
Программа тестирования Perl
#!/usr/bin/perl use strict; # Reject Domain & Sub-Domain #my $REGinfo='==Reject Domain & Sub-Domain==' #my $REG=qr'[@.](?!(gmail\.com$|hotmail\.com$|aol\.com$))'i; # Exact domain only my $REGinfo='==Exact Domain Only=='; my $REG=qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$))'i; print $REGinfo."\n"; print '$REG='.$REG."\n\n"; my @strTest = ( 'test@hotmail.com', 'test@gmail.com', 'test@aol.com', 'test@msn.com', 'test@yahoo.com', 'test@yahoo.aol.com', 'aol.com@somethingelse.com' ); for my $i (0 .. $#strTest){ if ($strTest[$i] =~ $REG) { print ("Pass $strTest[$i]\n"); } else { print ("Fail $strTest[$i]\n"); } }