Linux服務(wù)器上使用Gmail的免費(fèi)SMTP服務(wù)發(fā)送監(jiān)控通知

假定你想配置一個(gè) Linux 應(yīng)用,用于從你的服務(wù)器或桌面客戶端發(fā)送郵件信息。郵件信息可能是郵件簡(jiǎn)報(bào)、狀態(tài)更新(如 Cachet)、監(jiān)控警報(bào)(如 Monit)、磁盤時(shí)間(如 RAID mdadm)等等。當(dāng)你要建立自己的 郵件發(fā)送服務(wù)器 傳遞信息時(shí) ,你可以替代使用一個(gè)免費(fèi)的公共 SMTP 服務(wù)器,從而避免遭受維護(hù)之苦。
谷歌的 Gmail 服務(wù)就是最可靠的 免費(fèi) SMTP 服務(wù)器 之一。想要從應(yīng)用中發(fā)送郵件通知,你僅需在應(yīng)用中添加 Gmail 的 SMTP 服務(wù)器地址和你的身份憑證即可。
使用 Gmail 的 SMTP 服務(wù)器會(huì)遇到一些限制,這些限制主要用于阻止那些經(jīng)常濫用服務(wù)器來發(fā)送垃圾郵件和使用郵件營(yíng)銷的家伙。舉個(gè)例子,你一次只能給至多 100 個(gè)地址發(fā)送信息,并且一天不能超過 500 個(gè)收件人。同樣,如果你不想被標(biāo)為垃圾郵件發(fā)送者,你就不能發(fā)送過多的不可投遞的郵件。當(dāng)你達(dá)到任何一個(gè)限制,你的 Gmail 賬戶將被暫時(shí)的鎖定一天。簡(jiǎn)而言之,Gmail 的 SMTP 服務(wù)器對(duì)于你個(gè)人的使用是非常棒的,但不適合商業(yè)的批量郵件。
說了這么多,是時(shí)候向你們展示 如何在 Linux 環(huán)境下使用 Gmail 的 SMTP 服務(wù)器 了。
Google Gmail SMTP 服務(wù)器設(shè)置
如果你想要通過你的應(yīng)用使用 Gmail 的 SMTP 服務(wù)器發(fā)送郵件,請(qǐng)牢記接下來的詳細(xì)說明。
郵件發(fā)送服務(wù)器 (SMTP 服務(wù)器): smtp.gmail.com
使用認(rèn)證: 是
使用安全連接: 是
用戶名: 你的 Gmail 賬戶 ID (比如 "alice" ,如果你的郵箱為 alice@gmail.com)
密碼: 你的 Gmail 密碼
端口: 587
確切的配置根據(jù)應(yīng)用會(huì)有所不同。在本教程的剩余部分,我將向你展示一些在 Linux 上使用 Gmail SMTP 服務(wù)器的應(yīng)用示例。
從命令行發(fā)送郵件
作為第一個(gè)例子,讓我們嘗試最基本的郵件功能:使用 Gmail SMTP 服務(wù)器從命令行發(fā)送一封郵件。為此,我將使用一個(gè)稱為 mutt 的命令行郵件客戶端。
先安裝 mutt:
對(duì)于 Debian-based 系統(tǒng):
$ sudo apt-get install mutt
對(duì)于 Red Hat based 系統(tǒng):
$ sudo yum install mutt
創(chuàng)建一個(gè) mutt 配置文件(~/.muttrc),并和下面一樣,在文件中指定 Gmail SMTP 服務(wù)器信息。將 <gmail-id> 替換成自己的 Gmail ID。注意該配置只是為了發(fā)送郵件而已(而非接收郵件)。
$ vi ~/.muttrc
set from = "<gmail-id>@gmail.com"
set realname = "Dan Nanni"
set smtp_url = "smtp://<gmail-id>@smtp.gmail.com:587/"
set smtp_pass = "<gmail-password>"
一切就緒,使用 mutt 發(fā)送一封郵件:
$ echo "This is an email body." | mutt -s "This is an email subject" alice@yahoo.com
想在一封郵件中添加附件,使用 "-a" 選項(xiàng)
$ echo "This is an email body." | mutt -s "This is an email subject" alice@yahoo.com -a ~/test_attachment.jpg

使用 Gmail SMTP 服務(wù)器意味著郵件將顯示是從你 Gmail 賬戶發(fā)出的。換句話說,收件人將視你的 Gmail 地址為發(fā)件人地址。如果你想要使用自己的域名作為郵件發(fā)送方,你需要使用 Gmail SMTP 轉(zhuǎn)發(fā)服務(wù)。
當(dāng)服務(wù)器重啟時(shí)發(fā)送郵件通知
如果你在 虛擬專用服務(wù)器(VPS) 上跑了些重要的網(wǎng)站,建議監(jiān)控 VPS 的重啟行為。作為一個(gè)更為實(shí)用的例子,讓我們研究如何在你的 VPS 上為每一次重啟事件建立郵件通知。這里假設(shè)你的 VPS 上使用的是 systemd,并向你展示如何為自動(dòng)郵件通知?jiǎng)?chuàng)建一個(gè)自定義的 systemd 啟動(dòng)服務(wù)。
首先創(chuàng)建下面的腳本 reboot_notify.sh,用于負(fù)責(zé)郵件通知。
$ sudo vi /usr/local/bin/reboot_notify.sh
#!/bin/sh
echo "`hostname` was rebooted on `date`" | mutt -F /etc/muttrc -s "Notification on `hostname`" alice@yahoo.com
$ sudo chmod +x /usr/local/bin/reboot_notify.sh
在這個(gè)腳本中,我使用 "-F" 選項(xiàng),用于指定系統(tǒng)級(jí)的 mutt 配置文件位置。因此不要忘了創(chuàng)建 /etc/muttrc 文件,并如前面描述的那樣填入 Gmail SMTP 信息。
現(xiàn)在讓我們創(chuàng)建如下一個(gè)自定義的 systemd 服務(wù)。
$ sudo mkdir -p /usr/local/lib/systemd/system
$ sudo vi /usr/local/lib/systemd/system/reboot-task.service
[Unit]
Description=Send a notification email when the server gets rebooted
DefaultDependencies=no
Before=reboot.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/reboot_notify.sh
[Install]
WantedBy=reboot.target
在創(chuàng)建服務(wù)后,添加并啟動(dòng)該服務(wù)。
$ sudo systemctl enable reboot-task
$ sudo systemctl start reboot-task
從現(xiàn)在起,在每次 VPS 重啟時(shí),你將會(huì)收到一封通知郵件。

通過服務(wù)器使用監(jiān)控發(fā)送郵件通知
作為最后一個(gè)例子,讓我展示一個(gè)現(xiàn)實(shí)生活中的應(yīng)用程序,Monit,這是一款極其有用的服務(wù)器監(jiān)控應(yīng)用程序。它帶有全面的 VPS 監(jiān)控能力(比如 CPU、內(nèi)存、進(jìn)程、文件系統(tǒng))和郵件通知功能。
如果你想要接收 VPS 上由 Monit 產(chǎn)生的任何事件的郵件通知,你可以在 Monit 配置文件中添加以下 SMTP 信息。
set mailserver smtp.gmail.com port 587
username "<your-gmail-ID>" password "<gmail-password>"
using tlsv12
set mail-format {
from: <your-gmail-ID>@gmail.com
subject: $SERVICE $EVENT at $DATE on $HOST
message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION.
Yours sincerely,
Monit
}
# the person who will receive notification emails
set alert alice@yahoo.com
這是一個(gè)因?yàn)?CPU 負(fù)載超載而由 Monit 發(fā)送的郵件通知的例子。

總結(jié)
如你所見,類似 Gmail 這樣免費(fèi)的 SMTP 服務(wù)器有著這么多不同的運(yùn)用方式 。但再次重申,請(qǐng)牢記免費(fèi)的 SMTP 服務(wù)器不適用于商業(yè)用途,僅僅適用于個(gè)人項(xiàng)目。無論你正在哪款應(yīng)用中使用 Gmail SMTP 服務(wù)器,歡迎自由分享你的用例。
相關(guān)文章
- 這篇文章主要介紹了Linux中的mail郵件命令的各種參數(shù)使用,mail命令的使用是Linux入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-01-22
Linux系統(tǒng)下為Gitlab配置郵件提醒的方法詳解
這篇文章主要介紹了Linux系統(tǒng)下為Gitlab配置郵件提醒的方法,包括騰訊郵箱的相關(guān)配置方法講解,需要的朋友可以參考下2016-01-14Linux系統(tǒng)下安裝配置postfix郵件服務(wù)器的教程
這篇文章主要介紹了Linux系統(tǒng)下安裝配置postfix郵件服務(wù)器的教程,文中示例基于CentOS環(huán)境進(jìn)行演示,需要的朋友可以參考下2016-01-15- 這篇文章主要介紹了Linux下操作郵件的一些基礎(chǔ)命令,盡管現(xiàn)在一般都用第三方開發(fā)的獨(dú)立郵件客戶端...需要的朋友可以參考下2015-07-13
Linux lnmp下無法使用mail發(fā)郵件的兩種解決方法
在配置了lnmp環(huán)境后,出現(xiàn)了mail函數(shù)不能發(fā)送郵件的問題,其實(shí)有兩種方法,一是使用sendmail組件,而是使用postfix。下面為大家一一介紹下2015-06-30Linux通過命令行發(fā)郵件使用sendmail函數(shù)、mail函數(shù)
通過命令行自由發(fā)送郵件,使用sendmail函數(shù)、php mail函數(shù)就能實(shí)現(xiàn),沒有sendmail函數(shù)則需要在Linux系統(tǒng)安裝sendmail2015-06-18在Linux系統(tǒng)上使用轉(zhuǎn)發(fā)服務(wù)器處理郵件通信的教程
這篇文章主要介紹了在Linux系統(tǒng)上使用轉(zhuǎn)發(fā)服務(wù)器處理郵件通信的教程,主要用到了postfix郵件服務(wù)來增加安全性,文章示例基于CentOS系統(tǒng),需要的朋友可以參考下2015-06-12Linux下一些在命令行中發(fā)送電子郵件的工具簡(jiǎn)介
這篇文章主要介紹了Linux下一些在命令行中發(fā)送電子郵件的工具簡(jiǎn)介,分別為mailx、mutt、swaks、uuencode這四個(gè)工具,包括附帶附件文件的功能,需要的朋友可以參考下2015-05-27如何在linux centos 6.5 x86_64位上使用命令發(fā)送郵件?
一個(gè)新Linux應(yīng)用系統(tǒng),需要將對(duì)應(yīng)的日?qǐng)?bào)發(fā)送到指定郵箱,以便運(yùn)維人員能夠及時(shí)了解服務(wù)器情況,那么如何在linux centos 6.5 x86_64位上使用命令發(fā)送郵件?下面小編就為大家詳細(xì)2014-12-27- 出于安全考慮,我們希望服務(wù)器在有用戶通過ssh登陸時(shí)能自動(dòng)向管理員發(fā)送一條郵件,通知登陸用戶名和IP。這是一種不錯(cuò)的安全防范機(jī)制,它可以讓管理員及時(shí)發(fā)現(xiàn)異常。那么Linux2014-12-27