iT邦幫忙

0

沒有設DNS的情況下如何寄信給內部信箱

ward88 2010-02-03 11:24:2915357 瀏覽

我有一台linux主機,因為一些因素沒辦法指定dns主機,所以保留空白,但想要透過他內建的sendmail功能希望能將一些資訊丟給內部mail server然後到我內部的信箱上,我在/etc/hosts內有指定一筆abc.com.tw對應的ip,不過還是出現host name lookup failure的錯誤訊息,請問該如何解?感謝大家

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

2 個回答

14
逮丸逮丸
iT邦大師 1 級 ‧ 2010-02-03 12:33:00
最佳解答

ward88提到:
在/etc/hosts內有指定一筆abc.com.tw對應的ip,不過還是出現host name lookup failure的錯誤訊息

一、
在 hosts 檔案修改後,一定要再把 sendmail 重新啟動,才會去讀新的 hosts 的資訊。

二、
配合上述的 hosts 的設定,
再加上 mailertable 的機制,可以送到指定的 IP。
編輯 /etc/mail/mailertable

<pre class="c" name="code">
abc.com.tw smtp:[1.2.3.4]

再下這指令:
cd /etc/mail; makemap hash mailertable < mailertable
這樣一定會送往指定的 IP。

三、
如果還是沒送往指定 IP,
請確認:
/etc/nsswitch.conf 這檔案裡的 hosts 那一行,
是否是:
hosts: files dns
才會先檢查 /etc/hosts 後,才查 DNS。

ward88 iT邦新手 5 級 ‧ 2010-02-03 14:43:59 檢舉

感謝你,一下子就幫我解掉我的問題了!!

2
yukal
iT邦新手 5 級 ‧ 2010-02-05 00:23:25

請問 一下 twtw 仁兄 :
最近有再碰 Linux 但是很入門 可以稍微解釋一下
你 cd /etc/mail; makemap hash mailertable < mailertable
語法的解釋 並且可以說明一下
如果還是沒送往指定 IP,
請確認:
/etc/nsswitch.conf <--- 檢查這邊的用意 !
因為完全不知道 sendmail 好奇看到你幫人解決問題 !
想要了解一下運作原理 !

有關 nsswitch.conf,鳥哥的網站寫得蠻容易看懂:
http://linux.vbird.org/linux_server/0350dns.php#DNS_resolver_file
如果 nsswitch.conf的內容是 files 在前面的話:
hosts: files dns
就算 abc.com.tw 在全世界上根本查不到的話,
而在 /etc/hosts 定義
192.168.1.1 abc.com.tw
就會指向 192.168.1.1。

如果 abc.com.tw 全世界都查到是 1.2.3.4 的話,
nsswitch.conf 的內容是 dns 在前面的話:
hosts: dns files
而 /etc/hosts 指 abc.com.tw 到 192.168.1.1 的話,
就仍是指到 1.2.3.4,/etc/hosts 上就白設了,
因是以 dns 查詢到,就不會用後面 files 來查詢了。
而樓主說:

有指定一筆abc.com.tw對應的ip

這個 abc.com.tw 應是設成全世界 dns 查不存在的名稱,
sendmail 才會有 host name lookup failure 查不到的訊息。
要檢查 nsswitch.conf 是怕會有類似像這樣的設定:

&lt;pre class="c" name="code">hosts: nisplus dns [NOTFOUND=return] files

這樣就會在 dns 查沒有,就沒有往 files 去查,
雖然絕大多數情況下少會去動 nsswitch.conf 的情況。
所以才會極有可能是設好 hosts 卻未重啟動 sendmail 的可能狀況。

mailertable 可參考:
http://sial.org/howto/sendmail/tips/#s6
http://freebsd.lab.mlc.edu.tw/mail/set_mail.shtml#mailertable
簡言之,內部信件要寄到外部,
可利用此機制來做「分流」,

全世界要寄到公司的信,
可利用此機制,
把真正的收信主機放在內部,外界無法直接 SMTP 到,
而公司的前端的 Mail Server 來做過濾的動作,
沒問題的信,就用 mailertable 的機制,
來傳到真正的公司收信主機。

我要發表回答

立即登入回答