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 の将
来のバージョンで削られる予定です。
Postfix 2.2はMySQLおよびPostgreSQLに対するクエリインターフェースを拡 張
し、 以前はPostfix LDAPクライアントでのみ使えていた機能を含むようになり
ました。新しいインターフェースでは、SQLクエリは単一の query パラメー タ
で 指定されます (より詳細は以下に記述されています)。Postfix 2.1ではパラ
メータの優先度は、高い方から低い方へ、 select_function、query、そして最
後に select_field, ... でした。
Postfix 2.2では、query パラメータは最高の優先度を持ち、依然としてサポー
トされているも の の 廃 止 予 定 と なっ て い る select_function や
select_field、table、where_field、additional_conditions パラメータより
も優先して使われます。
リストメンバーシップ
$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
query デー タ ベース検索に使われるSQLクエリテンプレート。ここで %s は
Postfixが解決しようとするアドレスの代替です。例えば、
query = SELECT replacement FROM aliases WHERE mailbox = '%s'
このパラメータは次の '%' 拡張をサポートします:
%% こ れ は文字としての '%' 文字で置き換えられます (Postfix
2.2以降)
%s これは入力キーによって置き換えられます。入力キーが予期 し
な いメタ文字を加えないことを保証するために、SQL引用符を使
います。
%u 入力キーが user@domain 形式のアドレスの場合、%u はアド レ
スのSQL引用符付きのローカル部分で置き換えられます。それ以
外の場合は、%u は検索文字列全体で置き換えられます。ローカ
ル部分が空の場合、検索は差し止められて結果を返しません。
%d 入力キーが user@domain の形のアドレスの場合、%d はアドレ
スのSQL引用符付きのドメイン部分で置き換えられます。それ以
外の場合は、検索は差し止められて結果を返しません。
%[SUD] query パラメータでは、上の文字を大文字にしたものは小文字
の場合と同じように振る舞います。result_format パラメー タ
(以下参照) で使うと、結果の値ではなく入力キーに展開されま
す。
上の %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 パラメータが空でなければ、 完
全修飾ではないアドレスやドメインにマッチしないアドレスの SQLクエ
リは差し止められて結果を返しません。
このパラメータの優先度はPostfix 2.2で変更され、以前のリリース で
の 優 先 度 は、 高 い 方 から低い方へ、select_function、query、
select_field, ... でした。
Postfix 2.2では、query パラメータが最も高い優先度を持ちます。 上
の「互換性」を参照してください。
注意: query パラメータの前後に引用符を置かないでください。
result_format (デフォルト: %s)
結果の属性に適用される書式のテンプレート。文字列を後置する (また
は前置する)のにもっともよく使われます。このパラメータは 以 下 の
'%' 拡張をサポートします: これは文字としての '%' 文字で置き換え
られます。
%% これは文字としての '%' 文字で置き換えられます。
%s これは結果の属性値によって置き換えられます。結果が空の場
合はスキップされます。
%u 結果の属性値が user@domain 形式のアドレスの場合は、%u は
ア ド レ スのローカル部分によって置き換えられます。結果の
ローカル部分が空の場合はスキップされます。
%d 結果の属性値が user@domain 形式のアドレスの場合は、%d は
属 性値のドメイン部分によって置き換えられます。属性値が修
飾されていない場合はスキップされます。
%[SUD1-9]
大文字と10進の数値の展開は結果ではなく入力キーを書き換 え
ます。これらの振る舞いは query の記述と同じですが、実際に
は入力キーは前もってわかっているため、結果テンプレート で
指 定されたすべての情報を含まないキーの検索は省略されて結
果を返しません。
例えば、"result_format = smtp:[%s]" を使うと、mailHost 属 性 を
transport(5) テー ブ ル の基礎として使えるようになります。結果
フォーマットを適用すると、複数の属性値はカンマで区切られた文字列
と し て 連 結 されます。以下で説明される expansion_limit および
size_limit パラメータは結果の値の数を制限できます。これは1つの値
を返すべきであるマップに特に便利です。
デフォルト値の %s はそれぞれの属性値がそのまま使われることを指定
します。
このパラメータはPostfix 2.2以降で使えます。
注意: 結果フォーマットの周りに引用符を置いては「いけません」。
domain (デフォルト: ドメインリストなし)
これはドメイン名のリスト、ファイルのパス、ディレクトリです。指定
されていると、*空でない*ローカル部分とマッチするドメインを持つ完
全修飾された検索キーのみが検索対象になります: 'user' 検索や裸 の
ドメイン検索、"@domain" 検索はおこなわれません。これは MySQLサー
バでの検索負荷を劇的に削減します。
domain = postfix.org, hash:/etc/postfix/searchdomains
SQL検索の対象とするドメインを保存するのにSQLを使わないようにする
のが最もよいです。
このパラメータはPostfix 2.2以降で使えます。
注 意: local(8) エイリアスの入力キーは常に修飾されていないため、
このパラメータを定義しては「いけません」。
expansion_limit (デフォルト: 0)
マップに対する検索で (カンマ区切りのリストとして) 返される結果要
素の総数の制限。ゼロを設定すると制限を無効にします。制限を超える
と一時エラーで検索が失敗します。制限を1にすると、検索が複数の 値
を返さないことが保証されます。
Postfix 2.2以前の古いインターフェース:
select_function
このパラメータはデータベース関数名を指定します。例:
select_function = my_lookup_user_alias
これは以下と同義です:
query = SELECT my_lookup_user_alias('%s')
このパラメータはテーブルに関連した古いフィールド (以下に記述され
ています) を上書きします。Postfix 2.2よ り 前 の バー ジョ ン で
は、query パラメータも上書きします。Postfix 2.2からは、query パ
ラメータはもっとも高い優先度を持ち、このパラメータの優先度 は 下
がっています。このインターフェースは削除される予定のため、新しい
query インターフェースに移行してください。
(上で説明した select_function よりも優先度の低い) 以下のパラメータは 次
のように SQL select 文を構成するのに使えます:
SELECT [select_field]
FROM [table]
WHERE [where_field] = '%s'
[additional_conditions]
指 定子 %s は検索文字列で置き換えられます。また、パースエラーを起こした
り、さらにはセキュリティ問題を起こしたりしないように、シングルクオー ト
や他の変な文字はエスケープされます。
Postfix 2.2からは、このインターフェースは、上で説明したような、より一般
的な query インターフェースによって更新されました。上に記述されている、
優 先 度 の高い query または select_function パラメータが定義されている
と、これらのパラメータは無視されます。このインターフェースは削除され る
予定のため、新しい query インターフェースに移行してください。
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'
関連項目
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)