當需要服務器定時發送郵件到自己郵箱時,一個郵件服務就很重要了,以下主要是mailx的實現,主要是利用
1.安裝mailx
yum install mailx -y
2.使用到的配置文件只有一個,是/etc/mail.rc,通過修改配置文件/etc/mail.rc可以使用外部SMTP服務器,輕松實現linux發郵件功能。
set from=xxxx@qq.com qq郵箱或者其他郵箱 set smtp=smtp.qq.com smtp地址 set smtp-auth-user=xxx@qq.com set smtp-auth-password=nibpgbkksmlbbabe 注意:目前大部分的外部郵件服務使用第三方客戶端時,都需要使用授權碼,上面的smtp-auth-password使用的就是授權碼,而不是郵件帳號的密碼。具體操作在最后有附圖
到目前為止,如果不是雲主機的話,已經可以實現發送郵件了。若是雲主機,則需要下面的操作
一、配置mailx使用SMTP發送郵件:
1、安裝mailx;這里直接使用yum install mailx -y 進行安裝即可;
2、在/etc/mail.rc配置文件中,在最后面輸入以下內容:
set from="xxx@126.com"
set smtp=smtp.126.com
set smtp-auth-user=xxx
set smtp-auth-password=郵箱密碼
set smtp-auth=login
配置都很簡單,這里就不多說了,有兩點需要注意的:
1、郵箱需要開啟SMTP功能,每個郵箱的開啟方法都大同小異;
2、現在大部分郵箱使用SMTP會讓你啟動一個授權碼來代替郵箱密碼
具體各個郵箱開啟授權碼的方式可以直接百度;
測試是否發送成功:
mailx -s "郵箱測試" xxxx@qq.com < message_file 測試郵件一旦成功,收件箱會馬上收到郵件,如果沒有收到,則等一會可以看到shell界面的錯誤提示; 上面配置的是簡單的使用25端口的SMTP發送郵件的功能,一般情況下我們使用這個就足夠了,這個辦法 在網上也很多配置說明,這里就不再浪費時間了,下面我們講重點,使用TSL發送郵件; 前面說了,阿里雲把25端口封了,去申請解封也比較麻煩,於是就想到了用TSL方式,繞過25端口發送郵件; TSL也就是使用SSL加密的方式,使用465或者其他端口來發送郵件,現在大部分郵箱都支持SSL,具體SSL的端口 地址,也可以查百度,這里是以126郵箱為准,126郵箱使用的是465或者994端口; 下面是詳細的配置過程: 1、軟件要求:openssl、mailx 12.0以上; 2、既然使用的是SSL協議,那當然是要有證書的了,下面是獲取證書的操作;
mkdir -p /root/.certs/ echo -n | openssl s_client -connect smtp.126.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt certutil -L -d /root/.certs
若需要qq的ssl 只需把第二條命令中的smtp.xxx.com:465 給替換了就行
按照上面操作,只要不報錯,就是正常的,我們會在/root/.certs下面看到幾個證書文件,說明操作成功了;至於為什么
要這么做,不要問我,我也是COPY大神的辦法;有興趣的可以參考最后大神的文章鏈接;
3、證書配置好了,下面我們就要來配置mail.rc配置文件了,和最開始的不同,這里我們就需要配置和TSL相關的東西了
set from=xxxooo@126.com set smtp=smtps://smtp.126.com:465 set smtp-auth-user=xxxooo@126.com set smtp-auth-password=你的授權碼 set smtp-auth=login set ssl-verify=ignore set nss-config-dir=/root/.certs
其實就多了幾個配置stmp前面加了stmps://指定協議類型,后面加上端口號;
啟動ssl協議 ,下面指定ssl證書所在目錄,就這樣。
配置OK了之后,測試發送郵件;
測試能收到郵件就OK,說明發送沒問題,至於具體會出現什么報錯,可以根據報錯的內容進行谷歌;
我這里在發送郵件的時候會提示一個證書不信任的問題,因為不影響正常發送郵件,所以選擇忽略;
證書不信任的問題,需要進入存放證書的目錄,執行
cd /root/.certs
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
最后顯示 Notice: Trust flag u is set automatically if the private key is present.
后面雲主機實現方法 轉載自笛聲
使用三種方式發送郵件
- 命令行:
mail -s "theme" addressee
,回車后輸入內容按Ctrl+D
發送郵件. - 管道符:
echo "mail main content" | mail -s "theme" addressee
- 文件內容作為郵件內容:
mail -s "theme" addressee < /tmp/t.txt
thme是郵件標題,addressee收件人地址
qq郵箱開啟smtp
163郵箱