Postfix + Postfix Admin + MySQLでメールを管理する

メールアカウントの管理はかなり大変です。これを動的に管理するようにするには、やはりデータベースを使う必要があると思っていろいろ調べたところ、Postfix + Postfix Admin + MySQLと言う解決策があるようです。

メールアカウントをMySQLで管理し、それをGUIで操作するのがPostfix Adminとなります。SMTPはPostfix(参考:SendmailからPostfixへの変更、Postfixでメール受信時にプログラム起動)。Webメールなどをユーザに提供するには、この組み合わせはおすすめです。

参考にしたのは「Postfix+MySQL+Postfix AdminによるバーチャルSMTPサーバの構築(CentOS4.x編)」で、ほぼここに書かれているとおりで導入できました。

何点か変更した方がいい点や、バージョンによる違いがありましたので、差分を書いていこうと思います。

先ほどのページでは下記のように書かれています。

◆Postfix Adminの設定

3.次にデータベースのテーブルを作成しておく。MySQLでパスワードを設定している場合
[パスワード未設定時]

# cd /var/www/html/postfixadmin
# mysql -u root < DATABASE_MYSQL.TXT

[パスワード設定時]

# cd /var/www/html/postfixadmin
# mysql -u root -p < DATABASE_MYSQL.TXT
Enter password:xxxxx[Enter]

このDATABASE_MYSQL.TXTが無いのですが、Postfix Adminの2.3と2.1の違いだと思います。上記ページは2.1、今回導入したのは2.3です。では、MySQLのテーブル作成をどうすればいいのかというのは、setup.phpにアクセスすることで作成されます。先ほどのページの2を実行した後に、3は不要と言うことになります。

また、その他注意点としては、バーチャルドメイン関連のファイルに関してです。

◆バーチャルドメイン関係の設定ファイルの作成

mysql_virtual_domains_maps.cf

user = postfix
password = new_password1
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain

このselect_fieldはdomainに変更した方がいいです。ドメインを追加する場合、説明を入力しなくても追加可能です。そのため、SQLでdescriptionがNULLとなり、メール受信できません。ドメインを追加するときに必ず説明を入れると言う運用方法でカバーするか、select_fieldをdomainにするかの2パターンですが、domainにした方が運用が楽になります。

mysql_virtual_domains_maps.cf

user = postfix
password = new_password1
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain

他の点はほとんど変更も何も必要ありませんでした。
素晴らしいWebサイトを用意してもらって助かりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください