iT邦幫忙

0

sendmail如何接收特定IP的來信

我對sendmail不熟,需要大家的幫忙,情況如下
因為海外的一家公司(我們和他們在相同MPLS下),他們要變更Mail server的IP位址,於是來信要求我這裡要能接收從他那邊發來的信件,原則上我這sendmail沒有防火牆,在hosts.allow中我也設定對方IP了,請問我還有哪裡要設定嗎??才能真正的能收到對方的信,我不確定sendmail.cf中是否也要變更什麼設定?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

14
逮丸逮丸
iT邦大師 1 級 ‧ 2009-07-24 10:42:51
最佳解答

在 /etc/mail/access 裡編入以下字樣:

<pre class="c" name="code">
Connect:xxx.xxx.xxx.xxx  RELAY
# 或者
xxx.xxx.xxx.xxx	OK

然後 cd /etc/mail
執行:

<pre class="c" name="code">
# 若是 linux 的話,或者 /etc/mail/ 裡有 access.db
makemap hash access < access
# 若是 solaris 的話,或者 /etc/mail/ 裡有 access.pag
makemap dbm access < access
看更多先前的回應...收起先前的回應...
zpple iT邦新手 3 級 ‧ 2009-07-24 10:54:25 檢舉

謝謝你的回答,access裡面我看過了,只有
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
10.15.1 RELAY
xxxxxxxxxxxx.com.tw RELAY
並沒有特定要求

zpple iT邦新手 3 級 ‧ 2009-07-27 09:56:32 檢舉

我可以telnet到對方,這台mailserver上沒有防火牆,對方還沒寄信過來,所以我也不知是否會被擋,除了這些設定檔要注意外,還有哪些要注意嗎

您要測的,是要從 10.28.5.2 裡面,做 telnet 10.2.2.1 25 的動作來測試。
如果有從 10.28.5.2 寄不來 10.2.2.1 的話,看 Mail 的 log。
另外也要看 @ 後面寫的是什麼?是不是 sendmail 可以認出 @ 後面 要寄到哪裡去。

如果有從 10.28.5.2 寄不來 10.2.2.1 的話,看 Mail 的 log。
看 10.28.5.2 上的 mail log。

zpple iT邦新手 3 級 ‧ 2009-07-29 13:19:48 檢舉

對方進進來都正常了,我直接寫入access中
請問一下,我寄過去的信,要能寄到10.28.5.2(svr-exch1),在sendmail中也有需要設定的部分嗎

如果寄給 10.28.5.2 是以 root@svr-exch1
1.確認在 10.2.2.1 的 /etc/hosts 檔案裡有 10.28.5.2 svr-exch1 這筆對照。
2.在 10.2.2.1 裡面 telnet svr-exch1 25 是通的。
3.在 svr-exch1 裡面的 /etc/mail/access 有加上 10.2.2.1 OK 這條規則。

zpple iT邦新手 3 級 ‧ 2009-07-30 13:33:51 檢舉

我在hosts.allow有加對方了,telnet port 25過去也ok,這樣hosts中也要加嗎?因為我hosts中只有解析自己,沒有其他人

通常在 *nix 的 /etc/nsswitch.conf 裡的 hosts 的這一行是:
hosts: files dns
如果你要從 10.2.2.1 寄到 10.28.5.2,看那個 @ 後面是用 IP?還是什麼名稱?
如果是寄給 xxx@svr-exch1 的話,根據 nsswitch.conf 檔,
會先看 /etc/hosts 有沒有說 srv-exch1 的 IP 是什麼?
沒有的話,就會從 DNS 查,看 srv-exch1 的 IP是什麼?
如果也查不到的話,sendmail 就不知道要送往哪個IP而退信。
所以,你測試 telnet 10.28.5.2 25 ,只是確認 IP 之間的 routing 是不是通,
除非你測試 telnet svr-exch1 25 也是可通的話,sendmail也才有通的可能。

zpple iT邦新手 3 級 ‧ 2009-07-31 10:43:52 檢舉

再問一下,當我telnet sver-exch1 25不通,但寫完整名稱telnet sver-exch1.a.b 25就會通的話,這樣還需要在hosts中指明ip對名稱嗎

telnet sver-exch1 25不通 => 在 /etc/hosts 加上 10.28.5.2 svr-exch1
telnet sver-exch1.a.b 25 會通 => 兩種可能:
1.在 /etc/hosts 上有 10.28.5.2 sver-exch1.a.b 這記錄。
2.nslookup sver-exch1.a.b 可查得到;但是 要看查到的 IP 是 10.28.5.2?
還是 public IP?若是 後者,則表示是繞外面一圈才到 sver-exch1.a.b,而不是從 intranet 進去。
從您 telnet 25 port 的測試,至少寄給 xxx@ver-exch1.a.b 應寄得成功,但寄給 xxx@ver-exch1 會寄不成。

我要發表回答

立即登入回答