テックブログ

技術ネタ

postfix+dovecot+postfixadmin+postgresqlの設定方法について

こんにちは、技術部のshoriと申します。
構築作業を行っているとpostfix導入環境でpostfixadminを導入する事が多々ありますが、今まですべてMySQL導入環境で設定を行っていました。
しかし、この前postgresql導入環境でpostfixadminを導入する機会があったのでその時の話をしたいと思います。

※環境によって設定が異なることもあるため、下記はあくまでも一例あり、今回はcentos7.2です。

■POSTFIXの導入
パッケージでpostfixを導入した場合、postgresqlのモジュールが導入されていません。モジュールが導入されているかを確認するには下記のコマンドを実施して下さい。

postconf -m

yum installのデフォルトでは”pgsql”のモジュールが有効になっていません。
なのでrpmでインストールします。

まずは、postfixをソースrpmダウンロードし、パッケージを作成、pgsqlが有効になっているか確認します。

yumdownloader --source postfix
rpm -ivh postfix-2.10.1-6.el7.src.rpm
cd rpmbuild/SPECS/
grep pgsql postfix.spec -i

特に編集などはしません。
grepの結果、”pgsql”のwithを使った条件ビルドが記載されていればOKです。
次に”pgsql”を指定してビルドします。rpmbuildコマンドを導入していないサーバは導入しておきましょう。

yum install rpm-build
rpmbuild -ba postfix.spec --with pgsql

おそらくビルドすると下記エラーが出力されます。
——————————————————————————————
error: Failed build dependencies:
openldap-devel is needed by postfix-2:2.10.1-6.el7.centos.x86_64
cyrus-sasl-devel is needed by postfix-2:2.10.1-6.el7.centos.x86_64
mysql-devel is needed by postfix-2:2.10.1-6.el7.centos.x86_64
postgresql-devel is needed by postfix-2:2.10.1-6.el7.centos.x86_64
——————————————————————————————

では足りない物を導入しましょう。

yum install openldap-devel cyrus-sasl-devel mysql-devel postgresql-devel

もう一度ビルドし、インストールしましょう。

rpmbuild -ba postfix.spec --with pgsql
rpm -ivh postfix-2.10.1-6.el7.centos.x86_64.rpm

これでpgsqlが有効になった状態のpostfixが導入できました。モジュールを確認してみましょう。

postconf -m

モジュールの中に”pgsql”が入っていたらOKです。
これで準備OKです。ただ、勝手にpostfixがupdateされないように除外設定しておくと安心です。

cp -a /etc/yum.conf /etc/yum.conf.org
vi /etc/yum.conf
diff  /etc/yum.conf /etc/yum.conf.org
--------------------------------------
13c13
< exclude=postfix*
---
>
--------------------------------------

■postfix、dovecot、postfixadminの設定
基本的にはpostfixadmin+mysqlと同じ設定です。
postfix、dovecot、postfixadminの基本設定を書くと結構長くなってしまうので省略して変更点だけ書きます。

▼変更点
・postfix
main.cfでデータベースと連携する設定で”mysql”ではなく”pgsql”で指定します。
——————————————————————————————
virtual_mailbox_domains = pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf
virtual_mailbox_maps = pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf
virtual_alias_maps = pgsql:/etc/postfix/pgsql_virtual_alias_maps.cf
——————————————————————————————
↑のような感じです。中身は”mysql”と同じで大丈夫です。

・dovecot
dovecot-pgsqlドライバーの導入が必要です。
sql.conf.extの”driver”で”pgsql”を指定します。

yum install dovecot-pgsql
cd /etc/dovecot/
vi dovecot-sql.conf.ext
-------------------------------------------------------------
driver = pgsql
~以下略~
-------------------------------------------------------------

・postfixadmin
postfixadminのconfigファイルの”database_type”を”pgsql”で指定します。

—————————————–
$CONF[‘database_type’] = ‘pgsql’;
—————————————–

あとは従来の設定を行えばpostgresqlでpostfixadminが使えるようになります。
今回はここまでで失礼します。

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください