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

獨夜:

看評論 (2)