Postfix MySQL Howto


はじめに

Postfix mysql マップタイプを使うと、Postfix は MySQL データベースに接続 できるようになります。この実装は複数の mysql データベースを考慮しています: お望みなら1つを virtual(5) テーブルに、もう1つを access(5) テーブルに、そして別の1つを aliases(5) テーブルに使えます。同じ データベースに対して複数のサーバを指定することができるため、1つが使えなく なっても Postfix は使えるデータベースサーバに切り替えることができます。

mysql マップを使う忙しいメールサーバは同時に大量の mysql クライアントを 生成するため、mysql サーバはそのことを念頭に置いて動かすべきです。 Postfix proxymap(8) サービスを使って、 並列に動く mysql クライアント数を減らすことができます。

MySQL をサポートした Postfix の構築

注意: 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 テーブルの利用

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つが到達可能になるまでメールは遅延されます。

クレジット