□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()でもいいけど)みたいなのを追加しておくと、
メールシステムの管理の面からはだいぶ進んだものになると思う。
あとはこれを元にシステムを作ればいい…
って作ってるからこのメモができるわけだけど。(^-^;