รายการที่อนุญาตทั้งหมดยกเว้นบางโดเมน
สิ่งที่คุณต้องการคือ whitelist_sender_map ( ที่นี่ ) พร้อม regar lookaround ( ที่นี่ )
รายการที่อนุญาตทั้งหมดยกเว้น 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 บรรทัดหรือมากกว่านั้นจะเป็น WHITELIST ทุกอย่าง !!
(ฉันจะใส่หัวข้อนี้เป็นสีแดงถ้าเป็นไปได้)
กล่าวง่ายๆคือบัญชีขาวคือการตรวจสอบตามลำดับทีละบรรทัด / กฎ
ลองดูตัวอย่างที่ผิดพลาดต่อไปนี้
# อย่าคัดลอกสิ่งนี้
@whitelist_sender_maps = (new_RE (
qr'@(?!(gmail\.com$|hotmail\.com$))'i,
qr'@(?!(aol\.com$|msn\.com$))'i
));
# อย่าคัดลอกสิ่งนี้
- ทุกอย่างจาก msn.com จะผ่านเพราะบรรทัดที่ 1 ส่งคืนTRUEและเครื่องหมายหยุด
- อะไรจาก gamil.com จะผ่านเพราะหลังจากล้มเหลวในบรรทัดที่ 1 ย้าย amavisd ไปยังบรรทัดที่ 2 ซึ่งจะกลับTRUE
- สิ่งที่เกี่ยวกับโดเมนไม่อยู่ในรายการ? พวกเขาจะผ่าน นี่คือความตั้งใจของกฎ!
คุณจบรายการที่อนุญาตทั้งหมดผู้ส่ง !!
โปรแกรมการทดสอบ Perl
#! / usr / bin / Perl
ใช้อย่างเข้มงวด
# ปฏิเสธโดเมนและโดเมนย่อย
#my $ REGinfo = '== ปฏิเสธโดเมน & โดเมนย่อย =='
#my $ REG = qr '[@.] (?! (gmail \ .com $ | hotmail \ .com $ | aol \ .com $))' i;
# โดเมนที่แน่นอนเท่านั้น
$ REGinfo = '== โดเมนที่แน่นอนเท่านั้น ==';
$REG=qr'@(?!(gmail\.com$.shotmail\.com$://aol\.com$)))'i ของฉัน
พิมพ์ $ REGinfo "\ n";
พิมพ์ '$ 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'
);
สำหรับ $ i ของฉัน (0 .. $ # strTest) {
if ($ strTest [$ i] = ~ $ REG) {
พิมพ์ ("ผ่าน $ strTest [$ i] \ n");
}
อื่น {
พิมพ์ ("Fail $ strTest [$ i] \ n");
}
}