โซลูชันมาตรฐานคือการใช้ตัวเลือกheader_checks วิธีนี้จะใช้ได้อย่างไรก็ตามหากเรากรองสายที่ได้รับบนเมลทั้งหมดทั้งขาเข้าและขาออก (เช่นนี้จะทำได้) เราอาจสูญเสียส่วนหัวที่ได้รับบนเมลที่ส่งถึงเราซึ่งอาจเป็นสิ่งสำคัญสำหรับการแก้ไขปัญหา จะได้รับการแก้ไขปัญหานี้เราจะใช้header_checks
เฉพาะกับจดหมายที่ไม่อาจได้รับการส่งให้เรา-mail ที่ถูกส่งไปยังการส่งพอร์ต (คุณจะใช้พอร์ตส่ง , คุณไม่? )
โพสต์นี้จะอธิบายวิธีการใช้header_checks
เฉพาะกับพอร์ตการส่งเท่านั้น สิ่งที่เราต้องทำคือส่งตัวเลือกcleanup_service_nameไปยังบริการส่งเพื่อให้เราสามารถตั้งค่าบริการล้างข้อมูลใหม่“ subcleanup” ส่วนที่เกี่ยวข้องของ/etc/postfix/master.cf
อาจมีลักษณะเช่นนี้:
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
-o cleanup_service_name=subcleanup
ตอนนี้เราสามารถส่งheader_checks
ตัวเลือกไปยังบริการล้างข้อมูลใหม่ ส่วนหนึ่งของที่/etc/postfix/master.cf
อาจมีลักษณะเช่นนี้:
cleanup unix n - - - 0 cleanup
subcleanup unix n - - - 0 cleanup
-o header_checks=regexp:/etc/postfix/submission_header_checks
ในที่สุดเราจำเป็นต้องสร้างไฟล์/etc/postfix/submission_header_checks
ซึ่งจะมี regex ที่กรองส่วนหัวที่ได้รับ regex ที่คุณใส่ในไฟล์นั้นขึ้นอยู่กับว่าคุณได้smtpd_sasl_authenticated_header
ตั้งค่าไว้หรือไม่
ถ้าsmtpd_sasl_authenticated_header
เป็นyes
เช่นนั้นใช้:
/^Received:.*\(Authenticated sender:/ IGNORE
มิฉะนั้นให้ใช้:
/^Received:.*\(Postfix/ IGNORE
(ขอบคุณ Dominic P และ Bryan Drewery ที่แสดงวิธีจัดการกรณีที่สอง)
postmap submission_header_checks
ไหม