歡迎您光臨本站 註冊首頁

Fedora 6架設Sendmail郵件伺服器解決發件人Nobody問題

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

Fedora 6架設Sendmail郵件伺服器解決發件人Nobody問題

弄了差不多一個星期,基本弄懂基本的東西,架設過程中,參考網上無數文章,現做一個綜合,並在重要的地方給予提醒
一:安裝必要的軟體
(1)查詢  rpm -qa sendmail m4
有結果顯示證明已經安裝了必要的軟體,沒有顯示請使用yum install sendmail 命令進行安裝(可以上網的情況下)或者利用系統盤進行安裝(有光碟的話,iso文件也可以)
(2)安裝關聯的套件
sendmail-dev, sendmai-doc  sendmail-cf
推薦使用yum 安裝(yum install sendmai*或者掛載光碟進行安裝 rpm -ivh sendmail-*)關於yum的使用,歡迎閱讀我轉載的yum基本使用:http://zm177cm.blog.163.com/blog/static/114612382007102045940710
(3)安裝成功以後
vi /etc/mail/local-host-names         打開這個文件      然後在裡面加入你想發郵件的時候用到的域名(可以是虛擬的,但不推薦使用現存 的,有侵權的嫌疑~ 也容易發生錯誤) 例如
# cat /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
ltest.com

test.com就是你想要填的~~~
(4)重建sendmail.cf
sendmail.cf是sendmail的配置文件,通過修改sendmail.mc文件進行修改,

DaemonPortsOptions=Port=smtp,Addr=127.0.0.1, Name=MTA 更改為:
DaemonPortsOptions=Port=smtp,Addr=yourip或者0.0.0.0, Name=MTA
或者把這一行用dnl註釋掉(就是在這一行前面加入dnl  然後空格  dnl的意思,按照linux系統管理手冊的解釋就是delete to next lin的意思 有位仁兄解釋為 do not load 看上去也正確,倒是是那個意思我就不管了,明白意思就好了)

然後m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf(重建sendmail.cf或者可以先備份,各人喜歡~~)
(5)修改用戶認證
還是上面那個文件vi /etc/mail/sendmail.mc 進入到裡面以後找到
48行 dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
49行 dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
#刪掉上面兩行前面的 dnl
#注意:TRUST_AUTH_METH、define 前面不要留有空格
112行 dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
#前面加上 dnl, 把這行註解起來(dnl = do not load)

#或改成下面這樣也可以

DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
註:上面修改用戶認證這一段是引用我轉載的一篇文章的:
(6)修改埠
  dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
  去掉行首的註釋符,並且將內容修改成Port=25:
  DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
  在smtp的默認埠(25)上進行認證,而不是587埠。這樣就強制所有使用該郵件伺服器(就是我們現在架設的這個伺服器)進行郵件轉發的用戶在認證后才能發郵件了。

再次運行m4程序 
 # m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
  用m4重新生成sendmail.cf文件
(7)添加郵件用戶
建立用戶帳號
# groupadd mailuser
# adduser -g mailuser -s /sbin/nologin mike
# adduser -g mailuser -s /sbin/nologin john
# passwd mike
# passwd john 密碼由你自己喜歡 用戶也隨你喜歡添加幾個(這一段引用另一篇轉載的文章)
(8)訪問控制
5,訪問控制設置
更改/etc/mail/accesss文件,增加:
# cat /etc/mail/access
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
ltest.com RELAY(這個就是你自己填到local-host-names裡面的名字,一定要寫[其實我也不肯定,不過我是寫了 因為我最近時間比較緊迫,沒有進行驗證,希望看了的朋友幫忙驗證一下])
完成後makemap hash /etc/mail/access.db < /etc/mail/access進行資料庫更新。
(9)重啟服務
# service sendmail restart
看到
關閉 sm-client:                                           [確定]
關閉 sendmail:                                            [確定]
啟動 sendmail:                                            [確定]
啟動 sm-client:                                           [確定]
就正確了(後面兩個是確定就可以了,因為如果服務還沒有啟動 的華 關閉服務會事失敗的)
(10)測試伺服器
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.1/8.13.1; Sat, 17 Mar 2007 12:54:47 +0800
ehlo localhost(用戶輸入)
250-localhost.localdomain Hello localhost.localdomain , pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN ---認證應該生效
250-DELIVERBY
250 HELP
quit(用戶輸入 退出telnet)
221 2.0.0 localhost.localdomain closing connection
Connection closed by foreign host.

看見這些信息就代表成功了
然後就可以使用php的郵件類(網上很多,不好意思,沒辦法傳上來,或者有需要的話,過些時候我會把我用的粘貼上來)在server(郵件伺服器這個變數)填上"localhost" 用戶郵箱(本伺服器[剛弄好這個])就填剛剛添加上去的用戶名+在local-host-names填上的域名就可以在收件人那裡顯示了(儘管可能是虛擬的)例如mike@test.com 密碼就是剛剛用戶的密碼(這是需要驗證的smtp郵件程序) port就是25這樣你就可以用你剛剛架好的這台伺服器進行郵件的發送了!!


希望我說得明白,如果大家有什麼不明白的話歡迎留言或者給我些email。我自己弄這個郵件伺服器弄了一個多星期,可以說算是很失敗的了,沒辦法,我基礎不紮實,有被逼著幫人家做網站,只好這樣邊學邊摸索了,網上很多文章都有說在linux裡面架設伺服器,但是就是沒教我們怎麼用伺服器(可能他們覺得不用說吧!!~又或者只是我太笨了,嗚嗚嗚嗚~~~~)為什麼有些地方我要特別提一下呢?因為那些地方正是使用php發送郵件顯示出來的不足的地方:(1)使用mail()函數發送郵件的話,是很簡單,問題是收件人顯示是nobody這樣經過上面在local-host-name以及/etc/mail/accesss 裡面的設定就可以解決這個問題了!!還有這樣就不用利用雅虎或者其他的伺服器做中轉站發郵件了(雖然沒問題,關於方法我有轉載,有興趣了解的歡迎瀏覽)我為什麼一定要把自己的電腦作伺服器呢?? 呵呵 說白了 很簡單 ,就是客戶要求!~沒辦法,他要怎樣就怎樣咯~就好像他要用ubutun做伺服器一樣(個人感覺不大好,不過我沒有深入了解過,知道的朋友也歡迎告訴我一聲 ^ _^  很樂意了解!!)

以上文章是綜合一下文章加入一點看法和經驗組成的,有任何疑問及錯誤,歡迎提出
http://zm177cm.blog.163.com/blog/static/114612382007102423411289/
http://zm177cm.blog.163.com/blog/static/11461238200710242324037/
http://zm177cm.blog.163.com/blog/static/114612382007102405129803/
都是我轉載回來的,原文在下面有註明

[火星人 ] Fedora 6架設Sendmail郵件伺服器解決發件人Nobody問題已經有509次圍觀

http://coctec.com/docs/service/show-post-34086.html