sendmail是Linux下優秀的郵件系統。在不作任何設定的狀況下,sendmail發出郵件的郵箱源地址形如userid@localhost.localdo,這種地址幾乎會被全部的郵箱認定爲SPAM(垃圾郵件)或直接拒收。html
一、 Sendmail安裝linux
在CentOS下,sendmail通常默認是隨操做系統一塊兒安裝的。若是安裝系統時沒有安裝sendmail服務,手動安裝sendmail也很簡單:數據庫
- # yum install -y sendmail
- # yum install -y sendmail-cf
二、 Senmail的SMTP認證配置(不須要認證的可忽略此步)服務器
首先確認saslauthd服務是否安裝或啓動。網絡
安裝saslauthd服務:# yum install -y saslauthddom
啓動saslauthd服務:# service saslauthd start工具
(1) 配置Senmail的SMTP認證spa
# vi /etc/mail/sendmail.mc操作系統
- dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
- dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
將上面兩行的dnl去掉。在sendmail文件中,dnl表示該行爲註釋行,是無效的,所以經過去除行首的dnl字符串能夠開啓相應的設置行。code
(2) 設置Sendmail服務的網絡訪問權限
# vi /etc/mail/sendmail.mc
- DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
將127.0.0.1改成0.0.0.0,意思是任何主機均可以訪問Sendmail服務。若是僅讓某一個網段可以訪問到Sendmail服務,將127.0.0.1改成形如192.168.1.0/24的一個特定網段地址。
三、 生成Sendmail配置文件
Sendmail的配置文件由m4來生成,m4工具在sendmail-cf包中。若是系統沒法識別m4命令,說明sendmail-cf軟件包沒有安裝。
生成Sendmail的配置文件:
- m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
須要重啓Sendmail才能使配置文件生效。
四、 Sendmail郵件域名配置
配置sendmail使用合法的域名分兩步,修改sendmail的配置文件和添加域名MX記錄。
sendmail能夠直接使用 「-r account@domain.com」 參數來以任意源地址發送郵件,但目前主流的郵箱都會將源地址和反向解析IP進行比較,若是解析不到或是解析的IP不匹配,輕則將郵件直接歸爲SPAM,嚴重的就直接拒絕接收。
MX記錄(Mail Exchanger Record)主要是接收郵件時使用,即當投遞一封新郵件時,會查詢收件人域名的MX記錄,而後經過MX記錄獲得的IP地址進行投遞。同時郵件廠商在接收郵件的時候也會將源地址和MX記錄進行比較,做爲垃圾郵件的判斷標準之一。
第一步:添加域名
(1) 將域名加入到local-host-names文件
# vi /etc/mail/local-host-names,添加
- sunchis.com
(2) 修改submit.cf文件
# vi /etc/mail/submit.cf,找到行 #Dj$w.Foo.COM,修改成
- Djsunchis.com
至此,sendmail郵件命名配置完畢,重啓sendmail使配置生效。
第二步:添加域名MX記錄
找到修改域名信息的頁面(不一樣的域名註冊商頁面不相同),修改結果因域名商的不一樣最遲會在24小時內生效。
(1) 添加域名A記錄mail,直接指向你的郵件服務器的靜態IP地址:
(2) 添加(或是修改)域名的MX記錄,形如:
(3) 使用nslookup檢測MX記錄是否能正確解析到郵件服務器
- # nslookup
- > set q=mx
- > sunchis.com
- Server: 8.8.8.8
- Address: 8.8.8.8#53
- Non-authoritative answer:
- sunchis.com mail exchanger = 10 mail.sunchis.com.
- Authoritative answers can be found from:
- >
OK,已經正確解析到郵件服務器所對應的域名。
五、 Relaying denied(拒絕投遞)的解決
出現 550 5.7.1 <xxx@163.com>... Relaying denied. IP name lookup failed [192.168.1.133] 異常時,緣由是把sendmail當作郵件中轉站,須要將客戶端的IP地址加入到access配置文件中。
# vi /etc/mail/access,添加
- Connect:192.168.1.133 RELAY
從新生成訪問權限的數據庫:
- # cd /etc/mail/
- # makemap hash access.db < access
這樣,問題就會獲得解決。