PostfixとPostgreSQLの連携
概要
Postfixでは、仮想ドメイン、仮想アドレス等の情報をPostgreSQLから取得することが可能です。
以下のよう場合には、DB連携は非常に重宝します。
・既存DBのデータをメールアカウントとして使用
・大量のメールアカウントの管理
・Webインターフェース等による管理システム構築
インストール
まず、Postfixをインストールする前に、PostgreSQLのヘッダ、ライブラリが必要となるので、PostgreSQLをインストールします。
PostgreSQLを参照。
Postfixのインストールについては、基本的にはPostfixのインストールとそれほど大きくは変わらないので、詳細はPostfixのインストールをどうぞ。
以下、異なる点を中心にインストール手順を紹介します。
アーカイブを展開したら以下のように make を行います。
make -f Makefile.init
では、PostgreSQLのヘッダとライブラリのパスを指定します。
% make tidy % make -f Makefile.init makefiles \ 'CCARGS=-DHAS_PGSQL -I/usr/local/pgsql/include' \ 'AUXLIBS=-L/usr/local/pgsql/lib -lpq' % make
この後rootになり、ユーザー/グループ作成、インストールと進むのですが、デフォルトではPostgreSQLのライブラリが見つけられないことがあるので、ldconfigでライブラリパスを解決しておきます。
% su # useradd postfix -d /nonexistent -s /sbin/nologin # groupadd postdrop # vi /etc/ld.so.conf ( /usr/local/pgsql/lib を追加) # ldconfig # make install
make install時の指定は、config_directory 以外はデフォルトでOKでしょう。
設定
設定で通常と異なるのは、PostgreSQLからデータを取得したい項目だけです。
後は通常と同様でOKです。
例えば、仮想aliasだけPostgreSQLから取得したい場合には、以下の1行をmain.cfに追加します。
virtual_alias_maps = pgsql:/etc/postfix/pgsql_virtual_alias_maps.cf
そして、/etc/postfix/pgsql_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'
なお、起動方法等は全く通常版と変わりません。