Postfix pgsql マップタイプを使うと、Postfix は PostgreSQL データベースに 接続できるようになります。この実装は複数の pgsql データベースを考慮して います: お望みなら1つを virtual(5) テーブルに、 もう1つを access(5) テーブルに、そして別の 1つを aliases(5) テーブルに使えます。同じ データベースに対して複数のサーバを指定することができるため、1つが 使えなくなっても Postfix は使えるデータベースサーバに切り替えることが できます。
pgsql マップを使う忙しいメールサーバは同時に大量の pgsql クライアントを 生成するため、pgsql サーバはそのことを念頭に置いて動かすべきです。 Postfix proxymap(8) サービスを使って、 並列に動く pgsql クライアント数を減らすことができます。
注意: Debian GNU/Linux の Postfix で pgsql を使うには、postfix-pgsql パッケージをインストールするだけで終わりです。Postfix を再コンパイルする 必要はありません。
pgsql マップをサポートした Postfix を構築するには、-DHAS_PGSQL と PostgreSQL ヘッダを含むディレクトリに対して -I を、そして libpq ライブラリファイルの場所を AUXLIBS に加える必要があります。
例:
% make tidy % make -f Makefile.init makefiles \ 'CCARGS=-DHAS_PGSQL -I/usr/local/include/pgsql' \ 'AUXLIBS=-L/usr/local/lib -lpq'
そして、単に 'make' を走らせます。
pgsql をサポートした Postfix を構築したら、main.cf で以下のように マップタイプを指定できます:
/etc/postfix/main.cf: alias_maps = pgsql:/etc/postfix/pgsql-aliases.cf
ファイル /etc/postfix/pgsql-aliases.cf には Postfix に pgsql データベースを参照する方法を伝えるたくさんの情報を指定します。完全な 記述は pgsql_table(5) マニュアルページを 参照してください。
# # local(8) aliases(5) 検索用の pgsql 設定ファイル # # # Postfix が接続を試そうとするホスト hosts = host1.some.domain host2.some.domain # pgsql サーバにログインするためのユーザ名とパスワード。 user = someone password = some_password # サーバ上でのデータベース名。 dbname = customer_database # Postfix 2.2以降のSQLクエリテンプレート。pgsql_table(5) 参照。 query = SELECT forw_addr FROM mxaliases WHERE alias='%s' AND status='paid' # 2.2以前のPostfixリリース用。詳細は pgsql_table(5) 参照。 select_field = forw_addr table = mxaliases where_field = alias # 最初の "AND" を忘れないで! additional_conditions = AND status = 'paid' # additional_conditions を指定するか空のままにします。 additional_conditions = and status = 'paid'
複数のメール交換機を必要とするサイトはネットワーク化されたメーラ データベースを使う利便性を楽しむ反面、システムの単一点障害を持ち込み たくはないでしょう。
そのため、一つの pgsql マップに対するアクセスするのに、Postfix が 複数のホストを参照する機能を持たせました。これはサイトがミラー化された pgsql データベースを 2つ以上のホストでセットアップした場合に働きます。
一つのホストでクエリが失敗するたびに、残りのホストがランダムな順序で 試されます。どの pgsql サーバホストにも到達できなければ、少なくとも これらのホストのうちの 1つが到達可能になるまでメールは遅延されます。