postfix+PostgreSQL 設定メモ

postfixの設定についてのメモ
dovecot+PostgreSQL 設定メモ では、メール受信時のユーザーの管理を
PostgreSQLで行うための設定を記述したが、
今回は、メール送信・サーバーがメールを保管する、postfixの設定についてのメモである。

postmap /etc/postfix/vmailbox
などで、通常データを扱うが、dovecotの設定同様、ユーザーの管理をPostgreSQLで行う。
virtual_mailbox を使用して、メール専用アカウントを可能にする。


FC4のバイナリでは、MySQLやPostgreSQLは、使用できない設定でコンパイルされている
MySQLを利用するには、FC4よりソース(SRPMS)をダウンロードして
postfix.spec の
%define MYSQL 0
を
%define MYSQL 1
に変えるだけで行えるようであるが、PostgreSQLの場合その設定がないため修正が必要である。

%define PGSQL 1
を追加
また、
%if %{PGSQL}
  CCARGS="${CCARGS} -DHAS_PGSQL -I/usr/local/include/pgsql"
  AUXLIBS="${AUXLIBS} -lpq"
%endif
の様なコードをを追加する(PostgreSQLの導入によりパスは、適当に変更すること)


rpmbuild -ba postfix.spec
にて、コンパイル
rpm -ivh postfix.??????.i386.rpm
にて、導入

main.cfの主な変更箇所
myhostname = mail.example.net
mydomain   = example.net
myorigin   = $myhostname
inet_interfaces = all
mydestination           = $myhostname, localhost.$mydomain, localhost.$mydomain
virtual_mailbox_domains = $mydomain
virtual_mailbox_base = /home/
virtual_mailbox_maps = pgsql:/etc/postfix/pgsql-virtual-mailbox-maps.cf
virtual_uid_maps     = pgsql:/etc/postfix/pgsql-virtual-uid-maps.cf
virtual_gid_maps     = pgsql:/etc/postfix/pgsql-virtual-gid-maps.cf
virtual_minimum_uid = 100
home_mailbox = Maildir/


/etc/postfix/pgsql-virtual-mailbox-maps.cf のサンプル
hosts        = localhost
user         = databaseuser
password     = password
dbname       = databasename
select_field = maildir
table        = users
where_field  = mail
additional_conditions = AND active = 'Y'

/etc/postfix/pgsql-virtual-uid-maps.cf のサンプル
hosts        = localhost
user         = databaseuser
password     = password
dbname       = databasename
select_field = uid
table        = users
where_field  = mail
additional_conditions = AND active = 'Y'

/etc/postfix/pgsql-virtual-gid-maps.cf のサンプル
hosts        = localhost
user         = databaseuser
password     = password
dbname       = databasename
select_field = gid
table        = users
where_field  = mail
additional_conditions = AND active = 'Y'

テーブルは、dovecot設定メモを参照のこと


FCの場合、sendmailが、デフォルトであるため、sendmailからpostfixに切り替える。
sendmailからpostfixへの切り替えには、
alternatives --config mta
で、行うことができる。


補足)2006-12-06
FC6では、postfix2.3になっている。
warning: dict_pgsql: cannot set the encoding to LATIN1
のエラーが発生し、受信が行えない。そのため、ソースを修正。
修正するのは、postfix-2.3.3/src/global/dict_pgsql.c
//    if (PQsetClientEncoding(host->db, "LATIN1") != 0) {
//	msg_warn("dict_pgsql: cannot set the encoding to LATIN1, skipping %s",
//		 host->hostname);
//	plpgsql_down_host(host);
//	return;
//    }
とする。

本ホームページの転載・複製を禁じます。
--- KONDO-NET.GR.JP ---
今日のアクセス人目