Previous Article Next Article Postfix 如何讓某個帳號跑另一個 IP 寄信出去
Posted in Mail

Postfix 如何讓某個帳號跑另一個 IP 寄信出去

Postfix 如何讓某個帳號跑另一個 IP 寄信出去 Posted on 2014 年 01 月 11 日Leave a comment

我現在有兩個 domain 的 email

cross@ssorc1.tw
cross@ssorc2.tw

我怎麼讓 cross@ssorc1.tw 寄信出去是跑 10.10.10.180

而 cross@ssorc2.tw 出去是跑 10.10.10.134

現在我主機上的 IP 為

eth0   : 10.10.10.134/255.255.255.0
eth0:1 : 10.10.10.180/255.255.255.0

現在預設出去的信都是跑 10.10.10.134,所以 cross@ssorc2.tw 基本上不用作特別設定

只要針對 cross@ssorc1.tw 就好

編輯 /etc/postfix/master.cf 加入

# 隨意定義名稱,之後會用於 map 檔
out_ssorc1.tw unix - - n - - smtp
      -o smtp_bind_address=10.10.10.180  # 出去都跑 10.10.10.180 IP
      -o smtp_helo_name=ssorc1.tw        # 跟目的 server helo 的名稱,不然預設為主機的 hostname
      -o syslog_name=postfix-custom      # 在 maillog 記錄看到 postfix-custom/smtp[xxx] 預設會跑 postfix/smtp[xxx]

編輯 /etc/postfix/main.cf 加入

sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport

編輯 /etc/postfix/sender_transport

# 第一欄 : domain 名 (我只針對 ssorc1.tw)
# 第二欄 : 剛在 master.cf 定義的名稱
@ssorc1.tw out_ssorc1.tw

map 一下檔案

postmap /etc/postfix/sender_transport

reload postfix

postfix reload

用 ngrep dst port 25 可以看到出去的 ip 確實為 10.10.10.180

T 10.10.10.180:59311 -> xx.xx.xx.xx:25 [AP]
 EHLO xxxxx..

而收到的信內原始碼也可以看到是 10.10.10.180 來的

Received: from ssorc1.tw (10.10.10.180) by xxx

參考
https://www.benjaminwiedmann.net/sender-dependent-default-transport-maps-with-postfix-the-easy-way.html

假如不是作單一 domain 的話,全部 domain 皆透過 10.10.10.180 出去,也可以用 iptables 處理

iptables -t nat -A POSTROUTING -p tcp --dport 25 -j SNAT --to-source 10.10.10.180

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *