ที่จริงแล้วคำตอบของ Instyle นั้นยากมากที่จะนำไปใช้ถ้าคุณต้องการสนับสนุนโดเมนที่แตกต่างกันและมันผิดเพราะ:
a) ด้วยตัวอย่างของเขาtransport_mapsอีเมลทั้งหมดที่ส่งไปยังโดเมนนั้นจะถูกส่งไปยังบริการเฉพาะนั้นโดยไม่คำนึงว่าอีเมลนั้นเป็นอีเมลที่ถูกตีกลับหรือไม่ เนื่องจากใช้ชื่อโดเมนเฉพาะจึงควรเป็นอีเมลที่ตีกลับเท่านั้น ... แต่ไม่สามารถรับรองได้ว่าจะเป็นเช่นนั้น
b) ข้อมูลที่ส่งไปยังสคริปต์ของคุณคืออีเมลนั้นไม่ใช่ข้อความตีกลับ กล่าวอีกนัยหนึ่งรหัสของคุณอาจไม่รู้ว่าทำไมอีเมลถึงถูกตีกลับ (เช่นการตีกลับในเครื่องจะส่งอีเมลต้นฉบับให้คุณเท่านั้น)
วิธีที่ถูกต้องในการตั้งค่านั้นใน postfix คือการใช้คลาส bounce notification
1) ใน/etc/postfix/main.cf
notify_classes = bounce
bounce_notice_recipient = bounces@example.com
transport_maps = hash:/etc/postfix/transport_maps
2) ใน/ etc / postfix / transport_maps
# when you make changes to this file, run:
# sudo postmap /etc/postfix/transport_maps
bounces@example.com bulkbounce:
อย่างที่คุณเห็นตอนนี้เราบอกให้ postfix ใช้bounces@example.comเมื่อใดก็ตามที่อีเมลถูกตีกลับ จากนั้นในแผนที่การขนส่ง, การใช้bulkbounceเป็นบริการในการจัดการที่อยู่อีเมลใด ๆ bounces@example.comที่จะ
ในที่สุดคุณสามารถกำหนดbulkbounceด้วยสคริปต์ของคุณ:
3) ใน/etc/postfix/master.cf
bulkbounce unix - n n - - pipe
flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}
สคริปต์นี้ต้องการให้คุณมีผู้ใช้ nobodyก็เป็นทางเลือกที่ดีเช่นกัน หากคุณต้องการมีผู้ใช้เฉพาะคุณสามารถสร้างโดยใช้:
useradd bounce
หากไม่มีสคริปต์ในmaster.cfอีเมลจะถูกส่งไปยังบัญชี bulkbounce ดังนั้นหากคุณมีสคริปต์ที่แยกวิเคราะห์อีเมลจากไฟล์สิ่งนี้จะทำงานได้โดยไม่ต้องมีtransport_mapsและmaster.cfเปลี่ยนแปลง
จากความคิดเห็นด้านล่าง:
การตีกลับสองครั้ง ...
หากคุณกำลังแก้ไขที่อยู่ผู้ส่ง (ที่อยู่ VERP เช่นuser+id@fromdomain.comคุณจะต้องแสดงความคิดเห็นในบรรทัดmain.cfสำหรับbounce_notice_recipientถ้าคุณสนใจในการแยกวิเคราะห์การ+idตีกลับเฉพาะในสคริปต์ของคุณ
Message-Idไว้ในส่วนหัวได้จะต้องส่งคืน เพียงพอที่จะตรวจสอบว่าใครเป็นใคร