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