星期三, 3月 09, 2016

postfix 透過 Gmail 驗證寄送 with openSUSE

postfix 透過 Gmail 驗證寄送 with openSUSE

OS: openSUSE 13.1

從來沒有想過再摸postfix 是因為 ipv6
因為專案的關係設定 nagios 監控主機
但是使用者卻沒有收到信件, 檢查一下 mail log, 發現應該是 ipv6 沒有設定適當反解的問題
to=<xxxxx@gmail.com>, relay=gmail-smtp-in.l.google.com[2404:6800:4008:c01::1a]:25, delay=31, delays=0.01/0.01/31/0.48, dsn=5.7.1, status=bounced (host gmail-smtp-in.l.google.com[2404:6800:4008:c01::1a] said: 550-5.7.1 [2001:e10:2000:6:69fd:8220] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1  https://support.google.com/mail/?p=ipv6_authentication_error for more 550 5.7.1 information.

但是由於是使用 VM 來進行系統監控, 當然就不會考量設定固定 ip / DNS 正反解來解決.

於是把想法放到 postfix 的 relayhost = [主機名稱/IP] 的作法上面
希望透過gmail 的 smtp 伺服器來進行郵件傳遞

參考

實作:
安裝相關套件( 下面這三個套件我其實已經內建 )
#zypper   install  postfix   mailx   cyrus-sasl

#vi  /etc/postfix/sasl_passwd
新增
[smtp.gmail.com]:587    你的帳號@gmail.com:password

修改權限
# chmod  600   /etc/postfix/sasl_passwd

修改 postfix
# vi   /etc/postfix/main.cf
加入
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/ca-bundle.pem

#vi  /etc/postfix/master.cf
取消註解
#tlsmgr unix - - n 1000? 1 tlsmg
tlsmgr unix - - n 1000? 1 tlsmg

處理password file
#postmap  /etc/postfix/sasl_passwd

重新啟動 postfix
#systemctl   restart  postfix.service

作法1
將 gmail 設定低安全性 ( google 應用程式也許無法使用, 安全性較低 )
到 gmail 的我的帳戶 -- > 登入和安全性 -- > 將 允許安全性較低的應用程式 啟用

2016-03-09 15-45-08 的螢幕擷圖.png


作法2
使用兩階段認証應用程式密碼

#vi  /etc/postfix/sasl_passwd
修改
[smtp.gmail.com]:587    你的帳號@gmail.com:兩階段應用程式密碼

處理password file
#postmap  /etc/postfix/sasl_passwd

完成之後就可以試試看 使用 mail 指令看看能不能寄出

Notes
  • 用 postconf 檢查設定
  • 設定檔最好寫在最後一行 ( 感謝 Netman 老大 )

~ enjoy it

沒有留言: