標籤:

linux下使用sendmail發郵件,郵箱收不到的解決辦法

我使用的操作系統是CentOS6.8,就是想實現簡單的發送郵件功能,在按網友的方法安裝好sendmail後,發送郵件並不成功,後來參考幾個人的方案,獲得成功,現分享如下:

1.安裝sendmail

[root@202 ~]# yum -y install sendmailn

2.啟動sendmail服務

[root@202 ~]# /etc/init.d/sendmail startn

3.測試發送郵件

[root@202 ~]# touch body.txt n[root@202 ~]# echo This is test mail>body.txtn[root@202 ~]# mail -s Test mail yourmail@163.com < body.txtn

4.如果不成功,看一下日誌

[root@202 ~]# tail -f /var/log/maillogn

發現服務不可達,網路是暢通的,什麼原因呢?

仔細觀察了一下,原來是這樣:

5.查看hosts文件

[root@202 ~]# vi /etc/hosts

127.0.0.1 localhost.localdomain localhost.localdomain localhost4 localhost4.localdomain4 locanlhost mobann::1 localhost.localdomain localhost.localdomain localhost6 localhost6.localdomain6 localhostn mobann

原來我的虛擬機複製完成後,所有配置改了,但是hosts文件沒有修改。

修改為

127.0.0.1 localhost.localdomain localhost.localdomain localhost4 localhost4.localdomain4 locanlhost 203n::1 localhost.localdomain localhost.localdomain localhost6 localhost6.localdomain6 localhostn 203n

之後重啟網卡

[root@202 ~]# /etc/init.d/network restart n

嘗試修改成正確的機器名202以後,發送郵件成功。經過反覆測試,關鍵是localhost.localdomain這一項,可以反覆嘗試刪除增加它,最後的機器名也很重要

後來發現上邊的方法發送郵件不穩定,經常被163郵件認為是垃圾郵件攔截了,日誌里是這樣顯示的:

Jan 12 13:21:56 201 sendmail[1574]: v0C5LqFu001569: to=<lilyef2000@163.com>, ctladdr=<antenna@localhost.localdomain> (500/500), delay=00:00:03, xdelay=00:00:03, mailer=esmtp, pri=120488, relay=163mx02.mxmail.netease.com. [220.181.14.147], dsn=5.0.0, stat=Service unavailablen

後來我又從網上查到這樣一種方法,不需要安裝sendmail服務,只需要配置一下客戶端的配置文件,直接用mail命令使用外部的smtp來發送郵件。

配置步驟:

1.配置163郵箱開啟smtp服務,並設置授權碼,記住授權碼,一會兒發送郵件的密碼要用這個

2.配置CentOS6.8,刪除sendmail(用不上了,如果要配置郵件伺服器的話可以留著)

[root@201 ~]# rpm -qa sendmailnsendmail-8.14.4-9.el6_8.1.x86_64n[root@201 ~]# rpm -e --nodeps sendmail n#只刪除sendmail本身,依賴包不刪,防止出問題n

3.配置外發郵件伺服器,在配置文件最後加入如下內容

[root@201 ~]# vi /etc/mail.rcnset from=thinkpadcentos@163.com nset smtp=smtp.163.comnset smtp-auth-user=thinkpadcentos nset smtp-auth-password=郵箱密碼 nset smtp-auth=loginn

說明:

from是發送郵件的地址 注意要與smtp-auth-user一致,否則可能出錯

smtp是發生的外部smtp伺服器的地址

smtp-auth-user是外部smtp伺服器認證的用戶名

smtp-auth-password是外部smtp伺服器認證的用戶密碼

smtp-auth是郵件認證的方式

發送測試郵件:

[root@201 ~]# touch testmail.txtn[root@201 ~]# echo This is test mail>testmail.txtn[root@201 ~]# mail -s Test mail yourmailbox@163.com < testmail.txtn

檢查郵箱接收情況,發現即使連續發送,也不會被認為是垃圾郵件,這應該是最好的方法,需要注意的是先要在公網上註冊一個郵件地址。

以後有時間再研究一下如何配置郵件伺服器。


推薦閱讀:

國內有沒有好點的郵件代發商?

TAG:Mail | CentOS |