Linux 中計劃任務把結果發送到你的郵箱

在生活工作中,我們會經常寫一些任務計劃,比如定期檢查一下磁盤的使用情況,定期執行一些腳本、指等等,但是Linux系統中的機制是把結果以郵件的形式發送到用戶的郵箱裏,假如現在你出差了,但是你的計劃任務還在公司的電腦上進行着,這個時候你該怎麼辦呢?接下來我介紹一下怎麼用Linux系統給QQ郵箱、163郵箱等等發送郵件,這樣的話你的計劃任務就會把執行結果發送到你的郵箱裏,讓你隨時隨刻對你的主機瞭如指掌。


本文演示:

  • centos 7
  • qq郵箱

計劃任務的書寫看我前面的博客,超級詳細


利用系統的mail(25號端口)服務發送

  1. 編輯/etc/mail.rc,輸入下面的配置文件
    set from=設置用哪個郵箱發送郵件#收到郵件時顯示的發件人
    set smtp=smtp.qq.com#郵箱的域名
    set smtp-auth-user=你的QQ郵箱賬號#發郵件的用戶名
    set smtp-auth-password=郵箱的POP3/SMTP服務的授權碼
    set smtp-auth=login #SMTP的認證方式,默認是login,也可以改成CRAM-MD5或PLAIN方式

    獲取郵箱授權碼的方式:登陸你的郵箱
    Linux 中計劃任務把結果發送到你的郵箱
    然後點擊賬戶
    Linux 中計劃任務把結果發送到你的郵箱
    選擇開啓POP3/SMTP服務
    Linux 中計劃任務把結果發送到你的郵箱
    然後獲取授權碼
    Linux 中計劃任務把結果發送到你的郵箱

  2. 發送無正文郵件
    mail -vvv -s ”主題" 郵箱地址
  3. 發送有正文郵件
    mail -s "主題"  [email protected] < 文件(郵件正文.txt)
    cat 郵件正文.txt | mail -s 郵件主題  收件地址
    echo "郵件正文" | mail -s 郵件主題  收件地址
  4. 發送帶附件郵件
    mail -s "主題"  收件地址  -a 附件 < 文件(郵件正文.txt) 

    到這裏一般的虛擬機和主機應該都沒問題了,但是當我使用阿里雲、騰訊雲的主機的時候會報錯連接超時,經過一番查證和實驗發現阿里雲和騰訊雲的主機把25號端口給封鎖,導致連接超時,要想解決這個問題,可以去阿里雲和騰訊雲的控制檯上申請開啓25號端口,這樣這個問題也就迎刃而解了。但是還有一種安全而且加密的協議在不申請25號端口的情況下完美的解決這個問題,那就是 ssl協議。

利用ssl協議發送

  1. 編輯/etc/mail.rc,輸入下面的配置文件
    set from=設置用哪個郵箱發送郵件#收到郵件時顯示的發件人
    set smtp="smtps://smtp.qq.com:465"#郵箱的域名及端口號
    set smtp-auth-user=你的QQ郵箱賬號#發郵件的用戶名
    set smtp-auth-password=郵箱的POP3/SMTP服務的授權碼
    set smtp-auth=login #SMTP的認證方式,默認是login,也可以改成CRAM-MD5或PLAIN方式
    set nss-config-dir=/etc/pki/nssdb   #存放認證證書的地址
    set ssl-verify=ignore
  2. 郵箱發送格式同上

可能遇到問題

  1. mailx的版本太低
    [root@localhost ~]# rpm -qa mailx #查看自己的mailx版本
    mailx-12.5-19.el7.x86_64
    [root@localhost ~]# yum -y install mailx #安裝最新版的mailx
  2. 域名解析不成功
    [root@cyn(cyn) ~ ]# echo "今晚約嗎?"|mail -vvv -s "真帥" [email protected]
    Resolving host /smtp.qq.com . . .Could not resolve host: /smtp.qq.com
    "/root/dead.letter" 11/330
    . . . message not sent.

    解決方法:
    a. 增加dns解析

    [root@cyn(cyn) ~ ]# vim /etc/resolv.conf 
    #在本文件中增加一條記錄,必須寫在第一個,因爲這個文件時順序執行,會解析第一個nameserver,第一個解析不了再去解析下一個
    nameserver 114.114.114.114
    nameserver 100.100.2.136
    nameserver 100.100.2.138
  3. 連接超時
    [root@cyn(cyn) ~ ]# echo "今晚約嗎?"|mail -vvv -s "真帥" [email protected]
    Resolving host smtp.qq.com . . . done.
    Connecting to 14.17.57.241:465 . . . connected Refused.
    . . . message not sent.

    解決方法:基本上都是網絡問題了還有本身防火牆

    [root@localhost ~]# iptables -F
    [root@localhost ~]# setenforce 0

網易郵箱也可以,設置方法同QQ郵箱,下面介紹一下獲取授權碼
登陸網易郵箱,點擊設置,開啓POP3/SMPT服務,點擊保存
Linux 中計劃任務把結果發送到你的郵箱
點擊客戶端授權密碼,再點擊重置密碼
Linux 中計劃任務把結果發送到你的郵箱
獲取授權碼
Linux 中計劃任務把結果發送到你的郵箱

但是網易郵箱會把發過去的郵件當成垃圾郵件處理,使用的時候需要注意。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章