配置mail使用SMTP發送郵件

來源:本站原創 IT必備工具 超過388 views圍觀 0條評論

# QQ郵箱支持STARTTLS,使用587端口 account qq { set smtp=smtp://smtp.qq.com:587 set smtp-auth=login set [email protected] set smtp-auth-password=password set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb set from="[email protected](nickname)" set smtp-use-starttls=yes }

配置文檔中定義了兩個賬戶,發送郵件時可用-A參數指定發信賬戶:

echo 'mail test for 126' | mail -A 126 -s 'mail test' [email protected]
echo 'mail test for qq' | mail -A qq -s 'mail test' [email protected]

除了配置文檔,也可以在命令行中用-S參數進行設置。例如:

echo 'mail test for command line option' | mail -s 'mail test' -S smtp=smtp://smtp.qq.com:587 -S smtp-auth=login -S [email protected] -S smtp-auth-password=password -S ssl-verify=ignore -S nss-config-dir=/etc/pki/nssdb -S from="[email protected](nickname)" -S smtp-use-starttls=yes [email protected]

這種方法比較繁瑣,就是將配置文檔的每一行都作為選項寫在命令中。在進程中調用 mail 命令發送郵件時可以採取這種方法。

解決警告

雖然郵件能順利發送,但每次運行都會出現一行警告:“Error in certificate: Peer’s certificate issuer is not recognized.”。這是由於使用加密通信,但客戶端不能確認證書是否真實。如果我們將配置中的 set ssl-verify=ignore 改成 set ssl-verify=strict ,連接將直接中斷而不會繼續發郵件。

要解決這個警告,需要將郵件服務器的證書加入到信任列表。操作步驟如下:

  1. 獲取郵件服務器證書:
# 465端口
echo -n "" | openssl s_client -connect smtp.xxx.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > xxx.crt

# 587端口
echo -n | openssl s_client -starttls smtp -connect smtp.xxx.com:587 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > xxx.crt

# 也可以直接在瀏覽器上打開網頁版,保存證書為PEM(base64格式)格式然後上傳到服務器
  1. 將證書添加到受信任列表:
certutil -A -n 'xxxx' -t "P,P,P" -d . -i ./xxx.crt

上述命令中-A表示添加,-n是nickname,可以隨意取,例如126或qq;-t表示受信任的標籤,可取值是t/c/p三種或者其組合;-d表示證書所在目錄,-i指示證書文檔的位置。

  1. 在配置文檔中更改證書目錄:
# 指向證書文檔目錄
set nss-config-dir=/path/to/cert-dir

網上許多教程的-t標籤都是 "C,," ,實踐中發現使用該標籤仍會報錯(gmail的證書是google自己簽發的,用C標籤沒問題,許多博主估計沒試就直接抄來)。通過查閲 certutil 的用法,使用P標籤順利解決問題。

配置完成後,再使用 mail 命令發送郵件,煩人的警告消失不見。

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=3983轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
?
?
萌宠夺宝游戏