原文(英語)はこちら
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 は代替手段として検討に値するでしょう。
以下のトピックについて詳しく説明しています。
既に述べたように、SASL認証はPostfixとは別に実装されています。このため、Postfix SMTPサーバにおけるSASL認証の設定には2種類の工程が必要です。
SASL 認証に適したしくみの一覧を提示するように SASLの実装を行い、実際に使うSASL実装に応じて、リモートSMTPクライアントの認証データをシステムのパスワードファイルまたはその他のデータベースと照合して検証する認証バックエンドを構成します。
SASL 認証を有効にし、クライアントがメールを中継したり、クライアントが使用できるエンベロープ送信者アドレスを制御したりすることを許可するように Postfix SMTP サーバーを設定します。
Postfix SMTP サーバーで認証を成功させるには、機能する SASL フレームワークが必要です。したがって、Postfix を設定するより前にまず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はPOP/IMAPクライアントを認証する独自の構成を備えたPOP/IMPAサーバです。Postfix SMTPサーバがDovecot SASLを使う場合、Dovecotにおける設定の一部が流用されます。Dovecot認証サーバの構成および操作方法についてはDovecotの文書を参照してください。
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サーバのしくみとして plain
と login
が使えるよう設定しています。
Postfix SMTPサーバでSASL認証を有効化し使えるようにするには「SASL認証の有効化とPostfix SMTPサーバにおける認証」の節に進んでください。
Cyrus SASLフレームワークは、さまざまなアプリケーション(POP、IMAP、SMTPなど)に対応しています。アプリケーションが違えば別の設定が必要になることもあります。その結果、アプリケーションごとに独自の設定ファイルを持つことになる可能性があります。
Cyrus SASLを設定するとき、最初にすることは、Postfix SMTPサーバが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 のバージョンと使用されている 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/
)が記されている場合に当てはまります。