จะทำให้ Postfix ใช้ที่อยู่ IP อื่นได้อย่างไร


21

ฉันใช้เซิร์ฟเวอร์อีเมล Postfix และฉันมี 6 IP ให้ใช้งาน ฉันต้องการใช้ IP อื่นสำหรับเซิร์ฟเวอร์อีเมล Postfix เพื่อส่งจดหมายมากกว่าที่เว็บเซิร์ฟเวอร์ใช้

ฉันจะทำสิ่งนี้ได้อย่างไร เวอร์ชัน postfix ของฉันคือ 2.3.3

ตัวอย่างเช่น: IP หลัก: 66.66.66.66 IP อื่น ๆ : 66.66.66.67

คำตอบ:


25

คุณต้องการsmtp_bind_address=66.66.66.67และinet_interfaces=allหรือinet_interfaces=eth(whatever)ว่า 66.66.66.67 เปิดอยู่

ทำการเปลี่ยนแปลงนั้นแล้วหยุด / เริ่ม postfix คุณไม่สามารถโหลดซ้ำได้หากคุณเปลี่ยนinet_interfaces


ฉันได้ลองใช้ตัวเลือก smtp_bind_address แล้ว แต่เซิร์ฟเวอร์อีเมลของฉันไม่ได้ส่งจดหมายอีกต่อไป และฉันไม่คิดว่าจะต้องเปลี่ยนแปลง inet_interfaces เนื่องจากฉันไม่ต้องการรับอีเมลบนเซิร์ฟเวอร์นั้น หมายเหตุ IP นี้ใช้สำหรับส่งจดหมายเท่านั้น
EarthMind

กรุณาโพสต์ของคุณpostconf -nเพื่อให้เราสามารถเห็นสิ่งที่คุณกำลังพูดถึง ไม่ระบุชื่อ IP เป็น IP ส่วนตัว (10.xxx ฯลฯ ) และโดเมนเป็นตัวอย่าง (com | net | org | any) ถ้าคุณรู้สึกว่าคุณต้องการ
Bill Weiss

2
smtp_bind_address เป็นวิธีที่ถูกต้องและฉันเพิ่งมีความล่าช้าในการส่งอีเมลเนื่องจาก IP ใหม่ที่ฉันใช้ไม่มีบันทึก rDNS ขอขอบคุณสำหรับความช่วยเหลือของคุณ
EarthMind

3
smtp_bind_addressตั้งค่าที่อยู่ IPv4 ซึ่งเทียบเท่ากับ IPv6 คือsmtp_bind_address6
Paul Tobias

16

หากคุณใช้โซลูชัน "smtp_bind_address" เซิร์ฟเวอร์อีเมลของคุณจะรับฟังเฉพาะที่อยู่ IP ที่ระบุสำหรับจดหมายขาเข้าเช่นกัน สิ่งเดียวกันนี้ใช้กับโซลูชัน "inet_interfaces" นี่อาจไม่ใช่โซลูชันที่ต้องการหากคุณต้องการฟังจดหมายขาเข้าบนที่อยู่ IP / อินเตอร์เฟสหลายรายการ

วิธีแก้ปัญหาของฉันดีกว่าเพราะฉันไม่แนะนำให้เปลี่ยนการตั้งค่า "smtp_bind_address" และ "inet_interfaces" เริ่มต้นดังนั้นเซิร์ฟเวอร์อีเมลของคุณจะยังคงฟังอีเมลขาเข้าในที่อยู่ IP ทั้งหมด

ต้องการเปลี่ยนแปลงเพียงเล็กน้อยในไฟล์ /etc/postfix/master.cf ของคุณ

เปลี่ยนส่วนนี้:

smtp unix - - - - - - smtp
# เมื่อทำการส่งเมลเป็น MX สำรองให้ปิดการใช้งาน fallback_relay เพื่อหลีกเลี่ยง MX ลูป
ถ่ายทอดยูนิกซ์ - - - - - smtp
        -o smtp_fallback_relay =

สำหรับสิ่งนี้:

smtp unix - - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
# เมื่อทำการส่งเมลเป็น MX สำรองให้ปิดการใช้งาน fallback_relay เพื่อหลีกเลี่ยง MX ลูป
ถ่ายทอดยูนิกซ์ - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
        -o smtp_fallback_relay =

แน่นอนว่าแทนที่จะเป็น 192.168.0.1 คุณต้องใช้ที่อยู่ IP อันใดอันหนึ่งที่คุณต้องการส่งจดหมายจาก

Zoltan


ฉันคิดว่าในเวลานั้นฉันต้องการให้เซิร์ฟเวอร์อีเมลฟังที่อยู่ IP เดียวเท่านั้นสำหรับทั้งอีเมลขาเข้าและขาออก แต่ฉันก็ขอขอบคุณข้อมูลเพิ่มเติม ขอบคุณ
EarthMind

1
จะใช้กับ ipv6 ได้ไหม หากเป็นเช่นนั้นฉันสามารถรวมที่อยู่สองแห่งและผูกเข้ากับที่อยู่หนึ่งแห่งหรือไม่ ด้วยวิธีนี้ฉันยังคงได้รับอีเมลขาออกผ่าน ipv6 และไม่ใช่ที่อยู่ ipv4 ที่ฉันได้ระบุไว้
billynoah

ฉันเพิ่ม-o smtp_bind_address6=1:2:3:4:5:6:7:8และดูเหมือนว่าจะทำงาน
billynoah

1
มันไม่ถูกต้อง มันเป็นไปได้ที่จะทำให้ postfix ฟังบนอินเตอร์เฟซต่างๆผ่านทางเพิ่มทั้งหมดของพวกเขาไปinet_interfaces- หรือเพียงแค่การตั้งค่าให้all(ค่าดีฟอลต์) และsmtp_bind_addressการกำหนดค่า ที่อยู่เดียวที่ระบุผ่านsmtp_bind_address (หรือsmtp_bind_address6) จะถูกใช้อย่างอิสระสำหรับกระบวนการส่ง Postfix smtp
maxschlepzig

ฉันเพิ่ม -o smtp_bind_address ใน master.cf ของฉันและมันไม่ทำงาน ฉันใช้มันใน main.cf และใช้งานได้
Areeb Soo Yasir

10

master.cf

สร้างอินเทอร์เฟซที่แตกต่างกัน หนึ่งรายการสำหรับแต่ละโดเมน:

rotate1  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate1
          -o smtp_helo_name=domainone.com.br
          -o smtp_bind_address=173.111.111.1

rotate2  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate2
          -o smtp_helo_name=domaintwo.com.br
          -o smtp_bind_address=173.111.111.2

main.cf

  1. ปิดการใช้งานแผนที่การขนส่งอื่นทั้งหมดเช่น: # transport_maps = xxxxx

  2. เปิดใช้งานแผนที่การขนส่งที่ขึ้นอยู่กับ (ต้องใช้ postfix 2.7.x ขึ้นไป)

ผู้ส่ง

transport_random_dependent.cf

ตัวอย่าง:

user = postfix
password = mypassword
dbname = postfixdb
hosts = localhost
query = SELECT transport FROM transport_random WHERE domain = '%d' AND status='1' ORDER BY RAND() LIMIT 1

ตารางการขนส่ง _ สุ่ม

Column "transport" = rotate1, rotate2, rotate3, rotate4 (etc)
Column "domain" = sender domains (replaced by %d)
Column "status" = boolean (0 or 1) if is enabled the transport.

คำสั่ง "RAND () LIMIT 1" จำเป็นเฉพาะเมื่อคุณต้องการใช้การขนส่งแบบสุ่มสำหรับโดเมนเดียวกัน

ตัวอย่างเช่นคุณต้องการส่งจาก mydomain.com จาก 3 IP ที่แตกต่างกัน

จากนั้นคุณสร้าง 3 transports (rotate1, rotate2 และ rotate3) ด้วย 3 IP ที่แตกต่างกันจากนั้นตั้งค่าที่บรรทัด mysql:

transport = rotate1 | domain = mydomain.com
transport = rotate2 | domain = mydomain.com
transport = rotate3 | domain = mydomain.com

จากนั้นเมื่อ postfix จะสุ่มการขนส่งที่แตกต่างกันสามแบบ (หมุนหนึ่งถึงสาม) เพื่อส่งอีเมลนี้


3

แก้ไข /etc/postfix/main.cf และตรวจสอบให้แน่ใจว่ามีบรรทัดต่อไปนี้

inet_interfaces = 66.66.66.67, localhost

จากนั้นเรียกใช้ "โหลด postfix"


2
นี่เป็นการตั้งค่าที่อยู่ IP ที่จะรับฟังสำหรับการเชื่อมต่อ SMTP เท่านั้นไม่ใช่ที่อยู่ IP ที่จะใช้ในการส่งจดหมายขาออก
ub3rst4r
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.