前陣子我在設定實驗室在用的伺服器,為了一些需求,要從伺服器寄送一些電子信件出來。不過之前的經驗是,直接從伺服器送出的信件會被當作是垃圾郵件,所以這次想透過 Gmail 的 SMTP 來送信件,而實測結果是這樣的方法的確不會再被當做垃圾郵件了。
登入你的 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.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
View Comments
您好:請問沒有固定IP也能使用嗎?寄測試信也無法收到,請問該如何解決?
應該是可以的喔,看你用的 gmail 帳號有沒有出現一堆寄件備份就知道了