จะบล็อกสิ่งที่แนบมากับจดหมายขาเข้าโดยใช้ Postfix ได้อย่างไร


9

ฉันมีเมลเซิร์ฟเวอร์ (CentOS 6.5) ที่ใช้งาน Postfix และ Dovecot

Postfix กำลังรับฟังพอร์ต 25 สำหรับเมลขาเข้าและ 587 สำหรับเมลขาออก

ปัญหาคืออีเมลขาออกที่มีไฟล์แนบ pdf ถูกบล็อกในกรณีที่ฉันต้องการเฉพาะอีเมลขาเข้าที่มีไฟล์แนบ PDF ถูกบล็อก

ฉันมีบรรทัดการกำหนดค่านี้ใน main.cf

 mime_header_checks = regexp:/etc/postfix/blocked_attachments

ไฟล์ที่ถูกปิดกั้นประกอบด้วย:

/name=[^>]*\.(pdf|zip)/ REJECT

ดังนั้นจดหมายขาเข้าที่มีไฟล์แนบ pdf ถูกบล็อกอย่างถูกต้อง แต่เมื่อฉันเขียนอีเมลด้วย PDF ที่ถูกบล็อกด้วยเมื่อฉันลองและส่ง

ฉันจะบอก postfix ได้อย่างไรว่าฉันต้องการกรองสิ่งที่แนบมาเท่านั้น หรือฉันได้พลาดอะไรบางอย่าง?

คำตอบ:


7

ฉันจะเขียนคำถามของคุณใหม่ให้เป็น:

ฉันจะใช้ _header_checks ที่แตกต่างกันสำหรับ smtpd (พอร์ต 25) และการส่ง (พอร์ต 587) ได้อย่างไร

ปัญหาที่ยอมรับนี้สามารถแบ่งออกเป็นหลายเงื่อนไข

  1. ฉันต้องการปิด header_checks หนึ่งใน smtpd หรือการส่ง
  2. ฉันต้องการเรียกใช้ header_checks อื่นสำหรับ smtpd และการส่ง

1. ฉันต้องการปิด header_checks หนึ่งใน smtpd หรือการส่ง

ตัวอย่างเช่นฉันคิดว่าคุณต้องการที่จะปิด header_checks สำหรับการส่ง (อีเมลขาออก)

โซลูชันที่ 1: เมธอด get_override_options

คุณสามารถใช้พารามิเตอร์ postfix เรียกreceive_override_options ด้วยพารามิเตอร์ที่คุณสามารถแทนที่โกลบอล header_check สวิตช์ดังนั้นตัวกรองจะไม่ทำงาน # main.cf header_checks = pcre: / path / to / header_checks

#master.cf
submission inet n       -       n       -       -       smtpd
    -o receive_override_options=no_header_body_checks

คำเตือน: นี้จะปิด _header_checks และ body_checks กำหนดไว้ในชาย 5 header_checks สำหรับการควบคุมที่สมบูรณ์ว่าจะปิดพารามิเตอร์ใดให้ดูโซลูชัน 2

โซลูชันที่ 2: วิธีการบริการล้างข้อมูลหลายวิธี

เราสามารถใช้เทคนิคการล้างข้อมูลแบบหลายบริการสำหรับปัญหาของคุณตามที่*_header_checksดำเนินการโดยบริการล้างข้อมูล คุณสามารถดูตัวอย่างของการติดตั้งนี้ในamavisd ใหม่กวดวิชา

พารามิเตอร์ที่วิเศษสำหรับการกำหนดค่านี้เป็นcleanup_service_name ด้วยพารามิเตอร์นี้เราสามารถใช้บริการล้างข้อมูลที่แตกต่างกันสำหรับแต่ละกระบวนการ smtpd ก่อนอื่นเราจะกำหนดบริการล้างข้อมูลเพิ่มเติมหนึ่งบริการ (เรียกว่า no-headerchecks) ใน master.cf

no-headerchecks unix    n       -       n       -       0       cleanup
    -o mime_header_checks=

ในการล้างข้อมูลนี้เรากำหนด mime_header_checks ว่างเปล่าเพื่อปิดใช้งานการกรอง ขั้นตอนสุดท้ายคือบอกบริการส่งเพื่อใช้ no-headerchecks ของเรา

submission inet n       -       n       -       -       smtpd
    -o cleanup_service_name=no-headerchecks 

2. ฉันต้องการเรียกใช้ header_checks ที่แตกต่างกันสำหรับ smtpd และการส่ง

สำหรับปัญหานี้คุณสามารถใช้วิธีการล้างข้อมูลหลายวิธีตามที่อธิบายไว้ข้างต้น

ก่อนอื่นเราจะกำหนดบริการล้างข้อมูลเพิ่มเติมหนึ่งรายการ (เรียกว่าส่วนหัวที่สอง) ใน master.cf

second-headerchecks unix    n       -       n       -       0       cleanup
    -o mime_header_checks=pcre:/path/to/2ndheaderchecks

ในการล้างข้อมูลนี้เรากำหนด mime_header_checks ที่สองให้กับตาราง PCRE อื่น ขั้นตอนสุดท้ายคือบอกบริการส่งเพื่อใช้ส่วนหัวที่สองของเรา

submission inet n       -       n       -       -       smtpd
    -o cleanup_service_name=second-headerchecks

บันทึก:

  • กรณีของคุณมีลักษณะคล้ายกับคำถามนี้ น่าเสียดายที่คำตอบจาก Laurentiu Roescuใช้ได้เฉพาะในกรณีที่คุณต้องการเปิดใช้งาน header_checks สำหรับเมลขาออกที่ใช้ smtp เพื่อการส่งผ่าน ข่าวดีก็คือประโยคแรกของเขาเกี่ยวกับcleanupภูตทำให้เรามีความคิดสำหรับการแก้ปัญหาที่สอง

  • วิธีการบริการทำความสะอาดหลาย ๆ สามารถนำไปใช้ถ้าคุณต้องการ header_checks ที่แตกต่างกัน body_checks และพารามิเตอร์อื่น ๆ man 5 header_checksที่กำหนดไว้ใน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.