FreeBSD-5.2.1 postfix-2.1.5_1,1

postfixによるバーチャルホスト運用の為の設定手順です

設定データはPostgreSQLに配置し、postfixから参照する様にします

なお、postfixはPOSTGRESQLサポートでインストールしなければいけません

またPostgreSQLデータベースは、Courier-IMAPでPOP3ユーザの管理をPostgreSQLで行うで作成したデータベースを使用することとします

Recommend Book

上級のメールサーバー管理者にとっても十分に実用的な情報がそろっています

バーチャルサーバによるメール受信用アカウントの作成

バーチャルアカウント宛てメールを受信する為のUNIXアカウントを作成します

作成するアカウントの滋養方は以下です。

ユーザ名mailuser
GID10000
OID10000

以下を実行してユーザを作成します

# adduser
Username: mailuser
Full name: mailuser
Uid (Leave empty for default): 10000
  :       :
  :       :
  :       :

ディレクトリの作成

foo@example.com宛てのメールを保存するディレクトリ(Maildir)を作成します

mailuserユーザのホームディレクトリ以下にディレクトリを作成します

作成イメージは以下です

/home/mailuser
          +---example.com
                  +--- foo
                        +---Maildir
                              +--- cur
                              +--- new
                              +--- tmp

作成するコマンドは以下です

# cd /home/mailuser
# mkdir example.com
# cd example.com
# mkdir foo
# maildirmake /home/mailuser/example.com/foo/Maildir
# chown -R mailuser:mailuser /home/mailuser/example.com/

postfixの設定変更

Postfixの設定変更を行います

/usr/local/etc/postfix/main.cfの変更

/usr/local/etc/postfix/main.cfに以下を追加します

virtual_transport = virtual
virtual_mailbox_base = /home/mailuser
virtual_maps = pgsql:/usr/local/etc/postfix/pgsql_vmaps.cf
virtual_mailbox_maps = pgsql:/usr/local/etc/postfix/pgsql_vmailbox.cf
virtual_mailbox_domains = pgsql:/usr/local/etc/postfix/pgsql_vmaildomains.cf
virtual_minimum_uid = 10000
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000

pgsql_vmaildomains.cfの作成

/usr/local/postfix/pgsql_vmaildomains.cfを作成します

ファイルの内容は以下です

user=courierimapuser
password=xxxx
dbname=courierimap
table=vmaildomains
select_field=id
where_field=id
hosts=localhost

pgsql_vmailbox.cfの作成

/usr/local/postfix/pgsql_vmailbox.cfを作成します

ファイルの内容は以下です

user=courierimapuser
password=xxxx
dbname=courierimap
table=vmailbox
select_field=maildir
where_field=id
hosts=localhost

pgsql_vmaps.cfの作成

/usr/local/postfix/pgsql_vmaps.cfを作成します

ファイルの内容は以下です

user=courierimapuser
password=xxxx
dbname=courierimap
table=vmaps
select_field=forwardid
where_field=id
hosts=localhost

テーブルの作成

データベースに接続し、メールアカウントを管理するテーブルを作成します


データベース名courierimap
接続ユーザcourierimapuser
パスワードxxxx
作成するテーブルvmaildomains , vmailbox , vmaps

データベースへの接続

以下を実行し、PostgreSQLデータベースに接続します

$ psql -U pgsql courierimap

vmaildomainsテーブルの作成

以下のSQLを発行し、vmaildomainsテーブルをcreateします

DROP TABLE vmaildomains;
CREATE TABLE vmaildomains (
        id                    varchar(128) DEFAULT ''      NOT NULL,
        memo                  varchar(255) DEFAULT ''      NOT NULL,
        PRIMARY KEY (id)
);

vmailboxテーブルの作成

同様に、vmailboxテーブルをcreateします

DROP TABLE vmailbox;
CREATE TABLE vmailbox (
        id                    varchar(128) DEFAULT ''      NOT NULL,
        maildir               varchar(255) DEFAULT ''      NOT NULL,
        PRIMARY KEY (id)
);

vmapsテーブルの作成

同様に、vmapsテーブルをcreateします

DROP TABLE vmaps;
CREATE TABLE vmaps (
        id                    varchar(128) DEFAULT ''      NOT NULL,
        forwardid             varchar(128) DEFAULT ''      NOT NULL,
        PRIMARY KEY (id)
);

テーブルへのレコードの追加

vmaildomainテーブルへのレコードの追加

以下のデータを追加します(1レコード)

id    : example.com
memo  : This is Virtual Site

vmailboxテーブルへのレコードの追加

以下のデータを追加します(1レコード)

id      : foo@example.com
maildir : example.com/foo/Maildir/

postfixの再起動

設定を有効にする為、Postfixを再起動します

# /usr/local/etc/rc.d/postfix.sh stop
# /usr/local/etc/rc.d/postfix.sh start

動作確認

foo@example.comにメールを送って見る

/home/mailuser/example.com/foo/Maildir/new/以下にメールが届いているはずです

POP3でそのメールを受信したい場合は、Courier-IMAP関連の設定でfoo@example.comユーザのメールが取得できる様に設定すること

関連ページ