linux利用mail和sendmail發送郵件

郵件發送原理圖

在這裏插入圖片描述

MUA:Mail User Agent,郵件用戶代理,用來編寫,收發郵件
MTA:Mail Transfer Agent,郵件傳輸代理,將郵件傳輸到正確目的地
MDA:Mail Delivery Agent,郵件分發代理,將郵件分發到正確目的用戶

以一個例子來說明上面的關係。假如A用戶使用的是QQ郵箱,B用戶使用的是163郵箱,A要向B發送一封郵件。流程如下:

1、A用戶通過MUA編寫好郵件,併發送
2、該郵件通過MTA,首先發送到QQ郵件服務器
3、QQ郵件服務器分析到目的郵箱地址是163,所以再通過MTA傳送到163郵件服務器
4、163郵件服務器收到該郵件
5、由於使用163郵箱的用戶有很多,再通過MDA把該郵件發送到正確的用戶
6、B用戶通過MUA就可以查看A用戶發送的郵件。

使用mail和sendmail發送郵件

1、安裝mail和sendmail

yum install -y mailx sendmail
# mail是mailx的別名,mail是MUA,sendmail是MTA

2、配置mail

mail系統及配置文件爲/etc/mail.rc,用戶級配置文件爲~/.mailrc。這裏使用全局配置文件,在/etc/mail.rc文件最後添加如下內容:

set smtp=smtps://smtp.xxx.com:465   # 這裏填入smtp地址,這裏的xxx爲qq或者163等,如果用的雲服務器,安全組策略要開放465端口
set smtp-auth=login                 # 認證方式
set [email protected]     # 這裏輸入郵箱賬號
set smtp-auth-password=password     # 這裏填入密碼,這裏是授權碼而不是郵箱密碼
set ssl-verify=ignore               # 忽略證書警告
set nss-config-dir=/etc/pki/nssdb   # 證書所在目錄
set [email protected]               # 設置發信人郵箱和暱稱

3、啓動sendmail

systemctl start sendmail

4、通過mail命令發送郵件

echo '郵件內容' | mail -s '郵件標題' 收件人郵箱
或
mail -s '郵件標題' 收件人郵箱 < 郵件內容.txt

5、解決警告

雖讓能正確發送郵件,但是每次都會出現如下警告:
Error in certificate: Peer's certificate issuer is not recognized.
這是由於使用加密通信,但客戶端不能確認證書是否真實。

解決方法如下:
1、獲取郵件服務器證書:
echo -n "" | openssl s_client -connect smtp.xxx.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/pki/nssdb/xxx.crt
2、將證書添加到受信任列表:
certutil -A -n 'xxxx' -t "P,P,P" -d . -i /etc/pki/nssdb/xxx.crt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章