.
Mailサーバー => メールサーバ構築 20143.メール送信サーバの構築 > SMTP 認証機構の実装
Linux 活用ガイド:目次

サーバ構築ガイド

レンタル ガイド

ショップ 構築ガイド

情報漏洩対策

SMTPサーバ構築 【STEP3】Postfix で SMTP認証を有効に

STEP1で認証機構のない状態でメールの槽配送が出来るところまで設定し、既に動作確認もしていますので、STEP2で導入した外部の認証プログラム Cyrus-SASL を利用できるように Postfix を設定します。

Postfix SMTP認証に関する設定

STEP1で設定した main.cf に対して以下の修正を行います。

/etc/postfix/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

main.cf解説

設定した内容に関する説明です。

無条件で配送を認めるネットワークを限定する

STEP1までの設定では、SMTPサーバーはLAN内のユーザーに対してメール配送を認める設定になっていますが、メールの配送はサーバー自身のみに限定します。それには mynetworks が全てコメントされているのを確認して、以下の1行を追記します。これでサーバー自身以外の利用を認めないようにします。

つまり、この設定に対して認証したユーザーのみメールの配送を認める設定を行なう事になります。これで Postfix を再起動して、先程と同様にテストをすれば、SMTPサーバは配送を拒否します。

この基本ポリシに対し、以下のSMTP認証機構を設けて、SMTPサーバーの利用者を限定します。

SMTP認証に関する設定

今まではパラメータの修正が主でしたが、ここからは main.cf に SASLに関する新たな設定を追記していきます。


SASL 認証を有効にします。


認証アカウント名、@移行を定義


クライアントに提供する認証メカニズムを指定

  • smtpd_sasl_security_options =
    noanonymous ← anonymous ログインを無向にします
    noplaintext ← PLAINテキスト認証を無効にします。※1

※1 noplaintext の指定がないと平文認証も可能になるので ThunderbirdSTARTTLS + 暗号化されたパスワード認証 に限定したい場合は必須。


受信者アドレス制限

パラメータはリンク先のドキュメントを参照して下さい。

  1. 認証に成功した場合、$myorigin または $mydomain で定義されたドメイン名を付加します。
  2. クライアントのIPアドレスが $mynetworks にリストアップされたネットワークまたは。ネットワークアドレスのいずれかにマッチする場合、要求を許可します。(肝)この設定は、のちに紹介する FMLによるメーリングリストを運用する際は必須です。
  3. 名前解決の結果 $relay_domains にマッチしない場合は中継を拒否します。
  4. HELO、EHLOパラメータに誤った文法のホスト名があれば要求を拒否します。
  5. MAIL FROM コマンドのアドレスが FQDN 形式でない場合は要求を拒否します。"non_fqdn_reject_code" パラメータで 要求に対する応答コードを指定(しない場合はデフォルト値の Error 504)
  6. RCPT TO コマンドのアドレスが FQDN 形式でない場合に要求を拒否。
    "non_fqdn_reject_code" パラメータで 要求に対する応答コードを指定(しない場合はデフォルト値の Error 504)
  7. 不正な SMTP コマンド(パイプライニング)を拒否します。FML(メーリングリスト)サービスなどを外部コマンドを実行する必要がある場合は、この設定と共に "allow_mail_to_commands" パラメータを指定。(後述)

SMTP Over SSL(STARTTLS)に関する設定

以下、追記した設定の内容です。


STARTTLS が使える事をクライアントに通知します。


1 は TLSハンドシェイクと証明書の情報をログに記録します。詳細はリンク先ドキュメントを参照して下さい。


SSL通信に必要な証明書を指定してます。CAfile は独自に立ち上げた認証局の公開鍵、cert_file、key_file は サーバ証明書と秘密鍵です。

作成手順についてはこちらで紹介しています。

ここで紹介した Apache WebサーバーのSSL化に使用した証明書をそのまま流用して動作確認しています。


クライアントサイドのTLSセッションキャッシュを指定します。


上記キャッシュする時間を指定します。


Receivedメッセージヘッダに 証明書CommonName情報を付加します。(デフォルトは付加しない)

その他の設定

以下、必要のない設定です。

メーリングリスト FML8を使う場合、メールコマンドパイプラインに関するパラメータを指定します。

/etc/postfix/main.cf を修正したら、Postfix を再起動して変更を適用します。引き続きローカルクライアントから、ポリシー通りに動作するか確認します。

クライアント側の設定

Thunderbird でのみ動作確認しています。

ツール > アカウント設定 > 送信(SMTP)サーバー

接続の保護:STARTTLS
認証方式 :暗号化されたパスワード認証」 
ユーザー名:username もしくは userneme@mydomain.net

CentOS6 の場合は動作ログは以下で確認できます。

# tail -f /var/log/maillog

仮に動作か国が出来た場合でも、ユーザーの設定によってセキュアでない接続がされては意味がありません。

接続の保護:なし
認証方式 :平文パスワード 
ユーザー名:username もしくは userneme@mydomain.net

として、設定したポリシー通りに接続を拒否するか確認して下さい。もし、接続できてしまう場合は、main.cf の "smtpd_sasl_security_options" で指定されているパラメータを見直してみて下さい。

さいごに

以上で SMTPサーバー(Postfix)に認証機構を持たせ、クライアントとサーバー間の通信経路の暗号化が可能になりました。目的地まで STARTTLS で可能であれば、最終目的のメールサーバまで通信経路も保護されるセキュアなメール送信サーバが構築出来た事になります。

先に構築したPOP受信サーバーも同様に通信経路を暗号化で保護していますので、同じメールサーバー内で完結する組織内のメールのやり取りにおいては、LAN、WANに関係なく、メールのやり取りを盗聴のリスクから守る事が出来ます。

以上でセキュリティに配慮したメールサーバーの構築は完了ですが、引き続き、ここで構築したメールサーバーを利用したメーリングリスト管理システムを導入する手順について説明します。

Postfix & Dovecot & Mailman


おすすめメールサーバ書籍

bottom_mark
ページ最上部
ページ最上部 前のページ