我現在有兩個 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
留言