Postfix + MySQL + PostfixAdmin でバーチャルドメイン運用
提供:maruko2 Note.
Postfix の設定は、/etc/postfix/ ディレクトリ内のファイルを使い設定する。
- main.cf
- Postfix 基本の設定
- master.cf
- Postfix 各デーモンの動作設定
今回は、Postfix の検索テーブル(ドメインやユーザの情報を記録するデータベース)として MySQL データベースを使い、MySQL のデータベースへの追加・編集は、PostfixAdmin の Web インターフェースからおこなう。
目次 |
main.cf の設定
- バーチャル運用(バーチャルメールボッスクドメイン, virtual_mailbox_* 設定)
- メールクオータを使う
- バーチャルメールボックスのルートディレクトリ (virtual_mailbox_base) を /home/vmail/ にする。
mydestination = #local_transport = virtual #virtual_transport = virtual #デフォルト値 ## Virtual virtual_mailbox_base = /home/vmail virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf #virtual_alias_domains = $virtual_alias_maps #デフォルト値 virtual_minimum_uid = 10000 virtual_uid_maps = static:10000 virtual_gid_maps = static:10000 ### VDA virtual_create_maildirsize = yes virtual_mailbox_limit = 0 virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_quota_maps.cf virtual_mailbox_limit_override = yes virtual_mailbox_limit_inbox = no virtual_maildir_extended = yes #virtual_maildir_suffix = Maildir/ #virtual_trash_count = yes #virtual_trash_name = ".Trash" #virtual_maildir_limit_message = "Sorry, maximum quota reached!" virtual_overquota_bounce = yes ## soft quota settings #message_size_limit = 10240000 #default 10MB #mailbox_size_limit = 51200000 #default 50MB message_size_limit = 0 mailbox_size_limit = 0
- mydestination =
- ローカルだとみなすドメインのリスト。そのため、バーチャルドメインをリストしてはいけない。
- (バーチャル運用時は空白にしておく。)
- local_transport = virtual
- デフォルト: local$myhostname
- virtual の場合、すべてのメールがバーチャル配信されるため、ローカル宛のメールを配信することができない。
- local の場合、ローカル宛、バーチャル宛を区別して配信することができる。
- virtual_transport = virtual
- デフォルト: virtual
- $virtual_mailbox_domains パラメータ値にマッチするドメイン宛の、デフォルトのメール配送 transport。
- virtual_mailbox_base = /home/vmail
- バーチャルメールボックスのルートディレクトリ。
- virtual_mailbox_domains = mysql
- /etc/postfix/mysql_virtual_mailbox_domains_maps.cf
- $virtual_transport メール配送 transport を使って配送されるドメインのリスト。$virtual_mailbox_maps で受信者アドレスを確認し、存在しない受信者宛のメールを拒否します。
- virtual_mailbox_maps = mysql
- /etc/postfix/mysql_virtual_mailbox_maps.cf
- $virtual_mailbox_domains にマッチするドメインの全ての有効なアドレスを持つ、オプションの検索テーブル。
- virtual_alias_maps = mysql
- /etc/postfix/mysql_virtual_alias_maps.cf
- 特定のメールアドレスやドメインを他のローカルまたはリモートアドレスにエイリアスする、オプションの検索テーブル。
- virtual_alias_domains = $virtual_alias_maps
- virtual_minimum_uid = 10000
- ユーザ ID の最小値
- virtual_uid_maps = static
- 10000
- メールボックスのユーザ ID 。UNIX アカウントとして存在しなくてもよい。
- virtual_gid_maps = static
- 10000
- メールボックスのグループ ID 。UNIX アカウントとして存在しなくてもよい。
メールボックスが作成されるディレクトリを作成
単にディレクトリを作成するだけよりも、ユーザを作成しておいた方がよい。
ユーザ名 | vmail |
ユーザ ID | 10000 |
グループ名 | vmail |
グループ ID | 10000 |
ホームディレクトリ | /home/vmail |
シェル | /sbin/nologin |
[root]# groupadd -g 10000 vmail [root]# useradd -d /home/vmail -g vmail -m -s /sbin/nologin -u 10000 vmail
- 単にディレクトリを作成するだけならば
[root]# mkdir /home/vmail [root]# chown -R 10000:10000 /home/vmail
MySQL データベースに接続するための設定ファイル
main.cf のバーチャル設定で指定した、MySQL データベースへ接続するための設定ファイルを /etc/postfix/ ディレクトリ内に作成する。
- mysql_virtual_alias_maps.cf
user = postfix password = postfix hosts = localhost dbname = postfix table = alias select_field = goto where_field = address
- mysql_virtual_mailbox_domains_maps.cf
user = postfix password = postfix hosts = localhost dbname = postfix table = domain select_field = description where_field = domain
- mysql_virtual_mailbox_maps.cf
user = postfix password = postfix hosts = localhost dbname = postfix table = mailbox select_field = maildir where_field = username
- mysql_virtual_mailbox_quota_maps.cf
user = postfix password = postfix hosts = localhost dbname = postfix table = mailbox select_field = quota where_field = username
参考サイト
- Postfix 設定パラメータ (2.1 が読みやすい)
- http://www.postfix-jp.info/trans-2.1/jhtml/postconf.5.html
- Postfix バーチャルドメインホスティング Howto
- http://www.postfix-jp.info/trans-2.3/jhtml/VIRTUAL_README.html
- Postfix MySQL Howto
- http://www.postfix-jp.info/trans-2.3/jhtml/MYSQL_README.html
- mysql_table(5)
- http://www.postfix-jp.info/trans-2.2/jhtml/mysql_table.5.html