Postfix

SASL認証 - Postfix解説文書

原文(英語)はこちら


PostfixはどのようにしてSASL認証を使うのか

SMTP サーバーは、SMTP クライアントがリモートの宛先にメールを送信することを許可されているのか、それともサーバー自体が担当する宛先にのみメールを送信することを許可されているのかを決定する必要があります。 通常、SMTP サーバーは、クライアントの IP アドレスがサーバーの IP アドレスと「同じネットワーク」内にある場合に、リモート宛先へのメールを受け入れます。

SMTP サーバーのネットワーク外にある SMTP クライアントが、「同じネットワーク」と同等の権限を取得するには別の方法が必要です。この要求に対処するため、Postfix は SASL 認証(RFC 4954、以前の RFC 2554)に対応しています。これにより、リモート SMTP クライアントは Postfix SMTP サーバーに対して認証でき、Postfix SMTP クライアントはリモート SMTP サーバーに対して認証できるようになります。 クライアントが認証されると、サーバーはクライアントに「同じネットワーク」と同等の権限を与えることができます。

Postfix は SASL 自体を実装しませんが、代わりに既に実装されてるものを構成要素として使用します。これは、一部の SASL に関連する設定ファイルは Postfix に属し、残りの設定ファイルは Postfix が使う特定の SASL 実装に属することを意味します。このドキュメントでは、Postfix 構成と非 Postfix 構成の両方について説明します。

注意: Postfix をわざわざインストールする人は、Postfix が他のメーラーよりも安全であると期待しているかもしれません。Cyrus SASL ライブラリには多くのコードが含まれています。 これにより、Postfix は Cyrus SASL ライブラリを使用する他のメール システムと同じくらい安全になります。Dovecot は代替手段として検討に値するでしょう。

以下のトピックについて詳しく説明しています。

Postfix SMTPサーバでSASL認証を設定する

既に述べたように、SASL認証はPostfixとは別に実装されています。このため、Postfix SMTPサーバにおけるSASL認証の設定には2種類の工程が必要です。

Postfix SMTP サーバーで認証を成功させるには、機能する SASL フレームワークが必要です。したがって、Postfix を設定するより前にまずSASLの設定を行うことが常に必要です。

以下のトピックについて詳しく説明しています。

どのSASL実装が使えるのか?

現在のところ、Postfix SMTPサーバで使えるSASL認証のしくみはCyrus SASLとDovecot SASLです。

注意

現在のPostfixバージョンは、複数のSASL認証の実装ソフトを使えるプラグイン構造をとっています。Postfix 2.3より前のバージョンではCyrus SASLしか使えません。

どのSASLソフトがPostfixにコンパイルされているのかを確認するには、以下のコマンドを実行してください。

% postconf -a (SASL support in the SMTP server)
% postconf -A (SASL support in the SMTP+LMTP client)	  

これらのコマンドはPostfixバージョン2.3以降でのみ使えます。

Dovecot SASLを設定する

DovecotはPOP/IMAPクライアントを認証する独自の構成を備えたPOP/IMPAサーバです。Postfix SMTPサーバがDovecot SASLを使う場合、Dovecotにおける設定の一部が流用されます。Dovecot認証サーバの構成および操作方法についてはDovecotの文書を参照してください。

PostfixからDovecotへのSASLコミュニケーション

Postfix SMTP サーバとDovecot SASL との間の通信は、UNIXドメインソケットまたはTCPソケット経由して行われます。ここではプライバシーを向上させるために、UNIX ドメインソケットを使用します。

Postfixのキューが /var/spool/postfix/ にあることを想定した、Dovecotバージョン2の設定の一部を以下に示します。

 1 conf.d/10-master.conf:
 2     service auth {
 3       ...
 4       unix_listener /var/spool/postfix/private/auth {
 5         mode = 0660
 6         # Postfixのuserとgroupは初期値のままであるという想定
 7         user = postfix
 8         group = postfix        
 9       }
10       ...
11     }
12 
13 conf.d/10-auth.conf
14     auth_mechanisms = plain login

4行目ではDovecot SASL socketを /var/spool/postfix/private/auth に配置し、5から8行目では読み書きを postfix ユーザー・グループに限定しています。14行目ではPostfix SMTPサーバのしくみとして plainlogin が使えるよう設定しています。

Postfix SMTPサーバでSASL認証を有効化し使えるようにするには「SASL認証の有効化とPostfix SMTPサーバにおける認証」の節に進んでください。

Cyrus SASLを設定する

Cyrus SASLフレームワークは、さまざまなアプリケーション(POP、IMAP、SMTPなど)に対応しています。アプリケーションが違えば別の設定が必要になることもあります。その結果、アプリケーションごとに独自の設定ファイルを持つことになる可能性があります。

Cyrus SASLを設定するとき、最初にすることは、Postfix SMTPサーバがSASLフレームワークを使う方法を記した設定ファイルの名前と場所を決めることです。

Cyrus SASL設定のファイル名

設定ファイルのファイル名(既定値:smtpd.conf)は変更することができます。ファイル名はPostfix SMTPサーバがCyrus SASLライブラリに送った値と、Cyrus SASLにによって追加された接尾辞.confをつなげたものです。

Postfix によって送られる値は、Cyrus SASL を使うサーバー構成要素の名前です。既定値は smtpd で、以下に示すいずれかの変数で構成されます。

/etc/postfix/main.cf:
    # Postfix 2.3以降
    smtpd_sasl_path = smtpd

    # Postfix 2.3より前のバージョン
    smtpd_sasl_application_name = smtpd

Cyrus SASL設定ファイルの場所

Cyrus SASL が指定されたファイルを検索する場所は、Cyrus SASL のバージョンと使用されている OS/ディストリビューションによって異なります。

以下より詳しい情報を得ることができます。

  • Cyrus SASLバージョン2.xは /usr/lib/sasl2/ で設定ファイルを探します。

  • Cyrus SASLバージョン2.1.22以降は /etc/sasl2/ で設定ファイルを探します。

  • Postfix 2.5以降を使うと、cyrus_sasl_config_path を使って検索パスを指定することができます。コロンで区切って複数のパスを指定することもできます。値を空(既定値)に設定すると、検索パスはCyrus SASLライブラリをコンパイルしたパスになります。

  • 一部の Postfix ディストリビューションでは、cyrus_sasl_config_path に空ではない既定値を使い、/etc/postfix/sasl//var/lib/sasl2/ などで Cyrus SASL 設定ファイルを探します。予想される場所を決めるには、postconf cyrus_sasl_config_path の出力またはディストリビューションごとの文書を参照してください。

  • 一部の Debian ベースの Postfix ディストリビューションでは、パッチが適用されて既定値以外の検索パスをハードコーディングしてあり、「cyrus_sasl_config_path」パラメータで代替検索パスを設定できなくなっています。これは、ディストリビューションの文書に、「cyrus_sasl_config_path」 の既定値(空である可能性が高い) とは異なるPostfix 固有のパス(例: /etc/postfix/sasl/)が記されている場合に当てはまります。

PostfixからCyrusへのSASLコミュニケーション

SASL認証の有効化とPostfix SMTPサーバにおける認証

Postfix SMTPサーバでSASL認証を有効化する

Postfix SMTPサーバのポリシー - SASL認証のしくみにおける各設定

Postfix SMTPサーバでSASL認証を有効化する

SMTPサーバのSASL認証に関する追加設定

Postfix SMTPサーバでSASL認証を試す

Postfix SMTP/LMTPクライアントでSASL認証を設定する

SASL認証が使える状態でPostfixを構築する

Cyrus SASLバージョン1.5.xを使う

クレジット


トップページに戻る