Postfix でメールリレーの設定 (SMTP クライアント + SMTP Auth)
提供:maruko2 Note.
目次 |
メールリレーの設定
ローカルメール以外をリレーさせる設定。
main.cf
relayhost = [mail2.example.com] relayhost = [mail.example.com]
[hostname] のように、転送先ホスト名を [ ] で囲むと MX検索をしなくなる。[1] 複数行指定した場合、下の行が優先される。 |
特定のドメインごとにリレー先を変えるには、transport で設定する。[2]
main.cf
transport_maps = hash:/etc/postfix/transport
transport テーブルの例
example.com : foo.com smtp:[mail.foo.com] bar.co.jp smtp:[mx.bar.co.jp] * smtp:10.20.30.40
- 1行目: リレーせず直接ローカル配信する設定。
- 2,3行目: 特定のドメインをリレーさせる設定。
- 4行目: その他すべてをリレーさせる設定。
transport テーブル編集後は、ハッシュ化すること。
[shell]# postmap /etc/postfix/transport
リレー先サーバーがSMTP認証(SMTP-AUTH)を要求する場合の設定
SMTP認証(SMTP-AUTH)が必要なサーバにリレーする場合、Postfix SMTP クライアントの SASL 認証機能を有効にすることで SMTP Auth に対応することができる。
main.cf の設定
relayhost = [submission.example.org]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/relay_password smtp_sasl_security_options = noanonymous
- relayhost
- ローカルメール以外をリレーするメールサーバ名(ホスト名)を指定する。
- smtp_sasl_auth_enable
- デフォルト: no
- Postfix SMTP クライアントの SASL 認証を有効にする。
- smtp_sasl_password_maps
- デフォルト: 指定無し
- リレー先サーバのアドレスと、認証で使用するユーザ名とパスワードを記述したファイルを指定する。
- smtp_sasl_security_options
- デフォルト: noplaintext, noanonymous
- Postfix SMTP クライアントで使用する認証メカニズム。
- noplaintext
- 平文パスワードを使う認証方法を許可しません。
- noactive
- active (非辞書) 攻撃を受けるような方法を許可しません。
- nodictionary
- passive (辞書) 攻撃を受けるような方法を許可しません。
- noanonymous
- 匿名ログインを許可しません。
- mutual_auth
- 相互認証を提供する方法のみを許可します (SASL バージョン 1 では使えません)。
smtp_sasl_password_maps の書き方
- リレー先サーバのアドレスと、認証で使用するユーザ名とパスワードを記述したファイル /etc/postfix/relay_password を作成する。
- postmap コマンドを使用し、パスワードファイルから検索データベースを作成する。
- postfix を再読み込みし、設定を反映させる。
/etc/postfix/relay_password の内容
mail.example.com username:password [submission.example.org]:587 username:password
main.cf の relayhost で記述したメールサーバ名(ホスト名)と同じ記述をしないとうまく動作しない。 例: |
[shell]# postmap hash:/etc/postfix/relay_password
実行後、/etc/postfix/relay_password.db データベースファイルが作成される。
[shell]# /etc/init.d/postfix reload
リレー先サーバーがSMTP認証とTLS暗号化を要求する場合(Gmailにリレーする設定)
main.cf
GmailのSMTPサーバー(smtp.gmail.com)にリレーする場合、SMTP認証とTLS暗号化を組み合わせる必要がある。[3][4]
### SMTP認証(SMTP-AUTH) relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/relay_password smtp_sasl_security_options = noanonymous ### TLS暗号化(STARTTLS) #smtp_use_tls = yes smtp_tls_security_level = may smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
- smtp_use_tls [5]
- デフォルト: no
- リレー先サーバが STARTTLS を要求すると、TLS暗号化を有効にする。
- smtp_tls_security_level [6]
- デフォルト: 空白
- Postfix 2.3以上は、smtp_use_tls ではなく smtp_tls_security_level を使用する。
- may: リレー先 SMTP サーバが TLS をサポートしている場合、TLS 暗号化する。
エラーログの例
うまく動作しない場合、ログ(/var/log/maillog)を参考にする。
- TLSが有効になっていないか、TLSの設定に問題がある。
said: 530 5.7.0 Must issue a STARTTLS command first.
certificate verification failed for smtp.gmail.com[74.125.25.109]:587: untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certificate Authority
said: 530-5.5.1 Authentication Required. Learn more at 530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257
参考ページ
- Postfix TLS Support (www.postfix.org)
- Postfix legacy TLS Support (www.postfix.org)
- Postfix TLSサポート (www.postfix-jp.info)
脚注
- ↑ Postfix設定パラメータ relayhost (www.postfix-jp.info)
- ↑ Postfix manual - transport(5) (www.postfix-jp.info)
- ↑ Postfix SASL Howto - Postfix SMTP クライアントで SASL 認証を有効にする (www.postfix-jp.info)
- ↑ Postfix で、Gmail にメールをリレーする - 私の二次記憶 (d.hatena.ne.jp)
- ↑ Postfix設定パラメータ smtp_use_tls (www.postfix-jp.info)
- ↑ Postfix設定パラメータ smtp_tls_security_level (www.postfix-jp.info)
- ↑ Postfix設定パラメータ smtp_tls_CAfile (www.postfix-jp.info)
- ↑ Mozilla Included CA Certificate List — Mozilla (www.mozilla.org)