sendmail相關文件解釋和配置文件詳解:http://zhumeng8337797.blog.163.com/blog/static/100768914201161312010697/
sendmail故障:http://www.gongzi.org/centos-mail-nosendmail.html
sendmail替換postfix:http://www.gongzi.org/centos-install-postfix-sendmail.html
Sendmail服務配置-基礎篇
1.Sendmail服務軟件包 sendmail-8.13.8-2.el5.i386.rpm:sendmail服務的主程序包,服務器端必須安裝該軟件包。
sendmail-cf-8.13.8-2.el5.i386.rpm:sendmail宏文件包
sendmail-devel-8.13.8-2.el5.i386.rpm:sendmail服務器開發工具軟件包
sendmail-doc-8.13.8-2.el5.i386.rpm:sendmail服務器的說明文檔
m4-1.4.5-3.el5.1.i386.rpm:宏處理過慮軟件包
dovecot-1.0-1.2.rc15.el5.i386.rpm:接收郵件軟件包,安裝時需要注意安裝順序
2. Sendmail相關配置文檔
sendmail.cf:sendmail核心配置文件,位於/etc/mail/sendmail/sendmail.cf
sendmail.mc:sendmail提供sendmail文件模板,通過編輯此文件后再使用m4工具將結果導入sendmail.cf完成配置sendmail核心配置文件,降低配置復雜度,位於/etc/mail/sendmail.mc
local-host-name:定義收發郵件服務器的域名和主機別名,位於/etc/mail/local-host-name
access.db:用來設置sendmail服務器為哪些主機進行轉發郵件,位於/etc/mail/access.db
aliases.db:用來定義郵箱別名,位於/etc/mail/aliases.db
virtusertable.db:用來設置虛擬賬戶,位於/etc/mail/virtusertable.db
3.郵件功能組件
MUA:郵件用戶代理(Mail User Agent)
MTA:郵件傳輸代理(Mail Transfer Agent)
MDA:郵件遞送代理(Mail Delivery Agent)
4.Sendmail常規服務器配置搭建Sendmail服務器流程:
(1)配置sendmail.mc文件
(2)使用m4工具將sendmail.mc文件導入sendmail.cf文件
(3)配置local-host-names文件
(4)建立用戶帳號
(5)重新啟動服務使配置生效
5.具體步驟為:
#yum install sendmail-* //安裝sendmail相應的包,至於每個包是做什么的,前面介紹過
#yum install m4* //安裝宏處理過慮軟件包 快速配置sendmail的工具
#vi /etc/mail/sendmail.mc //編輯配置文件 將偵聽范圍從127.0.0.1改為0.0.0.0;將本地改為你郵件服務器所使用的域 LOCAL_DOMAIN(`example.com')dnl
#cd /etc/mail //進到/etc/mail目錄下
#make //使用m4命令將sendmail.mc導入到sendmail.cf這個主配置文件中 這個命令相當於 m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf #vi /etc/mail/local-host-names //修改local-host-names文件添加域名及主機名,添加你服務器的域名,或者完全的主機名,如station133.exameple.com example.com ============== 這樣你的sendmail服務已經好了,當然此時還沒有打開pop服務。
6.安裝pop服務
#yum install dovecot-* //這樣你的pop服務器就已經安裝好了 而IMAP協議也繼承在這個包里
7.啟動sendmail相應的服務
#service sendmail restart
#service dovecot restart
#chkconfig senmdial on
#chkconfig dovecot on
8.測試和驗證
#netstat -nltp | grep "25"
#netstat -nltp | grep "110"
#telnet 192.168.76.133 25
ehlo station133.example.com
#telnet 192.168.76.133 110 如果沒有什么錯誤,就表示你的sendmail已經建好了
9.新建用戶mailuser 然后在客戶端進行收發郵件的測試,由於這里沒有使用DNS,所以mail只能在example里進行!
php的mail()函數發郵件問題:
在ubuntu下的lamp環境中,用php內置函數mail()發送郵件竟然一直false。查看php.ini配置文件,配置如下:
SMTP = localhost smtp_port = 25 sendmail_from = pklim101@163.com
都沒有錯。然后通過查資料發現少安裝了sendmail。於是直接:
apt-get install sendmail
然后執行如下代碼的php文件:
<?php $a = mail("eyujiao@163.com","My subject","this is the email content!"); var_dump($a); ?>
打印出來為true,說明發送成功了。但是在郵箱沒收到,仔細查看是被過濾到垃圾箱了。
ubuntu系統發郵件問題:
如果直接mail -s My subject eyujiao@163.com就會提示mail函數未安裝,請安裝apt-get install mailutils
apt-get install mailutils
此刻執行命令:
root@ubuntu:/home/administrator# mail -s test eyujiao@163.com Cc: pklim101@163.com hello,i'm hobart! haha end!
然后Ctrl+D結束郵件,即發送完畢。在郵箱即可查看到郵件。(其中test是郵箱標題,Cc下面是郵件內容。)
按下Ctrl+D 鍵或. 鍵結束正文。
連按兩次Ctrl+C鍵則中斷工作,不送此信件
Centos環境下:
問題一:
sendmail:554 5.0.0 No local mailer defined
554 5.0.0 QueueDirectory (Q) option must be set
解決:yum install sendmail-cf
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf(先備份sendmail.cf,修改sendmail.mc中的127.0.0.1為0.0.0.0后,用m4生成sendmail.cf這個配置文件)
問題二:unable to qualify my own domain name (hostname) -- using short name
解決:vi /etc/hosts,將主機名進行hosts綁定。
問題三:Sender address rejected: Domain not found
解決:(剛才又試了下,似乎以下的不用修改,只需要講hostname綁定到hosts里就行:127.0.0.1 localhsot)
1.修改主機名為localhost;
2.vi /etc/mail/sendmail.mc,修改LOCAL_DOMAIN('localhost')dnl;
3.在local-host-names里增加一行:localhost.
問題四:用php代碼發送郵件,頁面相應很慢很慢。
解決:直接用命令修改hostname,然后把hostname加進/etc/hosts,依然很慢。而將hostname顯示的臨時主機名改為/etc/sysconfig/network里的HOSTNAME的值一致,重啟/etc/init.d/network restart,service sendmail restart。即可。飛一樣的快。
問題五:去掉“由xxx代發”的字樣。
解決:
在php.ini里面找到sendmail_path = /usr/sbin/sendmail -t -i
改成sendmail_path = /usr/sbin/sendmail -t -i -f someone@ccboys.com
問題六:stat=Deferred: Connection timed out with [127.0.0.1]
解決:防火牆放行郵件端口
-A INPUT -p tcp -m multiport --dports 25,110 -j ACCEPT
