เมื่อฉันพยายามส่งจากเซิร์ฟเวอร์ postfix ไปยังบัญชี gmail ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้ในบันทึก:

Our system has detected that this message is 550-5.7.1 not RFC 2822 compliant. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked. Please review 550 5.7.1 RFC 2822 specifications for more information. xt7si10601581pab.187 - gsmtp (in reply to end of DATA command))

หลังจากแก้ไขปัญหาเป็นจำนวนมาก ฉันพบว่าเป็นเพราะช่องที่อยู่ "จาก" ไม่มีอยู่ในส่วนหัวของอีเมลที่สร้างจากเซิร์ฟเวอร์ postfix ของฉัน

ฉันเปิดใช้งานการตรวจสอบส่วนหัวใน "/etc/postfix/main.cf" โดยใช้บรรทัดด้านล่าง:

header_checks = regexp:/etc/postfix/header_checks

และเพิ่มบรรทัดต่อไปนี้ในไฟล์:

!/^From:/ REPLACE From: [email protected]

ขณะนี้เมลทั้งหมดได้รับการยอมรับจากเซิร์ฟเวอร์ gmail แต่ตอนนี้ อีเมลที่ส่งผ่านเซิร์ฟเวอร์ postfix ของฉันมีจากที่อยู่ " [email protected] "

ฉันต้องการ regexp ใน postfix ซึ่งแทนที่ส่วนหัวด้วยที่อยู่ "จาก" เป็นที่อยู่เดียวกันกับที่ส่ง

กล่าวโดยย่อ ฉันต้องการสร้างส่วนหัวของอีเมลที่มีช่อง "จาก" เหมือนกับที่อยู่ต้นทาง

กรุณาช่วย.

answer

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

ฉันเห็นด้วยที่ดูเหมือนว่าคุณควรจะดูสคริปต์ที่สร้างคำสั่ง sendmail/mail เนื่องจากอาจมีข้อผิดพลาดเกิดขึ้น

แต่ถ้าคุณไม่สามารถแก้ไขสคริปต์เหล่านั้นได้ อย่างน้อยที่สุดคุณจะพบว่าสคริปต์เหล่านั้นกำลังสตรีมอะไรไปยังคำสั่งเมลใดที่กำลังใช้อยู่ จากนั้นคุณแก้ไขสตรีมนี้ได้ทันที ต่อท้ายจากส่วนหัว ฯลฯ

ดูวิธีที่ฉันใช้ sed เพื่อทำสิ่งนี้ให้สำเร็จที่อื่น: https://stackoverflow.com/questions/15250199/crontab-email-through-msmtp-amazon-ses/32842451#32842451

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