ฉันต้องตั้งค่า postfix ในสภาพแวดล้อมการพัฒนา/ทดสอบเพื่อกรองอีเมล เพื่อไม่ให้ลูกค้าของเราส่งสแปม ในสภาพแวดล้อมการทดสอบของเรา เราจะขัดข้อมูลผู้ใช้ทั้งหมดของเรา เพื่อให้ที่อยู่อีเมลเปลี่ยนเป็น @localhost แม้ว่าที่อยู่บางส่วนอาจเปลี่ยนเป็นที่อยู่อีเมลที่ถูกต้องในภายหลังเพื่อวัตถุประสงค์ในการทดสอบ เราส่งต่ออีเมลทั้งหมดของเราผ่านผู้ให้บริการบุคคลที่สามสำหรับการจัดส่ง ดังนั้นสิ่งที่ฉันต้องการทำคือตั้งค่า postfix เป็น:

  1. ทิ้งอีเมลที่ส่งไปยัง localhost
  2. ส่งต่ออีเมลที่เหลือทั้งหมดไปยังผู้ให้บริการบุคคลที่สามของเรา

เนื่องจากยังใหม่กับ postfix อะไรจะเป็นวิธีที่ง่ายที่สุดในการตั้งค่านี้

answer

ดูเหมือนว่าฉันจะจัดการเรื่องนี้ได้ด้วยการค้นหาและทดสอบเล็กน้อย นี่คือสิ่งที่ฉันต้องทำ:

  • ใน /etc/postfix/main.cf:

    transport_maps = hash:/etc/postfix/transport
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = static:<relayhost username>:<relayhost password>
    smtp_sasl_security_options = noanonymous
    smtp_tls_security_level = may
    start_tls = yes
    
  • ใน /etc/postfix/transport:

    localhost discard: 
    localhost.localdomain discard:
    * relay:[smtp.relayhost.com]:587
    

เห็นได้ชัดว่าการส่งต่อข้ามคำสั่ง alias_maps ดังนั้นเพื่อให้นามแฝงทำงานต่อไป ฉันต้องแสดงความคิดเห็นทั้ง alias_maps และ alias_database และแทนที่ด้วย virtual_alias_maps รูปแบบของ virutal_alias_map เหมือนกับ alias_maps ดังนั้นจึงทำการเปลี่ยนแปลงได้ง่าย

ด้วยการเปลี่ยนแปลงเหล่านี้เพียงแค่รีสตาร์ท postfix และเรียกใช้ "postmap /etc/postfix/transport" เพื่อสร้าง transport.db ตอนนี้ทุกอย่างที่ส่งถึง @localhost หรือ @localhost.localdomain จะถูกละทิ้งในขณะที่ทุกอย่างอื่นถูกส่งผ่านโฮสต์ที่ระบุ