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問題 已經有510 次圍觀
本文地址: http://coctec.com/docs/service/show-post-34086.html