前陣子我在設定實驗室在用的伺服器,為了一些需求,要從伺服器寄送一些電子信件出來。不過之前的經驗是,直接從伺服器送出的信件會被當作是垃圾郵件,所以這次想透過 Gmail 的 SMTP 來送信件,而實測結果是這樣的方法的確不會再被當做垃圾郵件了。
Gmail 轉發設定
登入你的 Gmail 帳號,確認 IMAP 轉發設定有被啟用。
我之前就是這個沒啟用,搞了我好幾小時。
安裝套件
1 2 |
# apt-get install sendmail mailutils sendmail-bin |
建立授權檔案
首先是新增一個資料夾
1 2 3 |
# mkdir -m 700 /etc/mail/authinfo/ # cd /etc/mail/authinfo/ |
進到資料夾後,我們要新增一個檔案,內容是你的 Gmail 帳號資訊,檔案名稱任意,這邊就叫做 gmail-auth 好了。
1 2 |
AuthInfo: "U:root" "I:EMAIL地址" "P:密碼" |
然後我們要弄一個 hash map 給剛剛的檔案
1 2 |
# makemap hash gmail-auth < gmail-auth |
設定 sendmail 套件程式
把以下的內容放到 sendmail.mc
檔案中第一個 MAILER 定義之前。
1 2 3 4 5 6 7 8 9 |
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 設定檔案才能讓它生效。
1 2 |
# make -C /etc/mail |
重新載入 sendmail
1 2 |
/etc/init.d/sendmail reload |
測試
1 2 |
$ echo "Hello, gmail" | mail -s "Hello!" user@domain.com |
若設定無誤,大約過一小段時間後就會收到信了。
參考資料:http://linuxconfig.org/configuring-gmail-as-sendmail-email-relay
您好:請問沒有固定IP也能使用嗎?寄測試信也無法收到,請問該如何解決?
應該是可以的喔,看你用的 gmail 帳號有沒有出現一堆寄件備份就知道了