Postfix: Gmail経由でメールを送信する
自宅のサーバーの root 宛のメールを、Gmail のアカウントに転送していたのですが、ある時期から転送され無くなっていました。
どうやら今まで relayhost に指定していた smtp.nifty.com の仕様が変わり、@nifty.com 以外の宛先に対してのメールが送信できなくなったみたい。
smtp.nifty.com でも送信時に認証を有効にすれば送信できそうですけど、最終的な受け手が Gmail で運用している独自ドメインアドレスだったりするので、relayhost に Gmail の送信サーバーを指定して送信する方法に変更しました。
基本的にこのページに書かれている通りに設定しただけですが、備忘録的な感じで書いておきます。
ちなみに、サーバーOSは CentOS 5.8。
まず、必要なパッケージがインストールされているか確認します。
# rpm -qa |grep postfix postfix-2.3.3-2.1.el5_2 # rpm -qa |grep sasl cyrus-sasl-lib-2.1.22-5.el5 cyrus-sasl-2.1.22-5.el5 cyrus-sasl-plain-2.1.22-5.el5 # rpm -qa |grep openssl openssl-perl-0.9.8e-12.el5_4.1 openssl-devel-0.9.8e-12.el5_4.1 xmlsec1-openssl-1.2.9-8.1.1 openssl-0.9.8e-12.el5_4.1 openssl097a-0.9.7a-9.el5_2.1
まぁ、postfixは入ってますよねw
足りないものをインストールしていきます。
私の場合、既に構築済みの環境で行ったので、以下のパッケージのみインストールしました。
# yum install openssl-perl openssl-devel xmlsec1-openssl openssl097a
という感じで、足りないものを追加します。
次に、ルート証明書を Postfix のディレクトリにコピー。
# cp /etc/pki/tls/certs/ca-bundle.crt /etc/postfix/cacert.pem
main.cf 内で
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
のように元のファイルを直接指定すればコピーしなくても良いかも。
次に、認証用のファイルを作成します。
# vi /etc/postfix/sasl_passwd smtp.gmail.com user@domain:password
独自ドメインで運用している人は user@domain に自分のメールアドレスを指定すればOK。
Gmailの人は普通に [email protected] 的な感じでしょうか?
パスワードを平文で保存するので root 以外は読めないようにしておきます。
# chmod 600 /etc/postfix/sasl_passwd
で、hash 形式に変換。
# postmap /etc/postfix/sasl_passwd
次に /etc/postfix/main.cf を編集。
まず、relayhost に smtp.gmail.com のポート 587 を利用するように設定を変更。
relayhost = [smtp.gmail.com]:587
次に、認証系の設定を追加。
# SASL authentication smtp_sasl_auth_enable=yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = smtp_sasl_tls_security_options = noanonymous smtp_sasl_mechanism_filter = login # TLS smtp_tls_eccert_file = smtp_tls_eckey_file = smtp_use_tls = yes smtp_enforce_tls = no smtp_tls_CAfile = /etc/postfix/cacert.pem smtpd_tls_received_header = yes tls_random_source = dev:/dev/urandom
最後に postfix を再起動して設定完了。
# service postfix restart
テストメールを送信して、正常に受信できるか確認して終了。
# echo test|mail -s "test mail" root
という感じで、Postfix から Gmail の SMTP サーバーを経由してメールを送信できるようになります。
コメント