Как настроить amavisd-new только для сканирования на определенных отправителях / серверах?

10

Я хотел бы знать, как настроить amavisd-new для сканирования на наличие спама только на определенных клиентах (IP-адресах, CIDR или именах хостов) или в качестве альтернативы почтовому домену отправителя.

Я знаю, что это можно сделать на почтовом адресе получателя, но не на том, как это сделать для почтового адреса отправителя. Это даже возможно сделать по IP-адресу получателя в банках. Но мой подход должен быть независимым от получателя и только ретранслировать на отправителя.

Чего я хочу добиться, так это сканировать почту только от Yahoo, Google, Hotmail и других крупных отправителей. Таким образом, легче настроить, каких отправителей следует наблюдать, а кого нет.

Я знал, что это легче достичь на стороне MTA, но это не является частью вопроса, потому что я уже иду решение на стороне MTA. Я хочу сделать это на amavisd-new. И это не помогает знать, как поместить отправителей в белый список, так как это все еще означает, что почта проходит через все сканирование, но затем получает высокий отрицательный балл. Почту не следует сканировать вообще, если только она не отправлена ​​крупными игроками.

Итак, какие параметры в amavisd-new подходят для сканирования определенных отправителей и только для них?

mailq
источник
Вы видели эти примеры ? Если так, что с ними не так?
the-wabbit
@ syneticon-dj Я их знаю. Это решение, которое у меня уже есть (четвертый абзац выше). Но они после фильтров очереди, и мне нужно, чтобы amavis работал как фильтр до очереди, и тогда это не работает. И это в обход конкретных отправителей; Я хочу, чтобы наоборот сканировал только определенных отправителей и обходил остальных.
mailq
Я не понимаю, почему это не сработало бы до очереди. Чтобы изменить логику сканирования только определенных отправителей и не сканировать что-либо еще, просто измените параметры конфигурации своих банков политики - установите переменные обхода _ * _ check_maps в качестве конфигурации по умолчанию и убедитесь, что карты пусты для вашего банка политик yahoo.com.
the-wabbit
Почему белый список не работает, чтобы не вызывать SpamAssassin? Из amavisd.conf-sample: «Если ВСЕ получатели сообщения попадают в белый или черный список отправителя, сканирование на спам (вызывающее SpamAssassin) обходится, что экономит время». «ВСЕ» получатели должны быть затронуты при использовании @whitelist_sender_maps, не так ли?
Себокоптер

Ответы:

1

Белый список 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 (
    дг '[@]. ((Gmail \ .com $ |?! Hotmail \ .com $ | AOL \ .com $)) я
));

модифицирующий

Например, добавление msn.com в исключение белого списка

@whitelist_sender_maps = (new_RE (
    дг '[@]. ((Gmail \ .com $ |?! Hotmail \ .com $ | AOL \ .com $ | MSN \ .com $)) я
));

Не нарушайте это правило в несколько правил, это не то, что вы хотите

Нарушение правил в 2 или более строк приведет к ВСЕМУ ВСЕМУ !!

(Я выделю этот раздел красным, если это возможно)

Проще говоря, белый список - это последовательная проверка, по одной строке / правилу за раз.

Давайте посмотрим на следующий неправильный пример

# НЕ КОПИРУЙТЕ ЭТО
@whitelist_sender_maps = (new_RE (
    qr'@(?!(gmail\.com$|hotmail\.com$))'i,
    qr'@(?!(aol\.com$|msn\.com$))'i
));
# НЕ КОПИРУЙТЕ ЭТО
  1. Все от msn.com пройдет, потому что 1-я строка возвращает TRUE , и проверка останавливается.
  2. Что-нибудь от gamil.com пройдет, потому что после неудачного завершения первой строки amavisd переместится на вторую строку, которая вернет TRUE .
  3. Что насчет домена, которого нет в списке? Они пройдут. Это намерение правила!

Вы заканчиваете занесением в белый список всех отправителей !!

Программа тестирования Perl

#! / USR / бен / Perl

использовать строгое;

# Отклонить домен и субдомен
#my $ REGinfo = '== Отклонить домен и субдомен =='
#my $ REG = qr '[@.] (?! (gmail \ .com $ | hotmail \ .com $ | aol \ .com $))' i;

# Точный домен только
my $ REGinfo = '== Только точный домен ==';
my $REG=qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$))'i;

print $ REGinfo. "\ n";
print '$ REG ='. $ REG. "\ n \ n";

мой @strTest = (
    'Test@hotmail.com',
    'Test@gmail.com',
    'Test@aol.com',
    'Test@msn.com',
    'Test@yahoo.com',
    'Test@yahoo.aol.com',
    'Aol.com@somethingelse.com'
);

для моего $ i (0 .. $ # strTest) {
    if ($ strTest [$ i] = ~ $ REG) {
        print ("Pass $ strTest [$ i] \ n");
    }
    еще {
        print ("Fail $ strTest [$ i] \ n");
    }
}
Джон Сиу
источник