今まで借りてたさくらVPSが初代のものでそろそろ古いなーと思い、新しいVPSに移行しました。その際メールを移行するついでにバーチャルユーザーにしたいなと思い、Postfix.Adminを導入してみました。その時のメモを残しておきます。
ひとまず公式サイトからダウンロードします。
http://sourceforge.net/projects/postfixadmin/
htdocsの下などに解凍します。
DBを作成します。
CREATE DATABASE postfix; GRANT ALL PRIVILEGES ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfixadmin';
config.inc.phpのDB設定を編集し、$CONF[‘configured’] = true;にします。
ブラウザからsetup.phpを呼び出し、パスワードを設定します。
$CONF[‘setup_password’]をconfig.inc.phpに書き加えます。この時既にあるやつはコメントします。
管理者を追加します。
追加されたら管理者でログインします。
ドメインを追加し、ユーザーを追加します。
次にPostfixの設定を行います。
バーチャル用のローカルユーザーを作成します。
例えばホームディレクトリが/home/virtualmail/とした場合、メールボックスは/home/virtualmail/[ドメイン名]/[ユーザー名]になります。
mkdir /home/virtualmail
useradd -d /home/virtualmail -s /sbin/nologin virtualmail
chown -R virtualmail:virtualmail /home/virtualmail
chmod -R 700 /home/virtualmail
UID,GIDは10000にしておく。
MySQLに接続する為の設定ファイルを用意する
vi /etc/postfix/mysql_virtual_alias_maps.cf user = postfix password = ******** hosts = localhost dbname = postfix table = alias select_field = goto where_field = address vi /etc/postfix/mysql_virtual_domains_maps.cf user = postfix password = ******** hosts = localhost dbname = postfix table = domain select_field = domain where_field = domain additional_conditions = and active = '1' vi /etc/postfix/mysql_virtual_mailbox_maps.cf user = postfix password = ******** hosts = localhost dbname = postfix table = mailbox select_field = maildir where_field = username vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf user = postfix password = ******** hosts = localhost dbname = postfix query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
myhostname = xxxx.xxxx.xxxx
mydestinaion = $myhostname, localhost
inet_interface = all
inet_protocols = ipv4
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP Unknown
#Virtual Domain w/MySQL
local_transport = local
virtual_transport = virtual
virtual_mailbox_base = /home/vusers
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_alias_domains = $virtual_alias_maps
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000
virtual_minimum_uid = 10000
#SMTP-Auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = $myhostname
smtpd_client_restrictions = reject_rbl_client bl.spamcop.net
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
#Quota w/VDA Patch
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_overquota_bounce = no
virtual_trash_count = no
#SMTPS
smtpd_use_tls = no
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
master.cf
詳細設定は後ほど
submissionの箇所コメントを外す
smtpsの箇所コメントを外す
dovecotの設定を行う
http://wiki.tkr.mydns.jp/index.php?title=Linux%E9%96%A2%E9%80%A3/Mail%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E6%A7%8B%E7%AF%89/Dovecot%E3%81%AE%E8%A8%AD%E5%AE%9A
/etc/dovecot/conf.d/10-mail.conf の maillocationを設定する。
※加筆中