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)