เมลพร็อกซีไปยังเซิร์ฟเวอร์ smtp อื่นด้วย Postfix


11

ฉันจะส่งต่อ (หรือพรอกซี) เมลไปยังเซิร์ฟเวอร์ smtp อื่นได้อย่างไรโดยขึ้นอยู่กับที่อยู่

ฉันมีเครื่องหนึ่งที่มีเซิร์ฟเวอร์ SMTP (postfix) กำลังฟังพอร์ต 25 ฉันต้องการใช้ Lamson ( http://lamsonproject.org/ ) เพื่อจัดการกับจดหมายขาเข้าและจดหมายบางฉบับที่ฉันต้องการให้ postfix จัดการ

ความคิดของฉันคือการตั้งค่า Lamson ให้ฟังบนพอร์ตอื่นสมมติว่า localhost: 10025 ฉันตั้งค่า postfix เพื่อตรวจจับเมลทั้งหมดโดยการฟังพอร์ต 25

ฉันจะกำหนดค่า Postfix ให้พร็อกซีบางจดหมายไปยัง Lamson ใน 10025 และจัดการจดหมายอื่น ๆ ทั้งหมดได้อย่างไร

คำตอบ:


18

Postfix มีความยืดหยุ่นสูง (และซับซ้อน) ในการกำหนดค่าดังนั้นจึงมีหลายวิธีในการทำสิ่งนี้ วิธีที่ง่ายที่สุดอาจจะใช้transport(5)ตาราง

ก่อนอื่นให้เปิดใช้งานตารางการขนส่งใน postfix:

/etc/postfix/main.cf:
    transport_maps = hash:/etc/postfix/transport

คุณจะต้องตรวจสอบให้แน่ใจว่า Postfix รับอีเมลสำหรับที่อยู่ที่ Lamson จะจัดการ ลองดูที่permit_auth_destinationกฎ Postfix จะนำไปใช้เพื่อกำหนดที่อยู่ผู้รับที่ถูกต้อง สำหรับตัวอย่างต่อไปนี้สมมติว่า "example.com" เป็นโดเมนที่ไม่รู้จักกับ Postfix อาจเป็นวิธีที่ง่ายที่สุดในการเพิ่มมันเป็นโดเมนรีเลย์:

/etc/postfix/main.cf:
    relay_domains = example.com

จากนั้นสร้างตารางที่เหมาะสม เช่นเปลี่ยนเส้นทางเมลทั้งหมดสำหรับโดเมน "example.com" รวมถึงเมลสำหรับ "user@mydomain.org" ไปยัง Lamson ในพื้นที่ของคุณที่พอร์ต 10025:

/etc/postfix/transport:
    example.com          smtp:127.0.0.1:10025
    user@mydomain.org    smtp:127.0.0.1:10025

หลังจากนั้น (และหลังจากอัปเดตไฟล์ตารางการขนส่งทุกครั้ง) อย่าลืมเรียกใช้:

$ postmap /etc/postfix/transport

สิ่งนี้จะทำให้คุณไป อย่าลืมอ่านtransport(5)man page ซึ่งจะให้แนวคิดเพิ่มเติมเกี่ยวกับวิธีการใช้สิ่งอำนวยความสะดวกที่ทรงพลังนี้


สวัสดีขอบคุณสำหรับเคล็ดลับ ฉันยังคงประสบปัญหาในการส่งต่อจดหมายหลังจากทำตามคำแนะนำของคุณ ฉันได้รับ NOQUEUE: ปฏิเสธ: RCPT จาก {my-mail-relay} ที่อยู่ผู้รับถูกปฏิเสธ: ผู้ใช้ที่ไม่รู้จักในตารางผู้รับในเครื่อง ความคิดใด ๆ
Mattias

อ่าใช่คุณต้องทำให้แน่ใจด้วยว่า Postfix ยอมรับเมลที่จะส่งต่อไปยัง example.com (เนื่องจาก Postfix ทำหน้าที่เป็นรีเลย์สำหรับ Lamson) หาก Postfix ของคุณส่วนใหญ่จะให้บริการโดเมนอื่นวิธีที่ง่ายที่สุดเพื่อให้บรรลุนี้จะเพิ่ม "โดเมน Lamson" relay_domainsเพื่อ ฉันอัปเดตเพื่อตอบเพื่อรวมสิ่งนี้
เอิร์ล

1
ขอบคุณหลังจากทำตามขั้นตอนของคุณฉันยังคงมีปัญหาในการรับ postfix เพื่อรับรู้ localhost เป็นโฮสต์ที่ถูกต้อง ฉันรันคำสั่ง postconf -e 'smtp_host_lookup = dns, native' และนั่นแก้ไขปัญหาของฉัน postfix กำลังส่งต่ออีเมลที่ฉันต้องการไปที่ Lamson
Mattias

1
ดีใจที่ได้ยินว่าใช้งานได้ดี แทนการเปลี่ยนแปลงsmtp_host_lookupนอกจากนี้คุณยังสามารถใช้แทน127.0.0.1 localhostฉันได้ปรับปรุงคำตอบเพื่อรองรับการปรับปรุงนั้น
เอิร์ล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.