PGSQL_TABLE(5) PGSQL_TABLE(5) 名前 pgsql_table - Postfix PostgreSQL クライアントの設定 書式 postmap -q "string" pgsql:/etc/postfix/filename postmap -q - pgsql:/etc/postfix/filename <inputfile 解説 Postfix メールシステムはオプションでアドレス書き換えやメールルーティン グのテーブルを使用します。これらのテーブルは通常 dbm または db フォーマ ットです。 そ れ以外に、検索テーブルとして PostgreSQL データベースを指定することも できます。PostgreSQL 検索を使うには、main.cf の検索テーブルとして Post- greSQL ソースを定義します。例: alias_maps = pgsql:/etc/pgsql-aliases.cf /etc/postfix/pgsql-aliases.cf ファイルは Postfix main.cf ファイルと同じ 書式であり、以下に示すようなパラメータを指定することができます。 別の設定方法 他の Postfix 検索テーブルとの互換性のため、PostgreSQL パ ラ メ ー タ も main.cf で定義することができます。そうするためには、PostgreSQL ソースと してスラッシュやドットで始まらない名前を指定してください。そうするこ と で PostgreSQL パラメータはソースに定義した名前、アンダースコア、パラメ ータ名という形で使えるようになります。例えば、マッ プ が "pgsql:pgsql- name" と し て 指定された場合、下の "hosts" パラメータは main.cf では "pgsqlname_hosts" として定義されます。 注意: この形式では、PostgreSQL ソースのパスワードは、通 常 world-read- able な main.cf に書かれてしまいます。この形式のサポートは Postfix の将 来のバージョンで削られる予定です。 リストメンバーシップ $mynetworks や $mydestination、$relay_domains、$local_recipient_maps 等 のようなリストを格納するために SQL を使う場合、テーブルはそれぞれのリス トメンバーを別々のキーで格納しなければいけないことを理解することが重 要 です。この議論は DATABASE_README ドキュメントの "Postfix リスト対テーブ ル" を参照してください。 $mydestination や $relay_domains 等でドメインの完全なリストを返し た り $mynetworks で IP アドレスを返すテーブルを作っては「いけません」。 キ ーとしてマッチするそれぞれの項目と属性値を持つテーブルを作って「くだ さい」。SQL データベースでは、キー自身や定数を返すのは珍しいことでは あ りません。 PGSQL パラメータ hosts Postfix が検索するために接続しようとするホスト。UNIX ドメインソ ケットは unix: を指定し、TCP 接続(デフォルト)は inet: を指定しま す。例: hosts = host1.some.domain host2.some.domain hosts = unix:/file/name hosts は任意の順序で試され、全ての UNIX ドメインソケットを通した 接続は TCP を通した接続の前に試されます。約1分のアイドル後に接続 は自動的に閉じられ、必要なときに再び開かれます。 「注意」: 前に付けられた unix: および inet: は後方互換性のために 受け付けられるものであって、実際には無視されます。 PostgreSQL ク ライアントライブラリは、名前がスラッシュで始まる場合には UNIX ソ ケットへの接続を、そうでなければ TCP 接続を常に試みようとしま す 。 user, password pgsql サーバにログインするためのユーザ名とパスワード。例: user = someone password = some_password dbname サーバ上のデータベース名。例: dbname = customer_database 以 下のパラメータは次の書式の SELECT クエリのテンプレートを埋めるのに使 われます: select [select_field] from [table] where [where_field] = '$lookup' [additional_conditions] $lookup には検索文字列を含み、シングルクオートや変な文字が含まれてい て も エスケープされます。それゆえ、これはパースエラーやさらに悪いセキュリ ティ問題を引き起こすことはありません。 select_field SQL "select" パラメータ。例: select_field = forw_addr table SQL "select .. from" テーブル名。例: table = mxaliases where_field SQL "select .. where" パラメータ。例: where_field = alias additional_conditions SQL クエリに対する追加条件。例: additional_conditions = and status = 'paid' 以下のパラメータは、デフォルトの SELECT 文を上書きする方法を提供しま す 。 こ れ ら を 設 定 す る と、Postfix は上記の table や select_field、 where_field、additional_conditions パラメータを無視するようになります: query このパラメータは完全な SQL クエリを指定します。例: query = select forw_addr from mxaliases where alias = '%s' and status = 'paid' このパラメータは次の '%' 拡張をサポートします: %s これは入力キーによって置き換えられます。入力キーが予期 し な いメタ文字を加えないようにするため、引用符が使われます 。 %u 入力キーが user@domain 形式のアドレスの場合、%u はアド レ ス のローカル部分の引用符付きによって置き換えられます。ド メインが指定されていなければ、%u は検索文字列全体で置き換 えられます。 %d 入力キーが user@domain 形式のアドレスの場合、%d はアドレ スのドメイン部分の引用符付きによって置き換えられます。 入 力キーがドメイン修飾されていなければ、%d は検索文字列全体 で置き換えられます。 select_function このパラメータはデータベース関数名を指定します。例: select_function = my_lookup_user_alias これは以下と同義です: query = select my_lookup_user_alias('%s') そして query パラメータと上記のテーブルに関連するフィールドの 両 方を上書きします。 2002 年6月の時点では、関数が1行1列で NULL 値を返す場合、結果はキ ーが辞書にないものとして扱われます。 将来のバージョンでは関数が結果のセットを返せるようになるでしょう 。 関連項目 postmap(1), Postfix 検索テーブルマネージャ postconf(5), 設定パラメータ ldap_table(5), LDAP 検索テーブル mysql_table(5), MySQL 検索テーブル README ファイル DATABASE_README, Postfix 検索テーブルの概要 PGSQL_README, Postfix PostgreSQL クライアントガイド ライセンス The Secure Mailer license はこのソフトウェアと一緒に配布されなければ い けません。 歴史 PgSQL サポートは Postfix バージョン 2.1 で導入されました。 作者 ベースとなった MySQL クライアント: Scott Cotton, Joshua Marcus IC Group, Inc. PostgreSQL へのポーティング: Aaron Sethman それ以上の拡張: Liviu Daia Institute of Mathematics of the Romanian Academy P.O. BOX 1-764 RO-014700 Bucharest, ROMANIA PGSQL_TABLE(5)