ในการอนุญาตให้DMARCตรวจสอบ SPF เพื่อให้ผ่านและได้รับการจัดแนวเมื่อใช้ sendmail ตรวจสอบให้แน่ใจว่าคุณกำลังตั้งค่าที่อยู่ผู้ส่งซองจดหมาย ( -f
หรือ-r
พารามิเตอร์) เป็นสิ่งที่ตรงกับโดเมนในที่From:
อยู่ส่วนหัว
ด้วย PHP:
การใช้mail()
ฟังก์ชันในตัวของ PHP โดยไม่ตั้งค่าพารามิเตอร์หลักที่ 5 จะทำให้การตรวจสอบ DMARC SPF ไม่ถูกจัดแนวหากไม่ได้ทำอย่างถูกต้อง โดยค่าเริ่มต้น sendmail จะส่งอีเมลกับผู้ใช้เว็บเซิร์ฟเวอร์ในฐานะส่วนหัวRFC5321 .MailFrom / Return Path
ตัวอย่างเช่นสมมติว่าคุณโฮสต์เว็บไซต์ของคุณdomain.com
บนhost.com
เว็บเซิร์ฟเวอร์ หากคุณไม่ได้ตั้งค่าพารามิเตอร์พารามิเตอร์เพิ่มเติม:
mail($to,$subject,$message,$headers); // Wrong way
ผู้รับอีเมลจะได้รับอีเมลพร้อมส่วนหัวจดหมายต่อไปนี้:
Return-Path: <your-website-user@server.host.com>
From: <your-website-user@domain.com>
แม้ว่าจะผ่านการตรวจสอบ SPF แต่จะไม่ได้รับการจัดแนว (เนื่องจาก domain.com และ host.com ไม่ตรงกัน) ซึ่งหมายความว่าการตรวจสอบ DMARC SPF จะล้มเหลวตามที่ไม่ได้ลงทะเบียน
คุณต้องส่งที่อยู่ผู้ส่งซองจดหมายไปยัง sendmail แทนโดยรวมพารามิเตอร์ที่ 5 ในmail()
ฟังก์ชั่นPHP ไว้เช่น:
mail($to,$subject,$message,$headers, '-r bounce_email@domain.com'); // Right way
ในกรณีนี้ผู้รับอีเมลจะได้รับอีเมลพร้อมส่วนหัวจดหมายต่อไปนี้:
Return-Path: <bounce_email@domain.com>
From: <your-website-user@domain.com>
เนื่องจากส่วนหัวทั้งสองนี้มีที่อยู่จากdomain.com
SPF จึงจะผ่านและได้รับการจัดตำแหน่งซึ่งหมายความว่า DMARC จะผ่านการตรวจสอบ SPF ด้วยเช่นกัน