PostfixとMySQLの連携

最終更新日時:2010-03-15 17:59:11
MySQL Postfix

概要


Postfixでは、仮想ドメイン、仮想アドレス等の情報をMySQLから取得することが可能です。
以下のよう場合には、DB連携は非常に重宝します。

・既存DBのデータをメールアカウントとして使用
・大量のメールアカウントの管理
・Webインターフェース等による管理システム構築

同様のことはPostgreSQLでも可能です。
PostfixとPostgreSQLの連携参照。

インストール


まず、Postfixをインストールする前に、MySQLのヘッダ、ライブラリが必要となるので、MySQLをインストールします。
詳細はMySQLを参照。

Postfixのインストールについては、基本的にはPostfixのインストールとそれほど大きくは変わらないので、詳細はPostfixのインストールをどうぞ。
以下、異なる点を中心にインストール手順を紹介します。

アーカイブを展開したら以下のように make を行います。
make -f Makefile.initでは、MySQLのヘッダとライブラリのパスを指定します。

 % make -f Makefile.init makefiles \
    'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql' \
    'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm'
 % make


この後rootになり、ユーザー/グループ作成、インストールと進むのですが、デフォルトではMySQLのライブラリが見つけられないことがあるので、ldconfigでライブラリパスを解決しておきます。

 % su
 # useradd postfix -d /nonexistent -s /sbin/nologin
 # groupadd postdrop
 # vi /etc/ld.so.conf <- /usr/local/mysql/lib/mysql を追加
 # ldconfig
 # make install


make install時の指定は、config_directory 以外はデフォルトでOKでしょう。

設定


設定で通常と異なるのは、MySQLからデータを取得したい項目だけです。
後は通常と同様でOKです。
例えば、仮想aliasだけMySQLから取得したい場合には、以下の1行をmain.cfに追加します。

 virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf


そして、/etc/postfix/mysql_virtual_alias_maps.cfには以下のような設定をします。

項目概要
userDBのユーザー
passwordDBのパスワード
hostsDBのホスト
dbnameDBのデータベース名
query仮想aliasの転送先を取得するためのSQL


設定例としては、以下のようになります。

 user     = mail
 password = ppppp
 hosts    = xxx.xxx.xxx.xxx
 dbname   = mail
 query    = SELECT goto FROM alias WHERE address='%s'


なお、起動方法等は全く通常版と変わりません。

お問い合わせは 掲示板 にて。