谷歌的 gmail 服務就是最可靠的 免費 smtp 伺服器 之一。想要從應用中發送郵件通知,你僅需在應用中添加 gmail 的 smtp 伺服器位址和你的身份憑證即可。
使用 gmail 的 smtp 伺服器會遇到一些限制,這些限制主要用于阻止那些經常濫用伺服器來發送垃圾郵件和使用郵件營銷的家夥。舉個例子,你一次隻能給至多 100 個位址發送資訊,并且一天不能超過 500 個收件人。同樣,如果你不想被标為垃圾郵件發送者,你就不能發送過多的不可投遞的郵件。當你達到任何一個限制,你的 gmail 賬戶将被暫時的鎖定一天。簡而言之,gmail 的 smtp 伺服器對于你個人的使用是非常棒的,但不适合商業的批量郵件。
說了這麼多,是時候向你們展示 如何在 linux 環境下使用 gmail 的 smtp 伺服器 了。
<a></a>
如果你想要通過你的應用使用 gmail 的 smtp 伺服器發送郵件,請牢記接下來的詳細說明。
郵件發送伺服器 (smtp 伺服器): smtp.gmail.com
使用認證: 是
使用安全連接配接: 是
使用者名: 你的 gmail 賬戶 id (比如 "alice" ,如果你的郵箱為 [email protected])
密碼: 你的 gmail 密碼
端口: 587
确切的配置根據應用會有所不同。在本教程的剩餘部分,我将向你展示一些在 linux 上使用 gmail smtp 伺服器的應用示例。
作為第一個例子,讓我們嘗試最基本的郵件功能:使用 gmail smtp 伺服器從指令行發送一封郵件。為此,我将使用一個稱為 mutt 的指令行郵件用戶端。
先安裝 mutt:
對于 debian-based 系統:
<code>$ sudo apt-get install mutt</code>
對于 red hat based 系統:
<code>$ sudo yum install mutt</code>
建立一個 mutt 配置檔案(~/.muttrc),并和下面一樣,在檔案中指定 gmail smtp 伺服器資訊。将 <gmail-id> 替換成自己的 gmail id。注意該配置隻是為了發送郵件而已(而非接收郵件)。
<code>$ vi ~/.muttrc</code>
<code>set from = "<gmail-id>@gmail.com"</code>
<code>set realname = "dan nanni"</code>
<code>set smtp_url = "smtp://<gmail-id>@smtp.gmail.com:587/"</code>
<code>set smtp_pass = "<gmail-password>"</code>
一切就緒,使用 mutt 發送一封郵件:
<code>$ echo "this is an email body." | mutt -s "this is an email subject" [email protected]</code>
想在一封郵件中添加附件,使用 "-a" 選項
<code>$ echo "this is an email body." | mutt -s "this is an email subject" [email protected] -a ~/test_attachment.jpg</code>
使用 gmail smtp 伺服器意味着郵件将顯示是從你 gmail 賬戶發出的。換句話說,收件人将視你的 gmail 位址為發件人位址。如果你想要使用自己的域名作為郵件發送方,你需要使用 gmail smtp 轉發服務。
首先建立下面的腳本 reboot_notify.sh,用于負責郵件通知。
<code>$ sudo vi /usr/local/bin/reboot_notify.sh</code>
<code>#!/bin/sh</code>
<code></code>
<code>echo "`hostname` was rebooted on `date`" | mutt -f /etc/muttrc -s "notification on `hostname`" [email protected]</code>
<code>$ sudo chmod +x /usr/local/bin/reboot_notify.sh</code>
在這個腳本中,我使用 "-f" 選項,用于指定系統級的 mutt 配置檔案位置。是以不要忘了建立 /etc/muttrc 檔案,并如前面描述的那樣填入 gmail smtp 資訊。
現在讓我們建立如下一個自定義的 systemd 服務。
<code>$ sudo mkdir -p /usr/local/lib/systemd/system</code>
<code>$ sudo vi /usr/local/lib/systemd/system/reboot-task.service</code>
<code>[unit]</code>
<code>description=send a notification email when the server gets rebooted</code>
<code>defaultdependencies=no</code>
<code>before=reboot.target</code>
<code>[service]</code>
<code>type=oneshot</code>
<code>execstart=/usr/local/bin/reboot_notify.sh</code>
<code>[install]</code>
<code>wantedby=reboot.target</code>
在建立服務後,添加并啟動該服務。
<code>$ sudo systemctl enable reboot-task</code>
<code>$ sudo systemctl start reboot-task</code>
從現在起,在每次 vps 重新開機時,你将會收到一封通知郵件。
如果你想要接收 vps 上由 monit 産生的任何事件的郵件通知,你可以在 monit 配置檔案中添加以下 smtp 資訊。
<code>set mailserver smtp.gmail.com port 587</code>
<code>username "<your-gmail-id>" password "<gmail-password>"</code>
<code>using tlsv12</code>
<code>set mail-format {</code>
<code>from: <your-gmail-id>@gmail.com</code>
<code>subject: $service $event at $date on $host</code>
<code>message: monit $action $service $event at $date on $host : $description.</code>
<code>yours sincerely,</code>
<code>monit</code>
<code>}</code>
<code># the person who will receive notification emails</code>
<code>set alert [email protected]</code>
這是一個因為 cpu 負載超載而由 monit 發送的郵件通知的例子。
如你所見,類似 gmail 這樣免費的 smtp 伺服器有着這麼多不同的運用方式 。但再次重申,請牢記免費的 smtp 伺服器不适用于商業用途,僅僅适用于個人項目。無論你正在哪款應用中使用 gmail smtp 伺服器,歡迎自由分享你的用例。
本文來自雲栖社群合作夥伴“linux中國”
原文釋出時間為:2013-04-02.