STEP1で認証機構のない状態でメールの槽配送が出来るところまで設定し、既に動作確認もしていますので、STEP2で導入した外部の認証プログラム Cyrus-SASL を利用できるように Postfix を設定します。
STEP1で設定した main.cf に対して以下の修正を行います。
mynetworks = 127.0.0.0/8, [::1]/128
# SMTP認証に関する設定 以下を追記 ##########
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options =
noanonymous
noplaintext
smtpd_recipient_restrictions =
permit_sasl_authenticated
permit_mynetworks
reject_unauth_destination
reject_invalid_hostname
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_unauth_pipelining
# SMTP Over SSL(STARTTLS)に関する設定を追記 ####
smtpd_use_tls = yes
smtpd_tls_loglevel = 1
smtpd_tls_CAfile = /etc/pki/CA/cacert.pem
smtpd_tls_cert_file = /etc/pki/httpd/newcert.pem
smtpd_tls_key_file = /etc/pki/httpd/newkey.pem
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_tls_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_received_header = yes
# メールコマンドパイプラインに関するパラメータ(ML) ##
allow_mail_to_commands = alias, forward, include
設定した内容に関する説明です。
STEP1までの設定では、SMTPサーバーはLAN内のユーザーに対してメール配送を認める設定になっていますが、メールの配送はサーバー自身のみに限定します。それには mynetworks が全てコメントされているのを確認して、以下の1行を追記します。これでサーバー自身以外の利用を認めないようにします。
つまり、この設定に対して認証したユーザーのみメールの配送を認める設定を行なう事になります。これで Postfix を再起動して、先程と同様にテストをすれば、SMTPサーバは配送を拒否します。
この基本ポリシに対し、以下のSMTP認証機構を設けて、SMTPサーバーの利用者を限定します。
今まではパラメータの修正が主でしたが、ここからは main.cf に SASLに関する新たな設定を追記していきます。
SASL 認証を有効にします。
認証アカウント名、@移行を定義
クライアントに提供する認証メカニズムを指定
※1 noplaintext の指定がないと平文認証も可能になるので Thunderbird で STARTTLS + 暗号化されたパスワード認証 に限定したい場合は必須。
受信者アドレス制限
パラメータはリンク先のドキュメントを参照して下さい。
以下、追記した設定の内容です。
STARTTLS が使える事をクライアントに通知します。
1 は TLSハンドシェイクと証明書の情報をログに記録します。詳細はリンク先ドキュメントを参照して下さい。
SSL通信に必要な証明書を指定してます。CAfile は独自に立ち上げた認証局の公開鍵、cert_file、key_file は サーバ証明書と秘密鍵です。
作成手順についてはこちらで紹介しています。
ここで紹介した Apache WebサーバーのSSL化に使用した証明書をそのまま流用して動作確認しています。
クライアントサイドのTLSセッションキャッシュを指定します。
上記キャッシュする時間を指定します。
Receivedメッセージヘッダに 証明書CommonName情報を付加します。(デフォルトは付加しない)
以下、必要のない設定です。
メーリングリスト FML8を使う場合、メールコマンドパイプラインに関するパラメータを指定します。
Thunderbird でのみ動作確認しています。
ツール > アカウント設定 > 送信(SMTP)サーバー
接続の保護:STARTTLS
認証方式 :暗号化されたパスワード認証」
ユーザー名:username もしくは userneme@mydomain.net
CentOS6 の場合は動作ログは以下で確認できます。
仮に動作か国が出来た場合でも、ユーザーの設定によってセキュアでない接続がされては意味がありません。
接続の保護:なし
認証方式 :平文パスワード
ユーザー名:username もしくは userneme@mydomain.net
として、設定したポリシー通りに接続を拒否するか確認して下さい。もし、接続できてしまう場合は、main.cf の "smtpd_sasl_security_options" で指定されているパラメータを見直してみて下さい。
以上で SMTPサーバー(Postfix)に認証機構を持たせ、クライアントとサーバー間の通信経路の暗号化が可能になりました。目的地まで STARTTLS で可能であれば、最終目的のメールサーバまで通信経路も保護されるセキュアなメール送信サーバが構築出来た事になります。
先に構築したPOP受信サーバーも同様に通信経路を暗号化で保護していますので、同じメールサーバー内で完結する組織内のメールのやり取りにおいては、LAN、WANに関係なく、メールのやり取りを盗聴のリスクから守る事が出来ます。
以上でセキュリティに配慮したメールサーバーの構築は完了ですが、引き続き、ここで構築したメールサーバーを利用したメーリングリスト管理システムを導入する手順について説明します。