Linux 上使用 Gmail SMTP 服務器發送郵件通知

導讀 假定你想配置一個 Linux 應用,用於從你的服務器或桌面客戶端發送郵件信息。郵件信息多是郵件簡報、狀態更新(如 Cachet)、監控警報(如 Monit)、磁盤時間(如 RAID mdadm)等等。當你要創建本身的 郵件發送服務器 傳遞信息時 ,你能夠替代使用一個免費的公共 SMTP 服務器,從而避免遭受維護之苦。

Linux 上使用 Gmail SMTP 服務器發送郵件通知Linux 上使用 Gmail SMTP 服務器發送郵件通知
谷歌的 Gmail 服務就是最可靠的 免費 SMTP 服務器 之一。想要從應用中發送郵件通知,你僅需在應用中添加 Gmail 的 SMTP 服務器地址和你的身份憑證便可。linux

使用 Gmail 的 SMTP 服務器會遇到一些限制,這些限制主要用於阻止那些常常濫用服務器來發送垃圾郵件和使用郵件營銷的傢伙。舉個例子,你一次只能給至多 100 個地址發送信息,而且一天不能超過 500 個收件人。一樣,若是你不想被標爲垃圾郵件發送者,你就不能發送過多的不可投遞的郵件。當你達到任何一個限制,你的 Gmail 帳戶將被暫時的鎖定一天。簡而言之,Gmail 的 SMTP 服務器對於你我的的使用是很是棒的,但不適合商業的批量郵件。安全

說了這麼多,是時候向大家展現 如何在 Linux 環境下使用 Gmail 的 SMTP 服務器 了。服務器

Google Gmail SMTP 服務器設置網站

若是你想要經過你的應用使用 Gmail 的 SMTP 服務器發送郵件,請牢記接下來的詳細說明。
• 郵件發送服務器 (SMTP 服務器): smtp.gmail.com
• 使用認證: 是
• 使用安全鏈接: 是
• 用戶名: 你的 Gmail 帳戶 ID (好比 "alice" ,若是你的郵箱爲 alice@gmail.com)
• 密碼: 你的 Gmail 密碼
• 端口: 587
確切的配置根據應用會有所不一樣。在本教程的剩餘部分,我將向你展現一些在 Linux 上使用 Gmail SMTP 服務器的應用示例。url

從命令行發送郵件命令行

做爲第一個例子,讓咱們嘗試最基本的郵件功能:使用 Gmail SMTP 服務器從命令行發送一封郵件。爲此,我將使用一個稱爲 mutt 的命令行郵件客戶端。
先安裝 mutt:
對於 Debian-based 系統:orm

$ sudo apt-get install mutt

對於 Red Hat based 系統:server

$ sudo yum install mutt

建立一個 mutt 配置文件(~/.muttrc),並和下面同樣,在文件中指定 Gmail SMTP 服務器信息。將 替換成本身的 Gmail ID。注意該配置只是爲了發送郵件而已(而非接收郵件)。教程

$ vi ~/.muttrc
set from = "@gmail.com"
set realname = "Dan Nanni"
set smtp_url = "smtp://@smtp.gmail.com:587/"
set smtp_pass = ""

一切就緒,使用 mutt 發送一封郵件:進程

$ echo "This is an email body." | mutt -s "This is an email subject" alice@yahoo.com

想在一封郵件中添加附件,使用 "-a" 選項

$ echo "This is an email body." | mutt -s "This is an email subject" alice@yahoo.com -a ~/test_attachment.jpg

Linux 上使用 Gmail SMTP 服務器發送郵件通知Linux 上使用 Gmail SMTP 服務器發送郵件通知
使用 Gmail SMTP 服務器意味着郵件將顯示是從你 Gmail 帳戶發出的。換句話說,收件人將視你的 Gmail 地址爲發件人地址。若是你想要使用本身的域名做爲郵件發送方,你須要使用 Gmail SMTP 轉發服務。

當服務器重啓時發送郵件通知

若是你在 虛擬專用服務器(VPS) 上跑了些重要的網站,建議監控 VPS 的重啓行爲。做爲一個更爲實用的例子,讓咱們研究如何在你的 VPS 上爲每一次重啓事件創建郵件通知。這裏假設你的 VPS 上使用的是 systemd,並向你展現如何爲自動郵件通知建立一個自定義的 systemd 啓動服務。
首先建立下面的腳本 reboot_notify.sh,用於負責郵件通知。

$ 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

在這個腳本中,我使用 "-F" 選項,用於指定系統級的 mutt 配置文件位置。所以不要忘了建立 /etc/muttrc 文件,並如前面描述的那樣填入 Gmail SMTP 信息。

如今讓咱們建立以下一個自定義的 systemd 服務。

$ 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

在建立服務後,添加並啓動該服務。

$ sudo systemctl enable reboot-task
$ sudo systemctl start reboot-task

從如今起,在每次 VPS 重啓時,你將會收到一封通知郵件。
Linux 上使用 Gmail SMTP 服務器發送郵件通知Linux 上使用 Gmail SMTP 服務器發送郵件通知

經過服務器使用監控發送郵件通知

做爲最後一個例子,讓我展現一個現實生活中的應用程序,Monit,這是一款極其有用的服務器監控應用程序。它帶有全面的 VPS 監控能力(好比 CPU、內存、進程、文件系統)和郵件通知功能。

若是你想要接收 VPS 上由 Monit 產生的任何事件的郵件通知,你能夠在 Monit 配置文件中添加如下 SMTP 信息。

set mailserver smtp.gmail.com port 587
    username "" password ""
    using tlsv12
set mail-format {
 from: @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

這是一個由於 CPU 負載超載而由 Monit 發送的郵件通知的例子。
Linux 上使用 Gmail SMTP 服務器發送郵件通知Linux 上使用 Gmail SMTP 服務器發送郵件通知

總結

如你所見,相似 Gmail 這樣免費的 SMTP 服務器有着這麼多不一樣的運用方式 。但再次重申,請牢記免費的 SMTP 服務器不適用於商業用途,僅僅適用於我的項目。不管你正在哪款應用中使用 Gmail SMTP 服務器,歡迎自由分享你的用例。

免費提供最新Linux技術教程書籍,爲開源技術愛好者努力作得更多更好:http://www.linuxprobe.com/

相關文章
相關標籤/搜索