投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償、寄付歓迎) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★

2016年2月17日水曜日

【Postfix 2.6.6 x86_64】STARTTLSでSMTPサーバーへリレーする方法【Linux CentOS 6.7 64bit minimal】

「Postfixから外部SMTPサーバへリレーする際にSTARTTLSで接続できるように設定する」


Postfixは「外部のSMTPサーバ」にリレーすることでも、メールを送信することができる。
もちろん、自力で各ドメインのメールサーバに届けることもできる。

SMTP-AUTUを要求する「外部のSMTPサーバ」に、
平文でユーザー名とパスワードを送り認証を受けて、メールを送り出す方法や、
自力でメールを届けさせる方法については次のページで扱った。
http://akira-arets.blogspot.jp/2015/05/postfix-266-x8664linux-centos-65-64bit.html

これを基本として、ここでは、リレー先の「外部のSMTPサーバ」がSTARTTLSに対応していて、
Postfixとの間で暗号化経路を構成してからSMTP-AUTHする場合を扱う。
ただし、外部SMTPサーバ側がSTARTTLSに対応している必要がある。

また、リレー先を複数用意おいて、メインのリレー先に到達させられない場合に対応できるようにする。

環境は、CentOS 6.7 64bit minimal で行った。
(注意)以下の設定は、安全なプライベートネットワークでの動作のみ考慮している。


■Postfixの設定


○基本的な設定

外部のSMTPサーバへのリレーを受け付ける送信元ネットワーク
(スペース区切って列挙できる。)
# postconf -e "mynetworks=127.0.0.0/8 [::1]/128 192.168.0.0/16 172.16.0.0/12"

メールを受け取るインターフェイス
# postconf -e inet_interfaces=all



○外部のSMTPサーバにリレーするための設定

・メインのリレー先SMTPサーバ([example.com]:587 のように[ ]で囲むとMXレコードを引かない。)
# postconf -e relayhost=example.com:587

・バックアップのリレー先SMTPサーバ(MXレコードを引かない場合は、同様に[ ]で括る。)
(スペースで区切って列挙できる。)
# postconf -e smtp_fallback_relay="backup.example.com:587"

このようにsmtp_fallback_relayでバックアップとしてのSMTPサーバを登録しておくことで、
メインのリレーサーバーが応答しない場合には、即座にバックアップSMTPサーバへ接続するようになる。
(注)
Postfix2.2以前では、smtp_fallback_relayは、fallback_relayという名前だった。†3
メインのリレー先が利用不可になっているときに直ちにsmtp_fallback_relayでリトライされる。†2


リレー先SMTPサーバの認証情報をファイルに作成
# echo "example.com:587 myusername:thisispassword" >> /etc/postfix/relay_password
# echo "backup.example.com:587 myusername:thisispassword" >> /etc/postfix/relay_password

認証情報ファイルからdbファイルを作成して、Postfixに登録
# postmap /etc/postfix/relay_password
# postconf -e smtp_sasl_password_maps=hash:/etc/postfix/relay_password



○リレー先SMTPサーバから認証を受けるための必要な設定

予め、次のようにパッケージを追加インストールしておく。
これは、平文SMTP-AUTHでも必要なものである。
# yum install cyrus-sasl-plain

# postconf -e smtp_sasl_auth_enable=yes
↑この設定がなければ、次のようなエラーが発生する。(/var/log/maillog)
status=bounced
said: 530 5.7.0 Authentication required (in reply to MAIL FROM command)
# postconf -e smtp_sasl_security_options=noanonymous
↑この設定がなければ、次のようなエラーが発生する。(/var/log/maillog)
status=deferred
warning: SASL authentication failure: No worthy mechs found
SASL authentication failed; cannot authenticate to server
no mechanism available
以上までは、平文でSMTP-AUTHを行う場合と同じである。


<★>
次の設定を行うことによって、STARTTLSに対応してTLSによる暗号化経路が作成されるようになる。
(ただし、外部SMTPサーバ側がSTARTTLSに対応している必要がある。)

# postconf -e smtp_tls_security_level=may

外部SMTPサーバが非対応ならば、平文でSMTP-AUTHが試みられる。
その場合、平文でパスワードを含む認証情報がネットワーク上を流れることになるので注意。



○TLS通信を行おうとする外部SMTPサーバが発行する「証明書」を検証する設定

以上の設定だけでも、メールを外部のサーバにリレーすることはできた。
しかし、次のようなメッセージがログ(/var/log/maillog)に確認された。
これは外部SMTPサーバが提示する公開鍵証明書の正当性が確かめられなかったことを示す。
Feb 16 00:19:13 secondary postfix/smtp[5777]: certificate verification failed for backup.example.com:587: untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certificate Authority
Feb 16 00:19:14 secondary postfix/smtp[5777]: xxxxxxxxxD: to=<test@example.com>, relay=backup.example.com:587, delay=0.63, delays=0.24/0.03/0.31/0.05, dsn=2.0.0, status=sent (250 2.0.0 xxxxxxxxxxxxxx Message accepted for delivery)
Feb 16 00:19:14 secondary postfix/qmgr[5741]: xxxxxxxxxD: removed
これは、次の設定を行うことによって解消された

# postconf -e smtp_tls_CAfile=/etc/pki/tls/certs/ca-bundle.crt



○Postfixの再起動

再起動をして、設定を有効化した。

# service postfix restart



■動作テスト

次のようなコマンドで、以上で設定済みのローカルのPostfixにメールを送った。
# echo testtest | sendmail -f 送信元アドレス 受信先アドレス


リレー先SMTPサーバを経て受信先では、次のようなメールヘッダーを確認できた。
(sendmailコマンド→Postfix→リレー先 まで抜粋)
Received: from local.example.com
    (authenticated bits=0)
    by backup.example.com (/) with ESMTP id xxxxxxxxxxxxxx
    (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO)

    for <test@example.com>; Tue, 16 Feb 2016 00:23:24 +0900 (JST)
    (envelope-from me@example.com)
Received: by local.example.com (Postfix, from userid xx)
    id xxxxxxxxxD; Tue, 16 Feb 2016 00:23:23 +0900 (JST)
Message-Id: <201602xxxxxxxxx.xxxxxxxxxD@local.example.com>
Date: Tue, 16 Feb 2016 00:23:23 +0900 (JST)
From: me@example.com (test)
To: undisclosed-recipients:;

testtest

以上


<参考>
(1) Postfix からのメール送信も SSL で暗号化する
< https://www.compnet.jp/archives/3175 > 2016年2月16日

(2) postfix smtp_fallback_relay for deferred messages to a single domain
< https://serverfault.com/questions/452824/postfix-smtp-fallback-relay-for-deferred-messages-to-a-single-domain > 2017年6月20日

(3) Postfix main.cf ファイルフォーマット/smtp_fallback_relay
< http://www.postfix-jp.info/trans-2.3/jhtml/postconf.5.html > 2017年6月20日

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad