Linux

後綴多個 IP SMTP 橫幅

  • June 11, 2016

我已經安裝了 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.200IP地址發送電子郵件..

Received: from mail.xyz.com ([65.xxx.xxx.200])

引用自:https://serverfault.com/questions/650057