CentOS6でのメールサーバの設定(postfixその2)

スポンサーリンク
スポンサーリンク

CentOS6でのメールサーバの設定です。
メール受信サーバ(pop3,imap4,pop3s,imap4s),送信サーバ(smtp,smtps,smtps-auth)として設定します。
サーバとして postfix,dovecotを使用します。
以下を設定します。
-postfix の main.cf の設定
-postfix の master.cf の設定
-dovecot の設定

postfix の main.cf の設定 については、前回 を参照してください。

今回は、postfix の master.cf の設定についてを説明します。

postfix の master.cf の設定

main.cf で全体的な設定を行った後、master.cf で個別の設定を行います。
master.cf はデーモン毎の設定を記述します。master.cf での設定は、main.cf の設定を上書きます。
smtp , smtps , submission の箇所を以下のようにします。

/etc/postfix/master.cf

smtp      inet  n       -       n       -       -       smtpd
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

SMTP通信を暗号化にて行うsmtps(SMTP over SSL)の設定、SMTP接続の際に認証を要求するようにする設定を行います。

smtpd_tls_wrappermode
yes に設定することで、SMTPサーバは非標準の”ラッパー”モードで動作します。
通常、メールサーバとの暗号化通信は、メールクライアントソフトからのSTARTTLSコマンドにより始まります。
STARTTLSコマンドでサーバとネゴシエーションを行い、TLSが利用可能であることが確認されると、TLSによる暗号化通信が開始されます。
ところが一部のメーラでは、この STARTTLSコマンドを使わずに、サーバが常にTLSを使う非標準”ラッパー”モードでTLSを使用するため、本設定にて、postfixを非標準の”ラッパー”モードで動作させます。
この設定を main.cf に書いてしまうと、サーバは全ての通信を TLS で行う為、サーバに対して暗号化通信を行わない通常の接続が行えなくなります。
その為、個別設定である master.cf の smtps の箇所に記述し、smtps だけに適用されるようにします。

smtpd_sasl_auth_enable
SASL 認証を有効にします。

smtpd_client_restrictions
自サーバ(=SMTPサーバ)がクライアント(ユーザのメールクライアントソフト、他のメールサーバ)からSMTP接続の要求を受けた際に適用するアクセス制限をカンマまたは空白で区切って指定します。
permit_sasl_authenticated,reject と指定することで、メールクライアントソフトが認証に成功した場合に要求を許可し、それ以外は拒否します。
これにより、smtpでユーザ認証を要求する、SMTP-AUTH として動作します。
main.cf でも本オプションは記述されていますが、通常のメールリレーの為、先の記事では permit に設定しています。
smtpsでは認証通過時のみ接続可能にするため、個別に master.cf で記述します。

submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

プロバイダでは、プロバイダ外の25番ポートへの通信はプロバイダのメールサーバのみ通し、各ユーザのPC等からの通信はブロックしています。これを Outbound Port 25 Blocking(OP25B) と呼びます。
ここでは、プロバイダ内のPCから、会社のサーバ等のプロバイダの外にあるメールサーバへのメール送信要求が行えるようにする為に、サブミッションポートの設定をします。
これを設定しないと、ケールクライアントソフトで、メール送信サーバにプロバイダの外にあるメールサーバを指定しても、メール送信を行えません。

smtpd_tls_security_level
Postfix SMTPサーバでのSMTP TLSセキュリティレベルを指定します。
encrypt を指定すると、クライアントが TLS暗号化を使うことを強制します。
この設定を main.cf に書いてしまうと、メール転送元のサーバが対応していない場合、そのサーバからのメールが届かなくります。
その為、個別設定である master.cf の submission の箇所に記述し、submission だけに適用されるようにします。

smtpd_sasl_auth_enable
smtpd_client_restrictions
先述の smtps の箇所の記述を参照してください。

注意点

master.cf で記述するオプションは、main.cfで書くと問題がありますので、main.cf には書かない様にしてください。
上記以外にも、例えば、TLS通信を行う為のオプション smtpd_enforce_tls があります。これを yes に設定してしまうと、全ての通信を TLS で行う為、サーバに対して暗号化通信を行わない通常の接続が行えなくなります。
結果、外部からメールが配送されてこなくなりますので、このようなオプションは個別設定である master.cf に記述します。

続きます

参考

Postfix 基本設定
Postfix TLSサポート
SSL/TLS
SMTP command reference:

コメント

タイトルとURLをコピーしました