ข้อกำหนดของคุณค่อนข้างไม่ชัดเจน Procmail สามารถจับคู่กับสตริงใดก็ได้ แต่คุณต้องการมองหาสตริงที่ใดก็ได้ในข้อความจริงๆ หรือไม่ และคุณตั้งใจที่จะเพิกเฉยต่อข้อความโดยไม่ โดเมน.คอม
ในพวกเขาเพื่อวัตถุประสงค์ของกฎนี้?
:0 HB
* ! ()\<bob@domain\.com\>
* @โดเมน\.com\>
{
:0fhw
* ^หัวเรื่อง:\/.+
| formail -I"เรื่อง: [สแปม]$MATCH"
}
เดอะ \<
และ \>
ขอบเขตของคำป้องกันการจับคู่กับสตริงย่อยเช่น หลุมฝังศพ
หรือ subdomain.combent.org
และวงเล็บว่างนั้นเป็นแฮ็กเพราะ Procmail นั้นแปลกเกี่ยวกับ regexes ที่ขึ้นต้นด้วยเครื่องหมายแบ็กสแลช
หากคุณหมายความว่าคุณต้องการดูเฉพาะส่วนหัว ให้ปล่อย HB
จากบรรทัดทวิภาคแรก (คุณสามารถเว้น ชม
แต่นั่นเป็นค่าเริ่มต้นหากคุณไม่ใส่ค่าสถานะใดๆ) หากคุณต้องการจับคู่ส่วนหัวที่เฉพาะเจาะจง ให้สะกดคำนั้น หากคุณต้องการตรวจสอบผู้รับโดยเฉพาะ ^ถึง_
มาโครให้คุณทำได้ในส่วนหัวที่แตกต่างกัน (ถึง:
, สำเนา:
ฯลฯ) ได้อย่างง่ายดาย
:0fhw
* ! ^TO_bob@domain\.com\>
* ^TO_[^<>@ ]+@โดเมน\.com\>
* ^หัวเรื่อง:\/.+
| formail -I"เรื่อง: [สแปม]$MATCH"
เพราะเราทำตก HB
แฟล็ก เราสามารถรวมสิ่งที่เคยเป็นสองสูตรก่อนหน้านี้กับแฟล็กที่ต่างกันได้ ที่สอง ^ถึง_
ตรวจสอบที่อยู่ใด ๆ รวมถึง บ๊อบ
ซึ่งถูกแยกออกจากเงื่อนไขเมื่อถูกปฏิเสธก่อนหน้านี้แล้ว
เรื่องนี้ยังมีบางมุมที่อาจต้องศึกษาเพิ่มเติม หากคุณสามารถแก้ไขคำถามของคุณเพื่อชี้แจงได้ บางทีฉันสามารถอัปเดตสิ่งนี้ให้ครอบคลุมมากกว่าพื้นฐาน
SMTP ไม่จำเป็นต้องสะกดชื่อผู้รับในส่วนหัว กรณีคลาสสิกคือ สำเนาลับ:
ซึ่งเป็นกลไกหลักที่ใช้โดยรายชื่อผู้รับจดหมายจำนวนมาก บางที MTA ของคุณอาจสะกดผู้รับใน ส่งถึง:
แต่พูดให้ถูกคือ ตัวกรองประเภทนี้มีการใช้งานที่ดีกว่าใน MTA แทน