Vine Linux Magazine
localhost の Postfix から外部メールサーバに SMTP 認証でメール送信
筆者: iwaim
発行日: 2010,09,04
Vine Linux 5 標準のメールサーバである Postfix から、外部メールサーバにメールをリレー (≒送信) するときに SMTP 認証 (SMTP-AUTH; SMTP Authentication) を使う方法を解説します。
また、近年では、ISP は Outbound Port 25 Blocking (OP25B) を導入していることが多いため、外部メールサーバに接続する際のポートをサブミッションポート 587 番を用いる設定を紹介しています。
また、外部メールサーバには例として Google の Gmail を挙げています。本記事の公開時点 (2010年9月4日) で Gmail のメールサーバ宛に送信できることを確認済みです。Gmail の仕様変更や、ISP やレンタルサーバなどへの送信のときは本記事を参考に、Postfix のドキュメントなどを読んでみてください。
メールをリレー (≒送信) するメールサーバの情報
本記事では、Google が提供している Gmail のメールサーバを例として取り上げます。ISP やレンタルサーバのメールサーバを用いるときなどは、本記事の内容を参考に Postfix のドキュメントなどをお読みください。項目 | 値 |
---|---|
外部メールサーバの FQDN | smtp.gmail.com |
外部メールサーバのポート番号 | 587 |
Gmail でのメールアドレス | iwaim.sub@gmail.com |
Gmail でのパスワード | gmailpasswd |
Postfix の設定
localhost の Postfix は次のように設定します。main.cf の設定
main.cf の「relayhost」にて、リレー先のメールサーバを指定します。 また、「smtp_sasl_auth_enable」で SMTP 認証を有効化し、「smtp_use_tls」で TLS を使うようにします。「smtp_sasl_password_maps」では SMTP 認証のときに用いるアカウント名とパスワードを列挙したファイルを指定します。「smtp_sasl_security_options」は必要に応じて設定してください。 postfix-2.6.3-2vl5 に同梱されている main.cf との差分 (diff) は次のようになります。--- main.cf 2010-08-15 16:43:47.000000000 +0900 +++ /etc/postfix/main.cf 2010-08-15 17:09:19.000000000 +0900 @@ -311,6 +311,11 @@ #relayhost = [mailserver.isp.tld] #relayhost = uucphost #relayhost = [an.ip.add.ress] +relayhost = [smtp.gmail.com]:587 +smtp_sasl_auth_enable = yes +smtp_sasl_password_maps = hash:/etc/postfix/smtpauth_passwd +smtp_sasl_security_options = +smtp_use_tls = yes # REJECTING UNKNOWN RELAY USERS #「smtp_sasl_password_maps」の値「hash:/etc/postfix/smtpauth_passwd」のパス部分 (「hash:」よりも後ろの部分) は任意のパス、ファイル名で問題ありません。
アカウント名とパスワードの設定
main.cf で設定したファイルにメールサーバのFQDNとアカウント名、パスワードのテーブルを作成します。「リレー先メールサーバのFQDN アカウント名:パスワード」を一行で記述します。アカウント名とパスワードの間は「:」で繋ぎます。Gmail の場合はアカウント名に「@gmail.com」が必要なのでメールアドレス形式になっていますが、ISP のメールサーバなどを使う場合はこの点に注意してください。smtp.gmail.com iwaim.sub@gmail.com:gmailpasswd次に、postmap(1) で検索テーブルを構築します。
# /usr/sbin/postmap hash:/etc/postfix/smtpauth_passwd
動作確認
Postfix を再起動などを行って、今回変更した設定を読み込んでください。そして、mail(1) やメーラーなどで Postfix にメールを渡してみてください。次のようにstatusが「sent」になっていれば成功です。(省略) Sep 4 05:30:49 vine5 postfix/smtp[6258]: XXXXXXXXXX: to=, relay=smtp.gmail.com[74.125.127.109]:587, delay=9.3, delays=0.42/0.29/4.1/4.6, dsn=2.0.0, status=sent (250 2.0.0 OK 1111111111 xxxxxxxxxxxxxxxxxx) (省略)