PostfixでGmail経由でメールを送信するときに手間取った。Gmailで二段階認証を使っている場合はパスワードはアプリの固有パスワードを使えばいいみたいです。
アプリケーション固有のパスワードの取得 - Gmailの使い方
一応、手順をメモしておく。
iptablesのポートを開いておく。
# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPTを追記。
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.filter
- INPUT ACCEPT [0
- 0]
- FORWARD ACCEPT [0
- 0]
- OUTPUT ACCEPT [0
- 0]
- A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- A INPUT -p icmp -j ACCEPT
- A INPUT -i lo -j ACCEPT
- A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
- A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
- A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
- A INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
- A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT
- A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
- A INPUT -j REJECT --reject-with icmp-host-prohibited
- A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
iptablesを再起動。
# service iptables restart
Postfixの設定
下記参考しました。
CentOSのPostfixからGmail経由でメールを出す : Tom's Lab
main.cfを記述。
myhostname = aaaa.bbbb.cccc.com
mydomain = bbbb.cccc.com
myorigin = $myhostname
inet_interfaces = localhost
mydestination = $myhostname, localhost.localdomain, localhost.$mydomain, localhost
# Gmail固有の設定
relayhost = [smtp.gmail.com]:587
# smtp.gmail.comはTLSによって暗号化する
smtp_use_tls = yes
# plain方式 (暗号化・符号化されていない) SMTP AUTH認証が必要になるので以下の記述を追加
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
# TLS証明書であるルート証明書を指定
# 指定しないとpostfixが/var/log/maillogにエラーを吐く
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
sase_passwdを記述。
[smtp.gmail.com]:587 user-name@gmail.com:mail-password# chown root:root /etc/postfix/sasl_passwd
# chmod 600 /etc/postfix/sasl_passwd
# postmap /etc/postfix/sasl_passwd
postfixを再起動。
# service postfix restart