台灣最大程式設計社群網站
線上人數
1870
 
會員總數:246575
討論主題:190032
歡迎您免費加入會員
討論區列表 >> Linux / Unix >> [討論]mail server無法寄信給自己
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
[討論]mail server無法寄信給自己
價值 : 100 QP  點閱數:4941 回應數:11
樓主

towns 版主
中級專家
5027 174
5576 901
發送站內信

捐贈 VP 給 towns
今天towns在查看logwatch寄來的信件時,發生了一件奇怪的事情,其中有一台主機,無法送信給自己的root,經過測試發覺,他無法寄信給本機的帳號,一但寄信給本機帳號,他就會自動將信件轉到另一台主機,目前 towns還未找出是那裡設定的問題。還要請大家幫幫忙,找出可能的原因
環境:
OS:FC3 (kernel:2.6.9-1.667)
mail套件:sendmail-8.13.1-2、sendmail-cf-8.13.1-2

搜尋相關Tags的文章: [ mailserver ] , [ sendmail ] ,
本篇文章發表於2009-11-11 10:28
== 簽名檔 ==
來吧~~~電腦:http://blog.xuite.net/towns/hc
專修小問題:http://hc.chongyang-go.idv.tw
1樓
最有價值解答

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
一般sendmail都會設定收信網域
其中包含了
localhost
localhost.localdomain

而在/etc/hosts因為一些因素,修改了之後,沒把127.0.0.1也定義為localhost或localhost.localdomain

詳細過程
還是要看log才能知道...
本篇文章回覆於2009-11-11 11:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

towns
捐贈 VP 給 towns 檢舉此回應
在/etc/hosts中,是有設定127.0.0.1 localhost.localdomain localhost

這是log中的錯誤訊息
Nov 11 09:57:21 phptest sendmail[18020]: nAB1vL6E018018: to=<towns@phptest.abc.com.tw>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=120373, relay=dns2.abc.com.tw.[111.222.333.444], dsn=4.0.0, stat=Deferred: Connection refused by dns2.abc.com.tw.

這是mailq出現的訊息
nAB1vL6E018018 23 Wed Nov 11 09:57 <root@phptest.abc.com.tw>
(Deferred: Connection refused by dns2.abc.com.tw.)
<towns@phptest.abc.com.tw>

看起來是做了轉信的動作,信件轉到另一台主機了,而另一台主機不幫他轉寄 ^^
本篇文章回覆於2009-11-11 13:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
hosts 最好加設上網域名稱,比如上面例子的phptest.abc.com.tw
/etc/mail/local-host-names有加上相關收信的網域嗎?(phptest.abc.com.tw)
因為看起來像是寄給Local domain,找不到,所以透過Internet寄信(雖然信件主機就是自己),但是被拒絕連線...

在linux環境下用mail指令寄給user(不加Domain),應該可以吧?
但寄給User@Doamin就會出問題這樣?
本篇文章回覆於2009-11-11 14:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
以防萬一
Sendmail的Log level調大一點,Log會詳細一些
http://www.google.com.tw/search?hl=zh-TW&q=sendmail+log+level&btnG=%E6%90%9C%E5%B0%8B&meta=lr%3Dlang_zh-TW&aq=f&oq=
本篇文章回覆於2009-11-11 14:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

towns
捐贈 VP 給 towns 檢舉此回應
hosts 最好加設上網域名稱,比如上面例子的phptest.abc.com.tw
這個是有加的
192.168.8.77 phptest.abc.com.tw phptest

/etc/mail/local-host-names
這裡沒寫啦!^^,空的

因為看起來像是寄給Local domain,找不到,所以透過Internet寄信(雖然信件主機就是自己),但是被拒絕連線...
是寄給localhost,而且是這樣寄 mail towns
本篇文章回覆於2009-11-11 18:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

towns
捐贈 VP 給 towns 檢舉此回應
補充說明:
phptest.abc.com.tw與dns2.abc.com.tw 並不是同一台主機,所以看起來很像是phptest將信件轉送到dns2,並請dns2幫他寄。
本篇文章回覆於2009-11-11 19:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
真的調一下log level看一下
太神奇了...

寄給root自己也會這樣嗎?
本篇文章回覆於2009-11-12 01:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

towns
捐贈 VP 給 towns 檢舉此回應
是的,root寄給自己也是這樣
Log紀錄
Nov 12 09:23:16 phptest sendmail[19685]: nAC1NFIr019683: to=<root@phptest.abc.com.tw>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=120371, relay=dns2.abc.com.tw. [111.222.333.444], dsn=4.0.0, stat=Deferred: Connection refused by dns2.abc.com.tw.

mailq
nAC1NFIr019683 23 Thu Nov 12 09:23 <root@phptest.abc.com.tw>
(Deferred: Connection refused by dns2.abc.com.tw.)
<root@phptest.abc.com.tw>

正常內寄信件的Log,是長這樣
Nov 12 09:26:19 phptest2 sendmail[31976]: nAC1QJ2U031976: from=<root@localhost.localdomain>, size=504, class=0,nrcpts=1, msgid=<200911120126.nAC1QI8J031975@localhost.localdomain>, proto=ESMTP, daemon=MTA,relay=localhost.localdomain [127.0.0.1]
Nov 12 09:26:19 phptest2 sendmail[31975]: nAC1QI8J031975: to=root, ctladdr=root (0/0), delay=00:00:00,xdelay=00:00:00, mailer=relay, pri=30236, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (nAC1QJ2U031976 Message accepted for delivery)

提高log level的Log還是樣長的一樣哦!
本篇文章回覆於2009-11-12 09:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

towns
捐贈 VP 給 towns 檢舉此回應
有一點要修改一下,dns2的確是他自己,弄錯了 ^^"
本篇文章回覆於2009-11-12 09:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

towns
捐贈 VP 給 towns 檢舉此回應
找到問題了的確與hosts設定有關
說明一下造成無法內送的主要原因

一般習慣上,towns在hosts會寫入,以表示這兩個ip都可以找到本機
127.0.0.1 localhost.localdomain localhost
192.168.8.77 phptest.abc.com.tw

而在sendmail的設定檔中,towns 並沒有開放給外部收發信
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

而為什麼在發內部信時,他主動帶出phptest.abc.com.tw 這個尾碼
因為主機名稱設為phptest.abc.com.tw,所以towns在發內部信時,就出現towns@phptest.abc.com.tw

這麼一來,系統在收到local寄送內部信件時,都會以 192.168.8.77這個IP做為寄送內部信時顯示的IP,可是,這台主機中,並沒有開放192.168.8.77可以寄入,所以寄內部信時出現了Deferred: Connection refused by dns2.abc.com.tw 這樣的訊息

如何修正這個問題
1.修改sendmail中的設定檔,開放192.168.8.0 網段的信件可以接收
2.修改hosts檔,將127.0.0.1後面加上 phptest.abc.com.tw phptest,系統就會判斷內部信為phptest.abc.com.tw 也是內部信件
註:寫入方式為
127.0.0.1 localhost.localdomain localhost phptest.abc.com.tw phptest
不可以寫為,因為towns 這樣寫,他是給我判斷錯= =
127.0.0.1 localhost.localdomain localhost
127.0.0.1 phptest.abc.com.tw phptest

towns真是很天兵,towns在架設mail server時,多半都會將25 port全開放(LISTEN 0.0.0.0:25),但這一台不是用來做mail server,所以只開放 LISTEN 127.0.0.1:25 難怪信件收不進來 ^0^
本篇文章回覆於2009-11-12 10:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
Log level提高到13,log內容就不太一樣了(至少我在Fedora 11上處理起來是這樣)
能夠看得到系統收了信,寄信或配發的一些基本Log

也恭喜找到原因啦

一般不是拿來做Mail server的,也的確通常不會開0.0.0.0下去用
不過至少在hosts 127.0.0.1都會設定比較完整
反而另一個IP我都沒在設的...
所以我的hosts,就只有127.0.0.1的alias
就連我公司在用的Mail server,一樣我只設127.0.0.1的部份
本篇文章回覆於2009-11-12 11:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.