Linux使用mailx傳送郵件--技術流ken
前言
最近想要監控系統服務執行情況並實現自動傳送郵件報警,zabbix雖然也可以實現這樣的功能,但是這裡使用一個非常簡單的辦法就可以實現。需要安裝mailx工具,mailx是一個小型的郵件傳送程式。
安裝步驟
第一步:安裝mailx
[[email protected] ~]# yum install mailx -y
第二步:編輯配置檔案
在mail.rc這個配置檔案中,在末行新增如下的內容
[[email protected]~]# vim /etc/mail.rc set from="[email protected]" #這個和第三行郵箱地址需要保持一致 set smtp="smtp.qq.com" set smtp-auth-user="[email protected]" set smtp-auth-password="xxxxxx" #郵箱授權碼 set smtp-auth="login"
說明
from:對方收到郵件時顯示的發件人
smtp:指定第三方發郵件的smtp伺服器地址
set smtp-auth-user:第三方發郵件的使用者名稱
set smtp-auth-password:使用者名稱對應的密碼,有些郵箱填的是授權碼
smtp-auth:SMTP的認證方式,預設是login,也可以改成CRAM-MD5或PLAIN方式
授權碼獲取
第一步:授權碼獲取
登入qq郵箱,點選設定>賬戶
點選生成授權碼即可
測試
這句命令的後面的[email protected]是收件地址
[[email protected] ~]# echo "這是一封測試郵件" | mail -s "測試郵件" 1614833188@qq.com
以上已經實現了發郵件功能!!!
郵件傳送書寫格式
1) 無郵件正文
mail -s "主題" 收件地址
例項: mail -s "測試" [email protected]
2) 有郵件正文
- mail -s "主題" 收件地址< 檔案(郵件正文.txt)
例項: mail -s "郵件主題" [email protected] < /data.txt
- echo "郵件正文" | mail -s 郵件主題 收件地址
例項: echo "郵件正文內容" | mail -s "郵件主題" [email protected]
- cat 郵件正文.txt | mail -s 郵件主題 收件地址
例項: cat /data.txt | mail -s "郵件主題" [email protected]
3) 帶附件
- echo "郵件正文" | mail -s "主題" -a 附件 收件地址
例項: echo "郵件正文" | mail -s "郵件主題" -a /etc/passwd [email protected]
實戰案例
需求:
1. 檢測本機web服務
2. 如果web服務宕機發送郵件報警通知管理員
第一步:編輯檢測指令碼
#!/bin/bash while true do num=`ss -tl | grep -c http` if [ $num -eq 0 ];then echo "web服務宕機,請立即檢查修復!" | mail -s "web服務宕機" 1614833188@qq.com break fi done
第二步:後臺執行指令碼
[[email protected] ~]# nohup bash test.sh & [1] 6643 [[email protected] ~]# jobs [1]+ Running nohup bash test.sh &
第三步:模擬web服務宕機
[[email protected] ~]# systemctl stop httpd
第四步:檢查郵件
最近想要監控系統服務執行情況並實現自動傳送郵件報警,zabbix雖然也可以實現這樣的功能,但是這裡使用一個非常簡單的辦法就可以實現。需要安裝mailx工具,mailx是一個小型的郵件傳送程式。
安裝步驟
第一步:安裝mailx
[[email protected] ~]# yum install mailx -y
第二步:編輯配置檔案
在mail.rc這個配置檔案中,在末行新增如下的內容
[[email protected] ~]# vim /etc/mail.rc set from="[email protected]" #這個和第三行郵箱地址需要保持一致 set smtp="smtp.qq.com" set smtp-auth-user="[email protected]" set smtp-auth-password="xxxxxx" #郵箱授權碼 set smtp-auth="login"
說明
from:對方收到郵件時顯示的發件人
smtp:指定第三方發郵件的smtp伺服器地址
set smtp-auth-user:第三方發郵件的使用者名稱
set smtp-auth-password:使用者名稱對應的密碼,有些郵箱填的是授權碼
smtp-auth:SMTP的認證方式,預設是login,也可以改成CRAM-MD5或PLAIN方式
授權碼獲取
第一步:授權碼獲取
登入qq郵箱,點選設定>賬戶
點選生成授權碼即可
測試
這句命令的後面的[email protected]是收件地址
[[email protected] ~]# echo "這是一封測試郵件" | mail -s "測試郵件" 1614833188@qq.com
以上已經實現了發郵件功能!!!
郵件傳送書寫格式
1) 無郵件正文
mail -s "主題" 收件地址
例項: mail -s "測試" [email protected]
2) 有郵件正文
- mail -s "主題" 收件地址< 檔案(郵件正文.txt)
例項: mail -s "郵件主題" [email protected] < /data.txt
- echo "郵件正文" | mail -s 郵件主題 收件地址
例項: echo "郵件正文內容" | mail -s "郵件主題" [email protected]
- cat 郵件正文.txt | mail -s 郵件主題 收件地址
例項: cat /data.txt | mail -s "郵件主題" [email protected]
3) 帶附件
- echo "郵件正文" | mail -s "主題" -a 附件 收件地址
例項: echo "郵件正文" | mail -s "郵件主題" -a /etc/passwd [email protected]
實戰案例
需求:
1. 檢測本機web服務
2. 如果web服務宕機發送郵件報警通知管理員
第一步:編輯檢測指令碼
#!/bin/bash while true do num=`ss -tl | grep -c http` if [ $num -eq 0 ];then echo "web服務宕機,請立即檢查修復!" | mail -s "web服務宕機" 1614833188@qq.com break fi done
第二步:後臺執行指令碼
[[email protected] ~]# nohup bash test.sh & [1] 6643 [[email protected] ~]# jobs [1]+ Running nohup bash test.sh &
第三步:模擬web服務宕機
[[email protected] ~]# systemctl stop httpd
第四步:檢查郵件