天天看點

Linux使用mailx發送郵件--技術流ken

前言

最近想要監控系統服務運作情況并實作自動發送郵件報警,zabbix雖然也可以實作這樣的功能,但是這裡使用一個非常簡單的辦法就可以實作。需要安裝mailx工具,mailx是一個小型的郵件發送程式。

安裝步驟

第一步:安裝mailx

[root@ken ~]# yum install mailx -y      

第二步:編輯配置檔案

在mail.rc這個配置檔案中,在末行添加如下的内容

[root@ken ~]# 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郵箱,點選設定>賬戶

Linux使用mailx發送郵件--技術流ken

 點選生成授權碼即可

Linux使用mailx發送郵件--技術流ken

測試

這句指令的後面的[email protected]是收件位址

[root@ken ~]# echo "這是一封測試郵件" | mail -s "測試郵件" [email protected]      
Linux使用mailx發送郵件--技術流ken

以上已經實作了發郵件功能!!!

 郵件發送書寫格式

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服務當機" [email protected]
        break
fi
done      

第二步:背景運作腳本

[root@ken ~]# nohup bash test.sh &
[1] 6643
[root@ken ~]# jobs
[1]+  Running                 nohup bash test.sh &      

第三步:模拟web服務當機

[root@ken ~]# systemctl stop httpd      

第四步:檢查郵件

Linux使用mailx發送郵件--技術流ken

[root@ken ~]# yum install mailx -y      
[root@ken ~]# 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"      

Linux使用mailx發送郵件--技術流ken
Linux使用mailx發送郵件--技術流ken

[root@ken ~]# echo "這是一封測試郵件" | mail -s "測試郵件" [email protected]      
Linux使用mailx發送郵件--技術流ken

#!/bin/bash
while true
do
num=`ss -tl | grep -c http`
if [ $num -eq 0 ];then
        echo "web服務當機,請立即檢查修複!" | mail -s "web服務當機" [email protected]
        break
fi
done      
[root@ken ~]# nohup bash test.sh &
[1] 6643
[root@ken ~]# jobs
[1]+  Running                 nohup bash test.sh &      
[root@ken ~]# systemctl stop httpd      
Linux使用mailx發送郵件--技術流ken