PostfixとMySQLの連携
概要
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
には以下のような設定をします。
項目 | 概要 |
---|---|
user | DBのユーザー |
password | DBのパスワード |
hosts | DBのホスト |
dbname | DBのデータベース名 |
query | 仮想aliasの転送先を取得するためのSQL |
設定例としては、以下のようになります。
user = mail password = ppppp hosts = xxx.xxx.xxx.xxx dbname = mail query = SELECT goto FROM alias WHERE address='%s'
なお、起動方法等は全く通常版と変わりません。