Jak skonfigurować amavisd-new do skanowania tylko na określonych nadawcach / serwerach?

10

Chciałbym wiedzieć, jak skonfigurować amavisd-new, aby skanował w poszukiwaniu spamu tylko na określonych klientach (adresy IP, CIDR lub nazwy hostów) lub alternatywnie domenę e-mail nadawcy.

Wiem, że można to zrobić na adres e-mail odbiorcy, ale nie na temat tego, jak to zrobić na adres e-mail nadawcy. Można to nawet zrobić na adresie IP odbiorcy w bankach polis. Ale moje podejście powinno być niezależne od odbiorcy i polegać wyłącznie na nadawcy.

Chcę skanować tylko wiadomości e-mail pochodzące od Yahoo, Google, Hotmail i innych dużych nadawców. Łatwiej jest więc skonfigurować, których nadawców należy obserwować, niż tych, którzy nie powinni.

Wiedziałem, że łatwiej jest to osiągnąć po stronie MTA, ale nie jest to częścią pytania, ponieważ już wybrałem rozwiązanie po stronie MTA. Chcę to zrobić na amavisd-new. I nie pomaga wiedzieć, jak umieścić nadawców na białej liście, ponieważ nadal oznacza to, że poczta przechodzi całe skanowanie, ale otrzymuje wysoki wynik ujemny. Poczta nie powinna być w ogóle skanowana, chyba że zostanie wysłana przez dużych graczy.

Więc które parametry w amavisd-new są odpowiednie, aby umożliwić skanowanie dla określonych nadawców i tylko dla nich?

mailq
źródło
Widziałeś te przykłady ? Jeśli tak, co jest z nimi nie tak?
the-wabbit
@ syneticon-dj Znam ich. To jest rozwiązanie, które już mam (czwarty akapit powyżej). Ale są po filtrach kolejek i potrzebuję amavis, aby działał jako filtr przed kolejką, a wtedy to nie działa. Ma to na celu ominięcie poszczególnych nadawców; Chcę, aby przeciwieństwo skanowało tylko poszczególnych nadawców i pomijało resztę.
mailq
Nie rozumiem, dlaczego to nie zadziała przed kolejką. A odwrócenie logiki, aby skanować tylko określonych nadawców i nie skanować niczego innego, to po prostu odwrócenie ustawień konfiguracji dla twoich banków polis - skonfiguruj pomijanie zmiennych * * _ sprawdza_mapy jako domyślną konfigurację i upewnij się, że mapy są puste dla banku polis yahoo.com.
the-wabbit
Dlaczego biała lista nie działa, jeśli nie wywołujesz SpamAssassin? From amavisd.conf-sample: „Jeśli WSZYSCY odbiorcy wiadomości znajdują się na białej lub czarnej liście nadawcy, skanowanie spamu (wywoływanie SpamAssassin) jest pomijane, co pozwala zaoszczędzić czas”. Czy korzystanie z @whitelist_sender_maps powinno mieć wpływ na „WSZYSTKICH” odbiorców, prawda?
sebokopter

Odpowiedzi:

1

Biała lista Amavisd wszystkie oprócz niektórych domen

To czego potrzebujesz to whitelist_sender_map ( tutaj ) z regex lookaround ( tutaj )

Umieść na białej liście wszystkie oprócz Domain.X

@whitelist_sender_maps = (new_RE (
    qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$))'i
));

Umieść na białej liście wszystkie oprócz domeny i subdomeny X

@whitelist_sender_maps = (new_RE (
    qr „[@.] (?! (gmail \ .com $ | hotmail \ .com $ | aol \ .com $)) i
));

Modyfikacja

Na przykład dodanie msn.com do wyjątku od białej listy

@whitelist_sender_maps = (new_RE (
    qr „[@.] (?! (gmail \ .com $ | hotmail \ .com $ | aol \ .com $ | msn \ .com $)) i
));

NIE PRZERWAJ, ŻE ZASADY WIELU ZASAD, NIE JEST TO, CO CHCESZ

Złamanie zasad w 2 lub więcej liniach sprawi, że WSZYSTKO WSZYSTKO !!

(Jeśli to możliwe, umieszczę tę sekcję na czerwono)

Mówiąc prościej, biała lista jest sekwencyjnym czekiem, jedna linia / reguła na raz.

Spójrzmy na następujący NIEPRAWIDŁOWY przykład

# NIE KOPIUJ TEGO
@whitelist_sender_maps = (new_RE (
    qr'@(?!(gmail\.com$|hotmail\.com$))'i,
    qr'@(?!(aol\.com$|msn\.com$))'i
));
# NIE KOPIUJ TEGO
  1. Wszystko z msn.com przejdzie, ponieważ pierwsza linia zwraca PRAWDA , a czek zatrzyma się.
  2. Wszystko z gamil.com przejdzie, ponieważ po nieudanej pierwszej linii, amavisd przechodzi do drugiej linii, która zwróci PRAWDA .
  3. Co z domeną, której nie ma na liście? Oni przejdą. Taka jest intencja reguły!

Skończysz na białej liście wszystkich nadawców !!

Program testujący Perla

#! / usr / bin / perl

stosować ścisłe;

# Odrzuć domenę i subdomenę
#my $ REGinfo = '== Odrzuć domenę i subdomenę =='
#my $ REG = qr '[@.] (?! (gmail \ .com $ | hotmail \ .com $ | aol \ .com $))' i;

# Tylko dokładna domena
my $ REGinfo = '== Tylko dokładna domena ==';
my $REG=qr'@(?!(gmail\.com$|hotmail\.com$|aol\.com$)))'i;

drukuj $ REGinfo. "\ n";
wypisz '$ REG ='. $ REG. "\ n \ n";

my @strTest = (
    „[email protected]”,
    „[email protected]”,
    „[email protected]”,
    „[email protected]”,
    „[email protected]”,
    „[email protected]”,
    „[email protected]”
);

dla mojego $ i (0 .. $ # strTest) {
    if ($ strTest [$ i] = ~ $ REG) {
        print („Pass $ strTest [$ i] \ n”);
    }
    jeszcze {
        print („Fail $ strTest [$ i] \ n”);
    }
}
John Siu
źródło