มีส่วนหัวที่น่ารำคาญมากในเมลที่ส่งโดย Postfix daemon และฉันกำลังมองหาวิธีกำจัดมัน:

Received: by somedomain.net (Postfix, from userid 509)

ค่อนข้างนอกเรื่อง แต่เป็นไปได้ไหมที่จะลบชื่อโฮสต์ออกจาก Message-ID โดยเหลือเพียงโดเมน

Message-ID: <[email protected]>
answer

ดูเหมือนว่า serverfault ได้คำตอบที่มีความหมายแล้ว: การ
ใช้header_checksdirective ในmain.cf.

ดูคำตอบทั้งหมด

ฉันแนะนำให้คุณอ่านความคิดเห็นที่ไม่แนะนำให้ลบส่วนหัวอย่างเป็นระบบ

คุณสามารถใช้ header_checks เพื่อ IGNORE ส่วนหัว หรือแทนที่โดยใช้ regexp เป็น X-Received หรืออะไรที่คล้ายกัน

ดังที่กล่าวไปแล้ว หากคุณลบบรรทัด Received: ของคุณ โปรดทราบว่าอาจเพิ่มความน่าจะเป็นของสแปมในอีเมลที่ส่งโดยเซิร์ฟเวอร์นั้น การตรวจสอบส่วนหัวมักเป็นส่วนหนึ่งของการวิเคราะห์สแปมแบบเบย์

คุณสามารถตั้งค่าตัวกรองคิวโพสต์ได้ ทักษะ perl / sed ของคุณเป็นอย่างไร?

สิ่งแรกที่คุณต้องทำคือเขียนสคริปต์ที่จะยอมรับข้อความดิบบนSTDINและแก้ไขข้อความตามที่คุณต้องการ (ฉันจะถือว่าคุณมีความสามารถนี้อยู่แล้ว) จากนั้นคุณกำหนดค่า postfix เพื่อส่งข้อความทั้งหมดไปยังสคริปต์นั้นเป็นตัวกรอง เป็นสิ่งสุดท้ายที่สคริปต์ทำ ส่งข้อความกลับไปที่ postfix

สำหรับการเขียนสคริปต์ ผมแนะนำให้ใช้ Perl มีเอ็นจิ้น regexp ที่ทรงพลังมาก คุณยังสามารถใช้Net::SMTPเพื่อส่งกลับไปยัง postfix อีกครั้งได้อย่างง่ายดาย

วิธีกำหนดค่า postfix ให้ทำดังนี้

ในบรรทัดmaster.cfของคุณsmtpdให้เปลี่ยนส่วนสุดท้ายเพื่อรวมตัวกรอง

บรรทัดเดิม:

smtp      inet  n       -       n       -       -       smtpd

บรรทัดใหม่:

smtp      inet  n       -       n       -       -       smtpd -o content_filter=myfilter

เพิ่มบริการตัวกรองของคุณไปที่master.cf:

myfilter unix  -       n       n       -       3       pipe
    flags=   user=nobody argv=/usr/local/bin/myfilter.pl localhost 25252 $sender $recipient

โปรดทราบว่าผู้ส่งและผู้รับที่นี่มาจากซองจดหมายไม่ได้ร่างกาย คุณจะต้องใช้สิ่งนี้เพื่อเป็นส่วนหนึ่งของซองจดหมายเมื่อส่งข้อความกลับไปที่ postfix

สุดท้ายเพิ่มตัวรับ smtp ที่ไม่มีการกรองmaster.cfเพื่อยอมรับข้อความที่แก้ไขใหม่:

local:25252 inet n      -       n       -       -       smtpd
    -o content_filter=

แน่นอนว่าคุณสามารถจัดการส่วนหัวที่มีอยู่ใน postfix ได้หากต้องการ แต่ IIRC MTA ส่วนใหญ่จะไม่เพิ่มส่วนหัวนั้นเว้นแต่ MUA ยังไม่ได้เพิ่ม

ดังที่ได้กล่าวมาแล้ว Postfix header_checks เป็นที่สำหรับทำสิ่งนี้ ฉันใช้สิ่งนี้กับเมลรีเลย์ที่ส่งเมลในนามของเซิร์ฟเวอร์ในระบบคลาวด์ EC2 ของ Amazon ระบบป้องกันสแปมไม่ชอบการค้นหาสิ่งที่เกี่ยวข้องกับ EC2 ดังนั้นการปิดบังประเภทนี้จึงจำเป็นอย่างยิ่ง ที่กล่าวว่าฉันอาจจะทำซ้ำการกำหนดค่านี้สำหรับเครือข่ายการผลิตในอนาคต ชื่อเสียงของเมลเป็นธุรกิจที่ยุ่งยาก และการปิดบังอีเมลทั้งหมดเพื่อให้ดูเหมือนว่ามาจากการส่งต่อจำนวนน้อยทำให้การจัดการชื่อเสียงนั้นง่ายขึ้น

นี่คือตัวอย่างข้อมูล header_checks สำหรับการพิจารณาของคุณ

/^(ได้รับ: . amazonaws.com. )/ แทนที่ X-Cloak-$1

สิ่งนี้จะค้นหาและคว้า "Received: host1.amazonaws.com" และแทนที่ด้วย "X-Cloak-Received: host1.amazonaws.com"