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 ファイルと同じ 書式であり、以下に示すようなパラメータを指定することができます。例は こ のマニュアルの最後にあります。 LDAP SSL や STARTTLS についての詳細は以下の SSL と STARTTLS のセクショ ンを参照してください。 後方互換性 後方互換性のため、LDAP パラメータは main.cf でも定義できます。そうす る ためには、LDAP ソースとしてスラッシュやドットで始まらない名前を指定して ください。そうすることで LDAP パラメータはソースに定義した名前、アン ダ ー スコア、パラメータ名という形で使えるようになります。例えば、マップが "ldap:ldapsource" として指定された場合、下の "server_host" パラメータは main.cf では "ldapsource_server_host" として定義されます。 注 意: この形式では、LDAP ソースのパスワードは、通常 world-readable な main.cf に書かれてしまいます。この形式のサポートは Postfix の将来のバー ジョンで削られる予定です。 リストメンバーシップ $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.your.com 使用している LDAP クライアントライブラリによっては、ここに複数の サーバを指定して、最初のサーバが失敗してもライブラリが順番にそれ らを試すことができます。またリストのそれぞれのサーバには、以下の ように指定することで (以下の server_port を上書きして) 異なる ポ ートを与えられます。 server_host = ldap.your.com:1444 OpenLDAP では、LDAP URL (のリスト) はホスト名とポートの両方を指 定することができます: server_host = ldap://ldap.your.com:1444 UNIX ドメインソケットを使った接続や LDAP SSL (後者は OpenLDAP が SSL サポート付きでコンパイルされた場合) を含めて、OpenLDAP ライ ブラリが受け付ける 全ての LDAP URL がサポートされます: server_host = ldapi://%2Fsome%2Fpath server_host = ldaps://ldap.your.com:636 server_port (デフォルト: 389) LDAP サーバが listen するポートは、例えば server_port = 778 search_base (デフォルトはなし; これは設定しなければいけません) 検索をおこなう際の RFC2253 ベースの DN、例えば search_base = dc=your, dc=com timeout (デフォルト: 10 seconds) 検索がタイムアウトするまでの秒数、例えば timeout = 5 query_filter (デフォルト: mailacceptinggeneralid=%s) ディレクトリの検索に使われる RFC2254 フィルタ。こ こ で %s は Postfix が解決しようとするアドレスに置き換えられます。例えば query_filter = (&(mail=%s)(paid_up=true)) このパラメータは以下の '%' 拡張をサポートします: %s これは入力キーで置き換えられます。入力キーが予期しないメ タキャラクタを加えないようにするために、RFC 2254 引用が使 われます。 %u 入力キーが user@domain 形式のアドレスの場合、%u はアドレ スの (RFC 2254 の) 引用されたローカル部分によって置き換え られます。ドメインが指定されないと、%u は検索文字列全体で 置き換えられます。 %d 入力キーが user@domain 形式のアドレスの場合、%d はアド レ スの (RFC 2254 の) 引用されたドメイン部分によって置き換え られます。入力キーにドメイン修飾がなければ、%d は検索文字 列全体で置き換えられます。 以下に記述される "domain" パラメータは、入力キーをマッチするドメ インのアドレスに制限します。"domain" パラメータが空でなければ 、 修飾されていないアドレスやマッチしないドメインのアドレスに対する LDAP 検索は抑制され、結果を返しません。 注意: 検索フィルタの周りに引用符を置いては「いけません」。 result_filter (デフォルト: %s) 結果の属性に適用される書式のテンプレート。query_filter と同じ 拡 張をサポートするため、文字列を後置する(または前置する)のに簡単に 使えます。このパラメータは以下の '%' 拡張をサポートします: %s これは結果の属性値によって置き換えられます。 %u 結果の属性が user@domain 形式のアドレスの場合は、%u は ア ド レスのローカル部分によって置き換えられ、結果の属性が修 飾されていなければ %u は属性値全体で置き換えられます。 %d 結果の属性が user@domain 形式のアドレスの場合は、%d は 属 性 値のドメイン部分によって置き換えられます。属性値が修飾 されていなければ %d は属性値全体で置き換えられます。 例えば、"result_filter = smtp:[%s]" を使うと、mailHost 属 性 を transport(5) テーブルの基礎として使えるようになります。結果フィ ルタを適用すると、複数の属性値はカンマで区切られた文字列として連 結 さ れます。以下で説明される expansion_limit および size_limit パラメータは結果の値の数を制限できます。これは1つの値を返すべ き であるマップに特に便利です。 デフォルト値の %s はそれぞれの属性値がそのまま使われることを指定 します。 「注意」: 結果フィルタの周りに引用符を置いては「いけません」。 domain (デフォルト: no domain list) これはドメイン名、ファイルへのパス、またはディレクトリのリストで す。指定されると、ローカル部分が *空でなく* マッチするドメインを 持つ、完全修飾された検索キーのみがが検索対象になりま す: 'user' 検索や裸のドメインの検索、"@domain" 検索はおこなわれません。これ は LDAP サーバの検索負荷をかなり減らすことができます。 domain = postfix.org, hash:/etc/postfix/searchdomains LDAP 検索の対象となるドメインを格納するのに LDAP を使わないの が 最もよい選択です。 「注意」: このパラメータを local(8) エイリアスに対して定義「しな いでください」。 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.your.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)