PostfixとPostgreSQLの連携

最終更新日時:2010-03-08 19:24:26
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には以下のような設定をします。

項目概要
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'


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

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