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

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 の書き方

  1. リレー先サーバのアドレスと、認証で使用するユーザ名とパスワードを記述したファイル /etc/postfix/relay_password を作成する。
  2. /etc/postfix/relay_password の内容

    mail.example.com              username:password
    [submission.example.org]:587  username:password
    

    main.cfrelayhost で記述したメールサーバ名(ホスト名)と同じ記述をしないとうまく動作しない。

    例:
    relayhost で [smtp.example.com] と記述した場合、smtp_sasl_password_maps でも [smtp.example.com] と記述する必要がある。

  3. postmap コマンドを使用し、パスワードファイルから検索データベースを作成する。
  4. [shell]# postmap hash:/etc/postfix/relay_password
    

    実行後、/etc/postfix/relay_password.db データベースファイルが作成される。

  5. postfix を再読み込みし、設定を反映させる。
  6. [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 暗号化する。
smtp_tls_CAfile [7]
CA証明書(認証局証明書)を指定する。
Root CA 証明書が ca-certificates パッケージ[8]に含まれているので、それを使う。

エラーログの例

うまく動作しない場合、ログ(/var/log/maillog)を参考にする。

参考ページ

脚注

  1. Postfix設定パラメータ relayhost (www.postfix-jp.info)
  2. Postfix manual - transport(5) (www.postfix-jp.info)
  3. Postfix SASL Howto - Postfix SMTP クライアントで SASL 認証を有効にする (www.postfix-jp.info)
  4. Postfix で、Gmail にメールをリレーする - 私の二次記憶 (d.hatena.ne.jp)
  5. Postfix設定パラメータ smtp_use_tls (www.postfix-jp.info)
  6. Postfix設定パラメータ smtp_tls_security_level (www.postfix-jp.info)
  7. Postfix設定パラメータ smtp_tls_CAfile (www.postfix-jp.info)
  8. Mozilla Included CA Certificate List — Mozilla (www.mozilla.org)
LINEで送る このエントリーをはてなブックマークに追加
個人用ツール
名前空間
変種
表示
操作
案内
ツールボックス

注目のページ

このサイトのはてなブックマーク数