แก้ไขปัญหาได้หลังจากลองผิดลองถูกนับครั้งไม่ถ้วนนี่คือวิธี:
บวก: ฉันไม่ต้องการให้ผู้ส่งส่งอะไรไปยัง localhost นั่นเป็นสาเหตุที่ฉันมี block_destinations
main.cf บรรทัดที่เกี่ยวข้อง:
relay_domains = mydomaincorp.com
รีเลย์โฮสต์ = [mysubdomainonmicrosoft.mail.protection.outlook.com]
mynetworks = แฮช:/etc/postfix/hosts_auth_to_relay
smtpd_client_restrictions = แฮช check_client_access:/etc/postfix/hosts_auth_to_relay, แฮช check_client_access:/etc/postfix/hosts_auth_to_level1, ปฏิเสธ
smtpd_recipient_restrictions = แฮช check_recipient_access:/etc/postfix/blocked_destinations, permit_mynetworks, แฮช check_recipient_access:/etc/postfix/destinations_level1, ปฏิเสธ
hosts_auth_to_relay
#เซิร์ฟเวอร์ของฉันที่ส่งอีเมลถึงทุกโดเมน
10.0.0.10 ตกลง
hosts_auth_to_level1
#เซิร์ฟเวอร์ของฉันที่ส่งอีเมลไปที่ mydomaincorp.com เท่านั้น
10.0.0.20 ตกลง
destinations_level1
mydomaincorp.com ตกลง
ถูกบล็อก_ปลายทาง
localhost ปฏิเสธ
localhost.mydomaincorp.com ปฏิเสธ
หากฉันพยายามส่งอีเมลไปยัง mydomaincorp.com จากโฮสต์ที่ไม่แสดง (เช่น 10.0.0.30) คำตอบคือ 554 5.7.1 <10.0.0.30>: ไคลเอนต์โฮสต์ถูกปฏิเสธ: การเข้าถึงถูกปฏิเสธ
นั่นคือพฤติกรรมที่คาดหวัง
ไม่รู้ว่าเป็นการกำหนดค่าที่เหมาะสมที่สุดหรือไม่ แต่อย่างน้อยก็ใช้งานได้