Categories: Ubuntu

Ubuntu – 讓 Sendmail 以 Gmail 的 SMTP 來發送信件

前陣子我在設定實驗室在用的伺服器,為了一些需求,要從伺服器寄送一些電子信件出來。不過之前的經驗是,直接從伺服器送出的信件會被當作是垃圾郵件,所以這次想透過 Gmail 的 SMTP 來送信件,而實測結果是這樣的方法的確不會再被當做垃圾郵件了。

Gmail 轉發設定

登入你的 Gmail 帳號,確認 IMAP 轉發設定有被啟用。

我之前就是這個沒啟用,搞了我好幾小時。

安裝套件

# apt-get install sendmail mailutils sendmail-bin

建立授權檔案

首先是新增一個資料夾

 # mkdir -m 700 /etc/mail/authinfo/
 # cd /etc/mail/authinfo/

進到資料夾後,我們要新增一個檔案,內容是你的 Gmail 帳號資訊,檔案名稱任意,這邊就叫做 gmail-auth 好了。

AuthInfo: "U:root" "I:EMAIL地址" "P:密碼"

然後我們要弄一個 hash map 給剛剛的檔案

# makemap hash gmail-auth < gmail-auth

設定 sendmail 套件程式

把以下的內容放到 sendmail.mc 檔案中第一個 MAILER 定義之前。

define(`SMART_HOST',`[smtp.gmail.com]')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl
define(`confAUTH_OPTIONS', `A p')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash -o /etc/mail/authinfo/gmail-auth.db')dnl
http://linuxconfig.org/configuring-gmail-as-sendmail-email-relay

然後因為我們重新做了些設定,因此要重建整個 sendmail 設定檔案才能讓它生效。

# make -C /etc/mail

重新載入 sendmail

/etc/init.d/sendmail reload

測試

$ echo "Hello, gmail" | mail -s "Hello!" user@domain.com

若設定無誤,大約過一小段時間後就會收到信了。

參考資料:http://linuxconfig.org/configuring-gmail-as-sendmail-email-relay

duye.chen

View Comments

  • 您好:請問沒有固定IP也能使用嗎?寄測試信也無法收到,請問該如何解決?

    • 應該是可以的喔,看你用的 gmail 帳號有沒有出現一堆寄件備份就知道了

Recent Posts

JavaScript – Singleton 設計模式

前言 在設計程式時,我們有時會...

5 個月 ago

PlaidML 讓你的 Mac 也能加速 Tensorflow 機器學習!

相信很多使用 Mac 或者手上...

9 個月 ago

RESTful API 測試很煩,只好動手寫屬於自己的測試了

寫在最前面 嗨,大家好久不見!...

10 個月 ago

Node.js 與 Socket.io – 即時聊天室實作:資料庫

經過前兩篇(一、二)文章,我們...

4 年 ago