Bagaimana cara mengkonfigurasi amavisd-baru untuk hanya memindai pengirim / server tertentu?

10

Saya ingin tahu cara mengonfigurasi amavisd-baru untuk hanya memindai Spam pada klien tertentu (IP, CIDR atau nama host) atau domain email pengirim.

Saya tahu bahwa itu mungkin dilakukan pada alamat email penerima tetapi tidak pada bagaimana melakukannya untuk alamat email pengirim. Bahkan dimungkinkan untuk melakukannya pada alamat IP penerima dengan bank kebijakan. Tetapi pendekatan saya harus independen dari penerima dan hanya menyampaikan pada pengirim.

Yang ingin saya capai adalah hanya memindai surat yang berasal dari Yahoo, Google, Hotmail dan pengirim besar lainnya. Jadi lebih mudah untuk mengkonfigurasi pengirim mana yang harus diamati daripada yang tidak.

Saya tahu bahwa lebih mudah untuk mencapai di sisi MTA, tetapi itu bukan bagian dari pertanyaan karena saya sudah mencari solusi di sisi MTA. Saya ingin melakukannya di amavisd-new. Dan tidak membantu untuk mengetahui cara mengirim pengirim ke daftar putih, karena ini masih berarti bahwa surat melewati semua pemindaian tetapi kemudian mendapat skor negatif yang tinggi. Surat tidak boleh dipindai sama sekali kecuali dikirim oleh pemain besar.

Jadi parameter mana di amavisd-new yang tepat untuk mengaktifkan pemindaian pengirim tertentu dan hanya untuk ini?

mailq
sumber
Pernahkah Anda melihat contoh-contoh ini ? Jika demikian, apa yang salah dengan mereka?
the-wabbit
@ syneticon-dj saya kenal mereka. Ini adalah solusi yang sudah saya miliki (paragraf keempat di atas). Tetapi mereka setelah filter antrian dan saya perlu amavis untuk menjalankan sebagai sebelum filter antrian dan kemudian ini tidak berfungsi. Dan ini untuk memotong pengirim tertentu; Saya ingin yang sebaliknya hanya memindai pengirim tertentu dan mem-bypass sisanya.
mailq
Saya tidak bisa melihat mengapa itu tidak berfungsi sebelum antrian. Dan membalik logika untuk memindai hanya pengirim tertentu dan tidak memindai apa pun hanya membalik pengaturan konfigurasi untuk bank kebijakan Anda - mengatur bypass variabel _ * _ checks_maps sebagai konfigurasi default Anda dan pastikan peta kosong untuk bank kebijakan yahoo.com Anda.
the-wabbit
Mengapa daftar putih tidak berfungsi karena tidak menelepon SpamAssassin? Dari amavisd.conf-sample: "Jika SEMUA penerima pesan baik putih atau hitam pengirim, pemindaian spam (memanggil SpamAssassin) dilewati, menghemat waktu." Penerima "ALL" harus terpengaruh saat menggunakan @whitelist_sender_maps bukan?
sebokopter

Jawaban:

1

Daftar putih Amavisd semua kecuali domain tertentu

Yang Anda butuhkan adalah whitelist_sender_map (di sini ) dengan regex lookaround (di sini )

Daftar putih semua kecuali Domain.X

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

Daftar putih semua kecuali Domain Dan Sub-Domain X

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

Memodifikasi

Misalnya, menambahkan msn.com ke pengecualian daftar putih

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

JANGAN BREAK YANG MENGATUR KE ATURAN BERGANDA, INI BUKAN APA YANG ANDA INGINKAN

Melanggar aturan dalam 2 baris atau lebih akan WHITELIST SEMUANYA !!

(Saya akan menempatkan bagian ini dalam warna merah jika memungkinkan)

Dalam istilah sederhana, daftar putih adalah cek sekuensial, satu baris / aturan pada satu waktu.

Mari kita lihat contoh SALAH berikut ini

# JANGAN SALINAN INI
@whitelist_sender_maps = (new_RE (
    qr'@(?!(gmail\.com$| hotmail.com.com))'i,
    qr'@(?!(aol\.com$|msn\.com$))'i
));
# JANGAN SALINAN INI
  1. Apa pun dari msn.com akan berlalu, karena baris 1 mengembalikan BENAR , dan cek berhenti.
  2. Apa pun dari gamil.com akan berlalu, karena setelah gagal pada baris pertama, amavisd pindah ke baris kedua, yang akan mengembalikan TRUE .
  3. Bagaimana dengan domain yang tidak ada dalam daftar? Mereka akan lewat. Ini adalah niat dari peraturan!

Anda mengakhiri daftar putih semua pengirim !!

Program Pengujian Perl

#! / usr / bin / perl

gunakan yang ketat;

# Tolak Domain & Sub-Domain
#my $ REGinfo = '== Tolak Domain & Sub-Domain =='
#my $ REG = qr '[@.] (?! (gmail \ .com $ | hotmail \ .com $ | aol \ .com $))' i;

# Hanya domain yang tepat
$ REGinfo saya = '== Hanya Domain Yang Tepat ==';
$REG=qr'@(?!(gmail\.com$| hotmail saya.com |||

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

@strTest saya = (
    '[email protected]',
    '[email protected]',
    '[email protected]',
    '[email protected]',
    '[email protected]',
    '[email protected]',
    '[email protected]'
);

untuk $ i saya (0 .. $ # strTest) {
    if ($ strTest [$ i] = ~ $ REG) {
        print ("Lewati $ strTest [$ i] \ n");
    }
    lain {
        print ("Fail $ strTest [$ i] \ n");
    }
}
John Siu
sumber