postfix+dovecotでバーチャルドメイン(仮想アカウントを利用した個別ドメイン)を実現する

Linuxのシステムアカウントを使わないで
複数アカウントで複数ドメインのメールを運用する方法



(point)
/etc/postfix/main.cf
上記のinet_interfacesがlocalhostになってると
メールが到達しないでメールログにも残らないから注意だよ
inet_interfaces = all


■main.cfに以下を追加

# vi /etc/postfix/main.cf

virtual_transport = virtual
virtual_mailbox_domains = mydomain.com, subdomain.com
virtual_mailbox_base = /usr/local/vmail
virtual_mailbox_maps = hash:/etc/postfix/virtual
virtual_alias_maps = hash:/etc/postfix/virtual_alias
virtual_uid_maps = static:5001
virtual_gid_maps = static:5001



■mydestinationとvirtual_mailbox_domainsが重複しているとmaillogに以下のような警告がでるので、mydestinationを空にする
warning: do not list domain mydomain.com in BOTH mydestination and virtual_mailbox_domains

# vi /etc/postfix/main.cf

mydestination =




ディレクトリ作成
mkdir -m 777 /var/spool/mail/vhosts



■ハッシュテーブル作成

maildir形式を指定するため、右側の最後はスラッシュで終わらす。

# vi /etc/postfix/virtual

tes1t@mydomain.com <-TAB-> mydomain.com/tes1t/
tes2t@mydomain.com <-TAB-> mydomain.com/tes2t/
tes1t@subdomain.com <-TAB-> subdomain.com/tes1t/

# vi /etc/postfix/virtual_alias<-空->

postmapにてハッシュデータベースをつくる

# /usr/sbin/postmap /etc/postfix/virtual
# /usr/sbin/postmap /etc/postfix/virtual_alias

/etc/postfix/に「virtual.db」「virtual_alias.db」が出来ていれば成功



■一旦確認
# mail tes1t@mydomain.com
# mail tes2t@mydomain.com
# mail tes1t@subdomain.com


/usr/local/vmail 以下に「mydomain.com/」「subdomain.com/」のディレクトリが作られていれば成功!


Dovecotの設定変更

# vi /etc/dovecot.conf

メールロケーションをバーチャルメールボックスに変更
(%dはドメイン、%nはユーザの意味)
#mail_location = maildir:~maildir
mail_location = maildir:/usr/local/vmail/%d/%n

passdb pamをコメントアウト
#passdb pam {
#}

userdb passwdをコメントアウト
#userdb passwd {
#}

passdb passwd-fileに以下を追加
passdb passwd-file {
# Path for passwd-file
args = /usr/local/etc/dovecot-passwd
}

userdb passwd-fileに以下を追加
userdb passwd-file {
# Path for passwd-file
args = /usr/local/etc/dovecot-passwd
}


dovecotパスワードファイル作成

# vi /usr/local/etc/dovecot-passwd


tes1t@mydomain.com:{plain}my1passwd:5001:5001::/usr/local/vmail/mydomain.com/tes1t/::/usr/sbin/nologin
tes2t@mydomain.com:{plain}my2passwd:5001:5001::/usr/local/vmail/mydomain.com/tes2t/::/usr/sbin/nologin
tes1t@subdomain.com:{plain}my3passwd:5001:5001::/usr/local/vmail/subdomain.com/tes1t/::/usr/sbin/nologin


MUAにて確認、OK!


■おまけ {plain}では平文のまま保存されてしまうので以下でセキュリティ強化できる
# /usr/sbin/dovecotpw -s HMAC-MD5
Enter new password:
Retype new password:

{HMAC-MD5}457ce0ffdec4365c06b6fb66ebcb4d31b4e1bbdd800a8de8fbd24ee2e6565a2d

これを上の{plain}と置き換えておくと安心ですね。


■最後に以下のセキュリティ設定をすれば、最低限のMTAとしては動くでしょう。

dovecotのsmtp認証機能を使う