LDAP_TABLE(5) LDAP_TABLE(5) 名前 ldap_table - Postfix LDAP クライアントの設定 書式 postmap -q "string" ldap:/etc/postfix/filename postmap -q - ldap:/etc/postfix/filename <inputfile 解説 Postfix メールシステムはオプションでアドレス書き換えやメールルーティン グのテーブルを使用します。これらのテーブルは通常 dbm または db フォーマ ットです。 そ れ以外に、検索テーブルとして LDAP データベースを指定することもできま す。 LDAP 検索を使うには、main.cf で LDAP ソースを検索テーブルとして定義しま す。例: alias_maps = ldap:/etc/postfix/ldap-aliases.cf /etc/postfix/ldap-aliases.cf ファイルは Postfix main.cf ファイルと同じ 書式であり、以下に示すようなパラメータを指定することができます。例は こ のマニュアルの最後にあります。 こ の 設 定 方法はPostfix バージョン2.1以降で使えます。古いバージョンの Postfixに対しては、"後方互換性" のセクションを参照してください。 LDAP SSL や STARTTLS についての詳細は以下の SSL と STARTTLS のセクショ ンを参照してください。 後方互換性 Postfixバージョン2.0以前との後方互換性のため、LDAP パラメータは main.cf でも定義できます。そうするためには、LDAPソースとしてスラッシュやドッ ト で 始 ま らない名前を指定してください。そうすることで LDAP パラメータは ソースに定義した名前、アンダースコア、パラメータ名という形で使えるよ う になります。例えば、マップが "ldap:ldapsource" として指定された場合、下 の "server_host" パラメータは main.cf では "ldapsource_server_host" と して定義されます。 注 意: この形式では、LDAP ソースのパスワードは、通常 world-readable な main.cf に書かれてしまいます。この形式のサポートは Postfix の将来のバー ジョンで削られる予定です。 Postfix 2.2はMySQLおよびPostgreSQLに対するクエリインターフェースを拡張 しました。そこには以前Postfix LDAPクライアントでのみ使えていた機能も 含 ん でいます。この仕事によりLDAPインターフェースも改良される機会を得まし た。大きな互換性問題としては、result_filter (意味に混乱を招くような名前 で した) は result_format という名前に変わったというのがあります。2.2以 前のLDAPクライアントとの後方互換性のため、今のところ result_format が セットされていなければ、result_filter を result_format の代わりに使えま す。新しい名前はこのパラメータの機能をよりよく反映しています。この互 換 性インターフェースは将来のリリースで削除されるかもしれません。 リストメンバーシップ $mynetworks や $mydestination、$relay_domains、$local_recipient_maps 等 のようなリストを格納するために LDAP を使う場合、テーブルはそれぞれの リ ス トメンバーを別々のキーで格納しなければいけないことを理解することが重 要です。この議論は DATABASE_README ドキュメントの "Postfix リスト対テー ブル" を参照してください。 $mydestination や $relay_domains 等でドメインの完全なリストを返したり $mynetworks で IP アドレスを返すテーブルを作っては「いけません」。 キーとしてマッチするそれぞれの項目と属性値を持つテーブルを作って「く だ さい」。LDAP データベースでは、キー自身を返すのは珍しいことではありませ ん。 例えば、$mydestination を定義するマップでこれをおこなっては「いけません 」: query_filter = domain=* result_attribute = domain その代わりこうします: query_filter = domain=%s result_attribute = domain 一般的な LDAP パラメータ 以 下の文章では、デフォルト値はカッコの中に与えてあります。注意: これら の変数に引用符を使わないでください; 少なくとも Postfix 設定ルーチンは引 用された文字列の扱い方を理解するようになるまでは。 server_host (デフォルト: localhost) LDAP サーバが動いているホストの名前。例えば server_host = ldap.example.com 使用している LDAP クライアントライブラリによっては、ここに複数の サーバを指定して、最初のサーバが失敗してもライブラリが順番にそれ らを試すことができます。またリストのそれぞれのサーバには、以下の ように指定することで (以下の server_port を上書きして) 異なる ポ ートを与えられます。 server_host = ldap.example.com:1444 OpenLDAP では、LDAP URL (のリスト) はホスト名とポートの両方を指 定することができます: server_host = ldap://ldap.example.com:1444 ldap://ldap2.example.com:1444 UNIX ドメインソケットを使った接続や LDAP SSL (後者は OpenLDAP が SSL サポート付きでコンパイルされた場合) を含めて、OpenLDAP ライ ブラリが受け付ける 全ての LDAP URL がサポートされます: server_host = ldapi://%2Fsome%2Fpath ldaps://ldap.your.com:636 server_port (デフォルト: 389) LDAP サーバが listen するポートは、例えば server_port = 778 timeout (デフォルト: 10 seconds) 検索がタイムアウトするまでの秒数、例えば timeout = 5 search_base (デフォルトはなし; これは設定しなければいけません) 検索をおこなう際の RFC2253 ベースの DN、例えば search_base = dc=your, dc=com Postfix 2.2以降で、このパラメータは以下の '%' 展開をサポートして います: %% これは文字としての '%' 文字で置き換えられます。 %s これは入力キーで置き換えられます。入力キーが予期しないメ タキーを加えないことを保証するために、 RFC 2253 引用符 を 使います。 %u 入力キーが user@domain の形のアドレスの場合、%u はアドレ スの (RFC 2253) 引用符付きのローカル部分で置き換えられ ま す。それ以外の場合は、%u は検索文字列全体で置き換えられま す。ローカル部分が空の場合、検索は差し止められて結果を 返 しません。 %d 入力キーが user@domain の形のアドレスの場合、%d はアドレ スの (RFC 2253) 引用符付きのドメイン部分で置き換えられ ま す。 それ以外の場合は、検索は差し止められて結果を返しませ ん。 %[SUD] search_base パラメータに対しては、上の文字を大文字にし た ものは小文字の場合と同じように振る舞います。result_format (以前は result_filter と呼ばれていました。「互換性」セ ク ショ ンと以下を参照してください) で使うと、結果の値ではな く入力キーの対応する構成要素に展開されます。 %[1-9] パターン %1, %2, ... %9 は入力キーのドメインの対応する 構 成 要 素 の 最 も 重 要な順に置き換えられます。入力キーが user@mail.example.com の場合、%1 は com、%2 は example で %3 は mail です。入力キーが完全修飾でなかったり指定された パターンすべてを満たすのに十分なドメイン要素がな い 場 合 は、検索は差し止められて結果を返しません。 query_filter (デフォルト: mailacceptinggeneralid=%s) ディレクトリの検索に使われる RFC2254 フィルタ。こ こ で %s は Postfix が解決しようとするアドレスに置き換えられます。例えば query_filter = (&(mail=%s)(paid_up=true)) このパラメータは以下の '%' 拡張をサポートします: %% これは文字としての '%' 文字で置き換えられ ま す。(Postfix 2.2以降) %s これは入力キーで置き換えられます。入力キーが予期しないメ タキャラクタを加えないようにするために、RFC 2254 引用符 を 使います。 %u 入力キーが user@domain 形式のアドレスの場合、%u はアドレ スの (RFC 2254 の) 引用符付きのローカル部分によって置き換 えられます。それ以外の場合は、%u は検索文字列全体で置き換 えられます。ローカル部分が空の場合、検索は差し止められ て 結果を返しません。 %d 入力キーが user@domain 形式のアドレスの場合、%d はアド レ スの (RFC 2254 の) 引用符付きのドメイン部分で置き換えられ ま す。それ以外の場合は、検索は差し止められて結果を返しま せん。 %[SUD] query_filter パラメータでは、上の文字を大文字にしたものは 小文字の場合と同じように振る舞います。result_format (以前 は result_filter と呼ばれていました。「互換性」セクション と 以下を参照してください) で使うと、結果の値ではなく入力 キーの対応する構成要素に展開されます。 上の %S や %U、%D 展開はPostfix 2.2以降で使えます。 %[1-9] パターン %1, %2, ... %9 は入力キーのドメインの対応する 構 成 要 素 の 最 も 重 要な順に置き換えられます。入力キーが user@mail.example.com の場合、%1 は com、%2 は example で %3 はmail です。入力キーが完全修飾でなかったり指定された パターンすべてを満たすのに十分なドメイン要素がな い 場 合 は、検索は差し止められて結果を返しません。 上の %1, ..., %9 展開はPostfix 2.2以降で使えます。 以下に記述される "domain" パラメータは、入力キーをマッチするドメ インのアドレスに制限します。"domain" パラメータが空でなければ 、 修飾されていないアドレスやマッチしないドメインのアドレスに対する LDAP 検索は抑制され、結果を返しません。 注意: 検索フィルタの周りに引用符を置いては「いけません」。 result_format (デフォルト: %s) Postfix 2.2より前のリリースでは result_filter と呼ばれています。 結果の属性に適用される書式のテンプレート。文字列を後置する (また は 前 置 する)のにもっともよく使われます。このパラメータは以下の '%' 拡張をサポートします: %% これは文字としての '%' 文字で置き換えられ ま す。(Postfix 2.2以降) %s これは結果の属性値によって置き換えられます。結果が空の場 合はスキップされます。 %u 結果の属性値が user@domain 形式のアドレスの場合は、%u は ア ド レ スのローカル部分によって置き換えられます。結果の ローカル部分が空の場合はスキップされます。 %d 結果の属性値が user@domain 形式のアドレスの場合は、%d は 属 性値のドメイン部分によって置き換えられます。属性値が修 飾されていない場合はスキップされます。 %[SUD1-9] 大文字と10進の数値の展開は結果ではなく入力キーを書き換 え ま す。 これらの振る舞いは query_filter の記述と同じです が、実際には入力キーは前もってわかっているため、結果テ ン プ レートで指定されたすべての情報を含まないキーの検索は省 略されて結果を返しません。 上の %S や %U、%D および %1, ..., %9 展開はPostfix 2.2 以 降で使えます。 例えば、"result_filter = smtp:[%s]" を使うと、mailHost 属 性 を transport(5) テーブルの基礎として使えるようになります。結果フィ ルタを適用すると、複数の属性値はカンマで区切られた文字列として連 結 さ れます。以下で説明される expansion_limit および size_limit パラメータは結果の値の数を制限できます。これは1つの値を返すべ き であるマップに特に便利です。 デフォルト値の %s はそれぞれの属性値がそのまま使われることを指定 します。 こ の パラメータはPostfixの2.2より前のリリースでは result_filter と呼ばれていました。"result_format" が指定されていなけれ ば、 デ フォ ルト値に頼る前に "result_filter" の値が使われます。これによ り古い設定ファイルとの互換性を提供します。 注意: 結果フォーマットの周りに引用符を置いては「いけません」。 domain (デフォルト: no domain list) これはドメイン名、ファイルへのパス、またはディレクトリのリストで す。指定されると、ローカル部分が *空でなく* マッチするドメインを 持つ、完全修飾された検索キーのみがが検索対象になりま す: 'user' 検索や裸のドメインの検索、"@domain" 検索はおこなわれません。これ は LDAP サーバの検索負荷をかなり減らすことができます。 domain = postfix.org, hash:/etc/postfix/searchdomains LDAP 検索の対象となるドメインを格納するのに LDAP を使わないの が 最もよい選択です。 注意: このパラメータを local(8) エイリアスに対して定義「しないで ください」。 この機能はPostfix 1.0以降で使えます。 result_attribute (デフォルト: maildrop) Postfix が検索によって返されるいずれのディレクトリエントリからも 読み込む属性で、これはEメールアドレスに解決されます。 result_attribute = mailbox, maildrop special_result_attribute (デフォルトなし) DN または URL を含むことができるディレクトリエントリの属性。これ が見つかると、それらの値を使って続けて再帰的に検索がなされます。 special_result_attribute = member DN の再帰呼び出しは、さらなる再帰をおこなう特別な属性を含めて主 検索と同じ result_attributes を取得します。URI 処理は URI 定義に 含まれ、かつ "result_attribute" にリストアップされた属性のみを取 得します。URI がマップの特別な結果属性のいずれかをリストアップし ていると、それらも取得されて再帰的に使われます。 scope (デフォルト: sub) LDAP 検 索 ス コ ー プ: sub または base または one。これらは LDAP_SCOPE_SUBTREE や LDAP_SCOPE_BASE、LDAP_SCOPE_ONELEVEL に 翻 訳します。 bind (デフォルト: yes) LDAP サーバにバインドするかどうか。LDAP の新しい実装ではクライア ントがバインドする必要はなく、時間の節約になります。例: bind = no バインドする必要がない場合、LDAP サーバへの SSL トンネルとなるロ ー カルマシンのポートに接続するように Postfix を設定することを検 討してもよいでしょう。LDAP サーバがネイティブで SSL をサポートし ていなければ、そのシステムにトンネル (ラッパでもプロキシでも好き なように呼んでください) も置いてください。こうすることでパスワー ドがネットワークを自由に往来することを防げます。 bind_dn (デフォルト: empty) バインドする必要があるのであれば、この識別名を付けてバインドしま す。例: bind_dn = uid=postfix, dc=your, dc=com bind_pw (デフォルト: empty) 上の識別名に対するパスワード。これを使う必要がある場合、マップ設 定 ファイルを Postfix ユーザだけが読めるようにしたくなるでしょう 。古い ldap:ldapsource 文法が main.cf でマップパラメータとともに 使われる場合は、安全にバインドパスワードを保管するのは不可能です 。これはローカルアカウントが sendmail コマンドを使ってメールを投 函できるようにするために、main.cf が world readable である必要が あるからです。例: bind_pw = postfixpw cache (警告を出して「無視します」) cache_expiry (警告を出して「無視します」) cache_size (警告を出して「無視します」) 上記のパラメータは Postfix は「すでにサポートしていません」。 リ リース 2.1.13 の時点で OpenLDAP からキャッシュサポートが削られま した。 recursion_limit (デフォルト: 1000) DN および URL の特別な結果属性評価のネストの深さの制限。制限はゼ ロでない正の数でなければいけません。 expansion_limit (デフォルト: 0) マップに対する検索によって (カンマで区切られたリストとして) 返さ れる、結果の要素の合計数の制限。ゼロを設定すると制限を無効にしま す 。 制限を超過すると、検索は一時的エラーで失敗します。制限を 1 にすると検索が複数の値を返さないことを保証します。 size_limit (デフォルト: $expansion_limit) 検索の一部として実行される単独の LDAP 検索によって返される LDAP エ ントリの数の制限。ゼロを設定すると制限を無効にします。DN およ び URL りふぁれんすの展開には LDAP 検索のネストが含まれますが 、 それぞれが別々にこの制限を受けます。 注意: 単独の LDAP エントリであっても、複数の結果属性や値を複数持 つ結果属性を通して、複数の検索結果を生成することがあります。この 制限は LDAP サーバにおける検索ごとのリソース使用量を抑えるのであ って、最終的に検索結果が複数にならないようにするのではありません 。これは "ldapsearch" の "-z" オプションと同じです。 dereference (デフォルト: 0) LDAP エイリアスの参照外しをするとき。(これは Postfix エイリアス には許される値は OpenLDAP/UM LDAP の実装に適したこれらです: 0 おこなわない 1 検索時 2 検索のベースオブジェクトの場所を特定するとき when locat- ing the base object for the search 3 常に これ以上の情報は ldap.h または ldap_open(3) または ldapsearch(1) man pages を参照してください。これ以外の有効な値を持つ LDAP パッ ケージを使っているのであれば、postfix-users@postfix.org メーリン グリストで知らせてください。 chase_referrals (デフォルト: 0) LDAP_OPT_REFERRALS を設定(またはクリア)します (LDAP バージョン 3 のサポートが必要です)。 version (デフォルト: 2) 使用する LDAP プロトコルのバージョンを指定します。 debuglevel (デフォルト: 0) OpenLDAP ライブラリで設定するデバッグレベル。 LDAP SSL および STARTTLS パラメータ SSL サポート付きでコンパイルされた OpenLDAP ライブラリを使っているので あれば、Postfix は LDAP SSL サーバに接続したり STARTTLS コマンドを発 行 することができます。 LDAP SSL サービスは server_host パラメータで LDAP SSL URL を使うことに よって要求されます: server_host = ldaps://ldap.example.com:636 STARTTLS は start_tls パラメータで有効にすることができます: start_tls = yes どちらの形式も LDAP プロトコルバージョン 3 が必要で、これは明示的に次の ように設定される必要があります: version = 3 マ ップを検索する Postfix プログラムのいずれかが master.cf で chroot で 動くように設定されていると、必要な全ての証明書や鍵は chroot 監獄にコ ピ ーされている必要があります。もちろん、秘密鍵はユーザ "postfix" のみが読 めるようにしておくべきです。 以下のパラメータは LDAP SSL および STARTTLS に関するものです: start_tls (デフォルト: no) サーバへの接続で STARTTLS を発行するかどうか。LDAP SSL でこれ を 設定してはいけません (TCP 接続が開かれると、SSL セッションが自動 的にセットアップされます)。 tls_ca_cert_dir (デフォルトなし; set either this or tls_ca_cert_file) SSL/TLS 接続においてクライアントが認識する、PEM 形式の X509 認証 局認証を含むディレクトリ。それぞれのファイルは一つの CA 認証を持 ちます。ファイルは CA サブジェクト名のハッシュ値で検索されるため 、 それが使えなければいけません。同じ名前のハッシュ値を持つ1つ以 上の CA 認証がある場合は、拡張子が違っていなければいけません (例 え ば 9d66eef0.0, 9d66eef0.1 など)。検索は認証の他のプロパティに 関係なく、拡張子の数字の順に実行されます。必要なリンクを作成する に は、 (OpenSSL 配布物の) c_rehash ユーティリティを使ってくださ い。 tls_ca_cert_file (デフォルトなし; set either this or tls_ca_cert_dir) SSL/TLS 接続においてクライアントが認識する、PEM 形式の X509 認証 局 認証を含むファイル。この設定は tls_ca_cert_dir を上書きします 。 tls_cert (デフォルトなし; you must set this) SSL/TLS 接続でクライアントによって使われる、クライアントの X509 認証を含むファイル。 tls_key (デフォルトなし; これを設定しなければいけません) 上の tls_cert に対応する秘密鍵を含むファイル。 tls_cert. tls_require_cert (デフォルト: no) SSL/TLS 接続を確立する際に、サーバの X509 認証を要求して有効性を チェックするように要求するかどうか。 tls_random_file (デフォルトなし) /dev/[u]random が使えない場合にランダムビットを得るためのファ イ ルのパスで、SSL/TLS 接続のクライアントによって使われます。 tls_cipher_suite (デフォルトなし) SSL/TLS ネゴシエーションで使う暗号一式。 例 local(8) エイリアスを検索するために LDAP を使う基本的な例です。 main.cf に以下のものがあるものとします: alias_maps = hash:/etc/aliases, ldap:/etc/ldap-aliases.cf また、ldap:/etc/ldap-aliases.cf は以下のようになっているものとします: server_host = ldap.my.com search_base = dc=my, dc=com /etc/aliases データベースで見つからないローカルアドレス "ldapuser" 宛の メ ールを受け取る際、Postfix は ldap.my.com のポート 389 で listen して いる LDAP サーバを検索します。Postfix は匿名でバインドして mailaccept- inggeneralid 属性が "ldapuser" であるディレクトリエントリを検索し、見つ かったものの "maildrop" 属性を読んでリストを作ります。これがメッセー ジ が配送される宛先の RFC822 アドレスとして扱われます。 関連項目 postmap(1), Postfix 検索テーブルマネージャ postconf(5), 設定パラメータ mysql_table(5), MySQL 検索テーブル pgsql_table(5), PostgreSQL 検索テーブル README ファイル DATABASE_README, Postfix 検索テーブルの概要 LDAP_README, Postfix LDAP クライアントガイド ライセンス The Secure Mailer license はこのソフトウェアと一緒に配布されなければ い けません。 作者 Carsten Hoeger, Hery Rakotoarisoa, John Hensley, Keith Stevenson, LaM- ont Jones, Liviu Daia, Manuel Guesdon, Mike Mattice, Prabhat K Singh, Sami Haahtinen, Samuel Tardieu, Victor Duchovni, and many others. LDAP_TABLE(5)