Linux
後綴多個 IP SMTP 橫幅
我已經安裝了 postfix
2.11.3
,我們的伺服器上有多個 IP 地址,我們希望託管兩個域,隔離並在它們自己的 IP 上執行。domain1 unix - - n - - smtp -o smtp_bind_address=1.1.1.1 -o smtp_helo_name=mail.abc.com -o syslog_name=postfix-mail.abc.com domain2 unix - - n - - smtp -o smtp_bind_address=2.2.2.2 -o smtp_helo_name=mail.xyz.com -o syslog_name=postfix-mail.xyz.com
以下傳輸器
/etc/postfix/sender_transport
也定義在main.cf
:@abc.com domain1: @xyz.com domain2:
重新啟動 postfix 後,它停止偵聽埠
25
:[root@postfix-2.11.3]# telnet 1.1.1.1 25 Trying 1.1.1.1... telnet: connect to address 1.1.1.1: Connection refused
但是,如果我在其中使用以下行,
master.cf
請在 25 日收聽,如果我 telnet,我可以看到橫幅:1.1.1.1:smtp inet n - n - - smtpd -o myhostname=mail.abc.com 2.2.2.2:smtp inet n - n - - smtpd -o myhostname=mail.xyz.com
但是我想在您發送電子郵件時告訴我的郵件伺服器使用特定域,就像
sender_transport
我做錯了什麼?
筆記:
我從
master.cf
上面的 domain1 和 domain2 中刪除了以下行並替換為:smtp inet n - n - - smtpd
解決方案 - 需要 Postfix 2.7 或更高版本:
/etc/postfix/master.cf
#smtp inet n - n - - smtpd 127.0.0.1:smtp inet n - n - - smtpd -o syslog_name=postfix-localhost -o smtp_helo_name=localhost -o smtp_bind_address=127.0.0.1 -o myhostname=localhost 65.xxx.xxx.100:smtp inet n - n - - smtpd -o syslog_name=postfix-mail.abc.com -o smtp_helo_name=mail.abc.com -o smtp_bind_address=65.xxx.xxx.100 -o myhostname=mail.abc.com 65.xxx.xxx.200:smtp inet n - n - - smtpd -o syslog_name=postfix-mail.xyz.com -o smtp_helo_name=mail.zyx.com -o smtp_bind_address=65.xxx.xxx.200 -o myhostname=mail.xyz.com abc-out unix - - n - - smtp -o smtp_bind_address=65.xxx.xxx.100 -o smtp_helo_name=mail.abc.com -o syslog_name=postfix-mail.abc.com xyz-out unix - - n - - smtp -o smtp_bind_address=65.xxx.xxx.200 -o smtp_helo_name=mail.xyz.com -o syslog_name=postfix-mail.xyz.com
/etc/postfix/main.cf
sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport
/etc/postfix/sender_transport
# Use source IP - 65.xxx.xxx.100 @abc.com abc-out: @example.com abc-out: # Use source IP - 65.xxx.xxx.200 @xyz.com xyz-out:
執行命令生成雜湊數據庫
postmap hash:/etc/postfix/sender_transport
重新啟動/重新載入後綴
service postfix reload
測試
[root@localhost ~]# telnet 65.xxx.xxx.200 25 Trying 65.xxx.xxx.200... Connected to 65.xxx.xxx.200. Escape character is '^]'. 220 mail.xyz.com ESMTP Postfix
發送電子郵件測試
[root@localhost ~]# telnet localhost 25 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 localhost ESMTP Postfix helo localhost 250 localhost mail from: spatel@xyz.com 250 2.1.0 Ok rcpt to: spatel@gmail.com 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> Hello world! . 250 2.0.0 Ok: queued as 93E708207BA
轉到 gmail 收件箱 > 顯示原件
Delivered-To: spatel@gmail.com Received: by 10.xxx.xxx.xxx with SMTP id w64csp782609qgd; Tue, 9 Dec 2014 09:35:57 -0800 (PST) X-Received: by 10.xxx.xxx.xxx with SMTP id o28mr4132552yha.168.1418146557180; Tue, 09 Dec 2014 09:35:57 -0800 (PST) Return-Path: <spatel@xyz.com> Received: from mail.xyz.com ([65.xxx.xxx.200]) by mx.google.com with ESMTPS id n10si743294ykc.114.2014.12.09.09.35.56 for <spatel@gmail.com> (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Dec 2014 09:35:56 -0800 (PST) ... ... Message-Id: <20141209173720.93E708207BA@localhost.localdomain> Date: Tue, 9 Dec 2014 12:37:11 -0500 (EST) From: spatel@xyz.com Hello world!
瞧!!看到它使用
65.xxx.xxx.200
IP地址發送電子郵件..Received: from mail.xyz.com ([65.xxx.xxx.200])