なんだかんだと複数ドメインを運用してしまっている我が家のサーバ。
では、ということでバーチャルドメインでのメール運用にしてみた。ローカルホストにずらずらとメールユーザが並ぶのもなんだかなぁ、という感じだしね。
ただし、メールサーバはNASを兼ねている玄箱にやってもらう。で、HTTP/MySQLが動いているメインサーバのThinkPad X31にPostfixAdminを入れる。玄箱にMySQL入れると遅くてたまらんのでね。
で、作業。
1. まずはHTTP/DBMSサーバにPostfixAdminをインストール。これは、ググって楽勝。
2. 玄箱のPostfixをMySQL版に変更。が、玄箱ではFedora Core6を動かしていて、Fedora版のPostfixではMYSQL対応がされていない。そこでSRPMを持ってきてRPMをビルドしなおす。これもググって辛勝。main.cfはこんな感じ。
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myhostname = mx.voodoomarketing.net
mydomain = voodoomarketing.net
myorigin = $myhostname
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
#, $mydomain
unknown_local_recipient_reject_code = 550
smtpd_banner = $myhostname ESMTP voodoo relay
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = nosmtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destinationmessage_size_limit = 0
mailbox_size_limit = 0### virtual settings ###
local_transport = virtual
virtual_transport = virtual
virtual_mailbox_base = /mail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_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### soft quota settings ###
virtual_mailbox_limit = 0
認証周りがこれでいいのか、とも思うが動いているのでまぁいいや。
mysql_virtual_domains_maps.cfとかはググって頂戴。
3. 玄箱で動いているDovecotの認証をMysqlに変更。
巨大なファイルをやりとりすることもあるので、Maidir構成でいきたいが、メールディレクトリを正しく見に行ってくれるまでが試行錯誤で大苦戦。結果、PositfixAdminとも合わせ技で解決。
まず、postfixadminのconfig.ini.phpで、
$CONF['domain_path'] = ‘YES’;
$CONF['domain_in_mailbox'] = ‘YES’;
こうする。voodoomarketing.net/tsuyoshi@voodoomarketing.netというディレクトリに保存することになる。
Dovecot.confはこんな感じ。
default_mail_env = maildir:~/
protocol imap {}
protocol pop3 {}
protocol lda {}auth default {
passdb sql {
args = /etc/dovecot-mysql.conf
}
userdb passwd {
}
userdb sql {
args = /etc/dovecot-mysql.conf
}
user = ****
}dict {}
dovecot-mysql.confはこのように。
driver = mysql
connect = host=****** dbname=postfix user=***** password=****
default_pass_scheme = MD5
user_query = SELECT concat(‘/mail/’, maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = ‘%u’ AND active = ’1′
password_query = SELECT username as user, password FROM mailbox WHERE username = ‘%u’ AND active = ’1′
何がわかんないって、このdovecot設定がぐぐって出てくるのと違うんだよねぇ。あちこちのサイトに助けてもらってようやくできました。