Linux Install Memo

サーバー管理者によるLinux関連ソフトのインストールメモ

Home » □Postfix+PostgreSQL(Vine)

□Postfix+PostgreSQL(Vine)

□Postfix+PostgreSQL(Vine)

http://www.postfix-jp.info/trans-2.1/jhtml/PGSQL_README.html

PostfixのvirtualマップをPostgreSQLに持たせてみる。

apt-get install -y postfix-pgsql

とすると、

/etc/postfix/dynamicmaps.cf

が追加されて読み込まれる。

インストールしたら/etc/postfix/main.cfに次のように書く

# aliasテーブルマップ
alias_maps = pgsql:/etc/postfix/pgsql-aliases.cf
# virtualテーブルマップ
virtual_maps = pgsql:/etc/postfix/pgsql-virtual.cf

で、それぞれのの実際のファイルの書き方は

http://www.postfix-jp.info/trans-2.1/jhtml/pgsql_table.5.html

に書いてある。

必要なパラメータは

hosts = host1.some.domain host2.some.domain
user = someone
password = some_password

dbname = customer_database
table = mxaliases

select_field = forw_addr
where_field = alias

とあるが、PostgreSQLがわかっていないとなんのこっちゃとなるだろう。

そもそもはpostmapで以下のようにして、

> [root@yebisu ~]# postmap -q “hoge@example.jp” hash:/etc/postfix/alias
> user1234

実際の配送先を調べるだけなので、特にテーブルやフィールド名については
もう少し判りやすくしたほうがいいと思う。

発行されるSQLは

select [select_field] from [table] where [where_field] = ‘$lookup’ [additional_conditions]

ということなので、テーブル定義をきちんとしてあげるといいかな。

例:aliasテーブル

drop table mail_alias_tbl;
create table mail_alias_tbl
(
    src_addr    text,
    dest_addr   text,
    registdate  integer,
    lastdate    integer
);

create unique index mail_alias_index on html_tbl (src_addr, dest_addr);
grant all on mail_alias_tbl to public;

例:virtualテーブル

drop table mail_virtual_tbl;
create table mail_virtual_tbl
(
    src_addr    text,
    dest_addr   text,
    registdate  integer,
    lastdate    integer
);

create unique index mail_virtual_index on html_tbl (src_addr, dest_addr);
grant all on mail_virtual_tbl to public;

つまりaliasとかvirtualに書いてある

hoge@example.jp    user1234

とか

example.jp         anything

とかを、左をsrc_addr、右をdest_addrに入れてあげればいい。

つまり

aliasテーブルマップファイルには

table = mail_alias_tbl
select_field = dest_addr
where_field = src_addr

virtualテーブルマップファイルには

table = mail_virtual_tbl
select_field = dest_addr
where_field = src_addr

みたいな感じ。

んじゃregistdateとかlastdateってなによ、っていうのは、自分がテーブル
を作るときのお決まり項目で、初回登録日時と最終変更日時をここに入れる。
そんなわけて、他にもこれらのテーブルに項目として

登録した人のIDとして

    masterid text,

とか、所属グループとして

    group    text,

(もちろんintegerでもchar()でもいいけど)みたいなのを追加しておくと、
メールシステムの管理の面からはだいぶ進んだものになると思う。

あとはこれを元にシステムを作ればいい…

って作ってるからこのメモができるわけだけど。(^-^;

Name of author

Name: admin

コメントを残す

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

CAPTCHA