MYSQL_TABLE(5) MYSQL_TABLE(5) 名前 mysql_table - Postfix MySQL クライアントの設定 書式 postmap -q "string" mysql:/etc/postfix/filename postmap -q - mysql:/etc/postfix/filename <inputfile 解説 Postfix メールシステムはオプションでアドレス書き換えやメールルーティン グのテーブルを使用します。これらのテーブルは通常 dbm または db フォーマ ットです。 それ以外に、検索テーブルとして MySQL データベースを指定することもできま す。MySQL 検索を使うには、main.cf の検索テーブルとして MySQL ソースを定 義します。例: alias_maps = mysql:/etc/mysql-aliases.cf /etc/postfix/mysql-aliases.cf ファイルは Postfix main.cf ファイルと同じ 書式であり、以下に示すようなパラメータを指定することができます。 後方互換性 他の Postfix 検索テーブルとの互換性のため、MySQL パラメータ も main.cf で 定義することができます。そうするためには、MySQL ソースとしてスラッシ ュやドットで始まらない名前を指定してください。そうすることで MySQL パラ メ ータはソースに定義した名前、アンダースコア、パラメータ名という形で使 えるようになります。例えば、マップが "mysql:mysqlname" として指定された 場合、下の "hosts" パラメータは main.cf では "mysqlname_hosts" として定 義されます。 注意: この形式では、MySQL ソースのパスワードは、通常 world-readable な main.cf に書かれてしまいます。この形式のサポートは Postfix の将来のバー ジョンで削られる予定です。 Postfix 2.2はMySQLおよびPostgreSQLに対するクエリインターフェースを拡 張 し、 以前はPostfix LDAPクライアントでのみ使えていた機能を含むようになり ました。新しいインターフェースでは、SQLクエリは単一の query パラメー タ で 指 定 されます (より詳細は以下に記述されています)。新しい query パラ メータがマップ定義で指定されていない場合は、Postfixは select_field や table、 where_field、additional_conditions から構成される SQLクエリを使 う、古いインターフェースに戻ります。古いインターフェースは徐々に廃止 さ れ る予定です。新しいインターフェースに移行するには、次のように設定しま す: query = SELECT [select_field] FROM [table] WHERE [where_field] = '%s' [additional_conditions] それぞれの古いパラメータの名前ではなく、値を挟んで く だ さ い。 addi- tional_conditions パラメータはオプションで、空でなければ常に AND で始め ることに注意してください。 リストメンバーシップ $mynetworks や $mydestination、$relay_domains、$local_recipient_maps 等 のようなリストを格納するために SQL を使う場合、テーブルはそれぞれのリス トメンバーを別々のキーで格納しなければいけないことを理解することが重 要 です。この議論は DATABASE_README ドキュメントの "Postfix リスト対テーブ ル" を参照してください。 $mydestination や $relay_domains 等でドメインの完全なリストを返し た り $mynetworks で IP アドレスを返すテーブルを作っては「いけません」。 キ ーとしてマッチするそれぞれの項目と属性値を持つテーブルを作って「くだ さい」。SQL データベースでは、キー自身や定数を返すのは珍しいことでは あ りません。 MYSQL パラメータ hosts Postfix が検索するために接続しようとするホスト。UNIX ドメインソ ケットは unix: を指定し、TCP 接続(デフォルト)は inet: を指定しま す。例: hosts = host1.some.domain host2.some.domain hosts = unix:/file/name hosts は任意の順序で試され、全ての UNIX ドメインソケットを通した 接続は TCP を通した接続の前に試されます。約1分のアイドル後に接続 は自動的に閉じられ、必要なときに再び開かれます。Postfix バージョ ン 2.0 以前ではホストの順序を無作為には選びませんでした。 「注意」: (たとえ前に inet: が付いていたとしても) ホスト名として localhost を指定すると、MySQL はデフォルトの UNIX ドメインソケッ トに接続します。MySQL をローカルホストに TCP で接続させるには 、 次のように指定する必要があります: hosts = 127.0.0.1 user, password mysql サーバにログインするためのユーザ名とパスワード。例: user = someone password = some_password dbname サーバ上のデータベース名。例: dbname = customer_database query データベースを検索するのに使われるSQLクエリテンプレート。ここで %s はPostfixが解決しようとしているアドレスの代替です。例えば、 query = SELECT replacement FROM aliases WHERE mailbox = '%s' このパラメータは以下の '%' 展開をサポートしています: %% これは文字としての '%' 文字で置き換えられます。 %s これは入力キーで置き換えられます。入力キーが予期しないメ タキーを加えないことを保証するために、 SQL引用符を使い ま す。 %u 入力キーが user@domain の形のアドレスの場合、%u はアドレ スのSQL引用符付きのローカル部分で置き換えられます。それ以 外の場合は、%u は検索文字列全体で置き換えられます。ローカ ル部分が空の場合、検索は差し止められて結果を返しません。 %d 入力キーが user@domain の形のアドレスの場合、%d はアド レ スのSQL引用符付きのドメイン部分で置き換えられます。それ以 外の場合は、検索は差し止められて結果を返しません。 %[SUD] queryパラメータでは、上の文字を大文字にしたものは小文 字 の 場合と同じように振る舞います。result_format パラメータ (以下参照) で使うと、結果の値ではなく入力キーに展開されま す。 %[1-9] パターン %1, %2, ... %9 は入力キーのドメインの対応する構 成要素の最も重要な順に置き換えら れ ま す。 入 力 キー が user@mail.example.com の場合、%1 は com、%2 は example で %3 は mail です。入力キーが完全修飾でなかったり指定された パ ター ン すべてを満たすのに十分なドメイン要素がない場合 は、検索は差し止められて結果を返しません。 以下に記述されている domain パラメータはアドレスの入力キーをマッ チ したドメインに制限します。domain パラメータが空でなければ、完 全修飾ではないアドレスやドメインにマッチしないアドレスの SQLクエ リは差し止められて結果を返しません。 こ のパラメータはPostfix 2.2で使えます。以前のリリースでは、 SQL クエリは別々のパラメータから構築されます: select_field や ta- ble、where_field、additional_conditions。古いパラメータから等価 なクエリへのマッピングは: SELECT [select_field] FROM [table] WHERE [where_field] = '%s' [additional_conditions] WHERE 文の '%s' はエスケープされた検索文字列に展開 さ れ ま す。 Postfix 2.2では、これらの古いパラメータは 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にすると、検索が複数の値 を返さないことが保証されます。 以下のパラメータは次の書式の SELECT のテンプレートを埋めるのに使えます: SELECT [select_field] FROM [table] WHERE [where_field] = '%s' [additional_conditions] 指 定子 %s は検索文字列で置き換えられます。また、パースエラーを起こした り、さらにはセキュリティ問題を起こしたりしないように、シングルクオー ト や他の変な文字はエスケープされます。 Postfix 2.2ではこのインターフェースは廃止され、上で説明したような、より 一般的な query インターフェースで置き換えられました。 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 検索テーブル pgsql_table(5), PostgreSQL 検索テーブル README ファイル DATABASE_README, Postfix 検索テーブルの概要 MYSQL_README, Postfix MYSQL クライアントガイド ライセンス The Secure Mailer license はこのソフトウェアと一緒に配布されなければい けません。 歴史 MySQL サポートは Postfix バージョン 1.0 で導入されました。 作者 オリジナルの実装: Scott Cotton, Joshua Marcus IC Group, Inc. 更なる拡張: Liviu Daia Institute of Mathematics of the Romanian Academy P.O. BOX 1-764 RO-014700 Bucharest, ROMANIA MYSQL_TABLE(5)