1. 程式人生 > ># 阿裏雲ECS通過mail發送郵件

# 阿裏雲ECS通過mail發送郵件

not geo Opens one rmi htm 阿裏雲 mod smtp服務

參考博文

面對疾風

因為阿裏雲默認將目的端口為TCP25的出現流量屏蔽了,所以改用465 ssl端口發送郵件。

yum安裝mailx

[Allen@iZm5eh331inajbk110g28mZ ~]$ yum install -y mailx
##yum安裝完mailx之後,/etc下會自動創建一個mail.rc的文件,在最下面追加如下內容即可。
[Allen@iZm5eh331inajbk110g28mZ ~]$ vim /etc/mail.rc

##對方收到郵件時顯示的發件人
set [email protected]

##指定第三方發郵件的smtp服務器地址
set smtp=smtps://smtp.163.com:465

##第三方發郵件的用戶名
set smtp-auth-user=183xxxx2118

##郵箱的密碼或授權碼(163郵箱需要指定授權碼)
set smtp-auth-password=xxxxxx

##SMTP的認證方式,默認是login
set smtp-auth=login

##忽略ssl的檢查
set ssl-verify=ignore

##指定證書所在的目錄
set nss-config-dir=/home/Allen/.certs

##此時直接發郵件會提示證書不被承認
[Allen@iZm5eh331inajbk110g28mZ ~]$ echo test | mail -s test [email protected]
[Allen@iZm5eh331inajbk110g28mZ ~]$ Error in certificate: Peer‘s certificate issuer is not recognized.
smtp-server: 454 Command not permitted when TLS active
"/home/Allen/dead.letter" 11/301
. . . message not sent.

##創建目錄,用來存放證書
[Allen@iZm5eh331inajbk110g28mZ ~]$ mkdir -p /home/Allen/.certs/

##向163申請證書
[Allen@iZm5eh331inajbk110g28mZ ~]$ echo -n | openssl s_client -connect smtp.163.com:465  | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p‘ > ~/.certs/163.crt
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = GeoTrust Inc., CN = GeoTrust SSL CA - G3
verify return:1
depth=0 C = CN, ST = ZheJiang, L = HangZhou, O = "NetEase (Hangzhou) Network Co., Ltd", CN = *.163.com
verify return:1
DONE

##添加一個證書到證書數據庫
[Allen@iZm5eh331inajbk110g28mZ ~]$  certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt 

##添加一個證書到證書數據庫
[Allen@iZm5eh331inajbk110g28mZ ~]$ certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt 

##列出目錄下的證書
[Allen@iZm5eh331inajbk110g28mZ ~]$ certutil -L -d /home/Allen/.certs/

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

GeoTrust SSL CA                                              C,,  

[Allen@iZm5eh331inajbk110g28mZ ~]$ ls /home/Allen/.certs/
163.crt    cert8.db   key3.db    secmod.db  

##此時發送郵件還會報錯,因為證書不被承認
[Allen@iZm5eh331inajbk110g28mZ ~]$ echo "test" | mail -s test [email protected]
[Allen@iZm5eh331inajbk110g28mZ ~]$ Error in certificate: Peer‘s certificate issuer is not recognized.
smtp-server: 454 Command not permitted when TLS active
"/home/Allen/dead.letter" 11/301
. . . message not sent.

##標記為信任
[Allen@iZm5eh331inajbk110g28mZ ~]$ cd .certs/
[Allen@iZm5eh331inajbk110g28mZ .certs]$ certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt 
Notice: Trust flag u is set automatically if the private key is present.

##沒有報錯解決問題
[Allen@iZm5eh331inajbk110g28mZ .certs]$ echo "test" | mail -s test [email protected]

普通服務器配置mailx發送郵件場景

[Allen@localhost ~]$ yum install -y mailx
[Allen@localhost ~]$ vim /etc/mail.rc
set [email protected]
set smtp=smtp.163.com
set smtp-auth-user=18310892118
set smtp-auth-password=0817LTBbtl
set smtp-auth=login

[Allen@localhost ~]$ echo test | mail -s test [email protected]

# 阿裏雲ECS通過mail發送郵件