現在、当サイトのpostfixの設定はメインのドメイン(正規ドメイン)をmydestinationで指定し、その他のドメイン(ホスティングドメイン)をvirtual_alias_domainsで指定し運用している。
今回、virtual_mailboxへ移行してみたのでその概要をメモしておく。
変更後の構成(概要)
- localhostを含むすべてのドメインを仮想化
- lmtpによる配送
- dovecotで認証
公式サイト
まず、ここを読む。昔読んだときはvirtualドメインの必要性もなかったので、何を書いてあるのかよくわからなかったのだが、いざ必要になるとわかるようになるもんだ…
virtual_mailbox用ユーザの作成
virtual_mailboxの管理用のユーザを作成する。
/etc/passwdおよび/etc/shadow
vmailbox:x:9000:9000:virtual mail box:/var/mail/vmailbox:/sbin/nologin
/etc/group
vmailbox:x:9000:
ディレクトリ作成
# cd /var/mail
# mkdir vmailbox
# chown -R vmailbox:vmailbox vmailbox
# chmod 750 vmailbox
postfixの設定
肝の部分のみ記載しておく。
/etc/postfix/main.cf
mydestinationを空白にする。バーチャルメールボックスドメイン名をmydestinationやvirtual_alias_domainsに入れてはいけない。
関連のある定義はこんな感じ。
mydestination =
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
virtual_mailbox_domains = yo7612.com example.com example.net
virtual_mailbox_base = /var/mail/vmailbox
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:9000
virtual_gid_maps = static:9000
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_transport = lmtp:inet:127.0.0.1:24
/etc/postfix/vmailboxと/etc/postfix/virtual
/etc/postfix/vmailboxは以下のように記載する。
info@example.com example.com/info/
webmaster@example.com example.com/webmaster/
# catch-all アドレスを実装するには以下のエントリのコメントを外します。
# @example.com example.com/catchall
...他のドメインのバーチャルメールボックス...
/etc/postfix/virtualの内容。
postmaster@example.com info@example.com
sales@example.net webmaster@example.com
最後にpostmapしておく。
dovecotの設定
だいたいこんな感じ。
/etc/dovecot/dovecot.conf
protocols = imap lmtp
/etc/dovecot/conf.d/10-master.conf
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service lmtp {
unix_listener lmtp {
mode = 0600
user = postfix
group = mail
}
inet_listener lmtp {
port = 24
}
}
service auth {
unix_listener auth-userdb {
}
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = cram-md5 plain login
!include auth-passwdfile.conf.ext
!include auth-static.conf.ext
/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/mail/vmailbox/%d/%n
/etc/dovecot/conf.d/15-mailboxes.conf
namespace inbox {
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = subscribe
special_use = \Junk
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
}
/etc/dovecot/conf.d/auth-passwdfile.conf.ext
passdb {
driver = passwd-file
args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/passwd
}
userdb {
driver = passwd-file
args = username_format=%u /etc/dovecot/passwd
override_fields = home=/var/mail/vmailbox/%d/%n
}
/etc/dovecot/conf.d/auth-static.conf.ext
userdb {
driver = static
args = uid=vmailbox gid=vmailbox home=/var/mail/vmailbox/%d/%n
}
/etc/dovecot/passwd
info@example.com:{CRAM-MD5}passwd1:9000:9000::/var/mail/vmail/example.com/info:/bin/false::
webmaster@example.com:{CRAM-MD5}passwd2:9000:9000::/var/mail/vmail/example.com/webmaster:/bin/false::
(以下省略)
メールスプールの移行
バックアップとって、定義に合せてmvして、chownすればOK。
コメント