さくらvpsでメールサーバー構築手順〜バーチャルドメインとバーチャルメールボックス

はじめに

やりたいことは以下
独自ドメインのメールアドレスを使いたい
・1サーバで複数ドメインを扱いたい
メーラーでメールの送受信を行いたい
・なるべくSPAM判定されないようにしたい
SSLも使えるようにしたい

で、調べるとバーチャルメールボックスというのがあるようで
これを使うとメールアドレスを追加するたびにunixのアカウント(ユーザー)作らなくてもいいようなのでやりたいことと一致しました。

使うソフトは以下で、今回のサーバーはさくらvpsでcentos6.7でやりました。全て最初から入ってたものをそのまま使いました
postfix
dovecot
・openssl

また、smtpとpopで別アカウントとすることもあるようなのですが
saslのタイプをdovecot-saslにすればアカウントを統合できるようなのでこれを使います

さくらvpsはxxxxx.vs.sakura.ne.jpというドメイン
example.comとexample.jpはドメイン取得しているものとします

また今回はsslは自己証明書とします

実装 〜 設定ファイル編集

今回作るアカウントは以下とします
info@example.com
info@example.jp

/etc/postfix/master.cf
# サブミッションポート対応
submission inet n       -       n       -       -       smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

# SSL対応
smtps     inet  n       -       n       -       -       smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
/etc/postfix/main.cf
# 全体的な設定
mydomain = xxxxx.vs.sakura.ne.jp
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain,localhost
mynetworks_style = host
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP

# SMTP-Auth設定
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
 permit_mynetworks
 permit_sasl_authenticated
 reject_unauth_destination

# 受信メール制限
mailbox_size_limit = 209715200
message_size_limit = 5242880

# SPAM対策
disable_vrfy_command = yes
smtpd_helo_required = yes

# SSL関連                                                                    
smtp_use_tls = yes
smtp_tls_cert_file = /etc/pki/tls/certs/mail.crt
smtp_tls_key_file = /etc/pki/tls/certs/mail.key
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.crt
smtpd_tls_key_file = /etc/pki/tls/certs/mail.key
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache

# バーチャルメールボックス設定
virtual_mailbox_domains = example.com example.jp
virtual_mailbox_base = /var/spool/vmail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000

# バーチャルドメイン設定
# 今回は別のアドレスに転送するために使う
virtual_alias_maps = hash:/etc/postfix/virtual
/etc/postfix/vmailbox
info@example.com example.com/info/Maildir/
info@example.jp example.jp/info/Maildir/
/etc/dovecot/dovecot.conf
protocols = imap pop3
/etc/dovecot/conf.d/10-auth.conf
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
}
/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 = scheme=CRAM-MD5 username_format=%u /etc/dovecot/passwd
}
/etc/dovecot/conf.d/auth-static.conf.ext
userdb {
  driver = static
  args = uid=10000 gid=10000 home=/var/spool/vmail/%d/%n
}                                                        
/etc/dovecot/conf.d/10-ssl.conf
ssl = yes
ssl_cert = </etc/pki/tls/certs/mail.crt
ssl_key = </etc/pki/tls/certs/mail.key
/etc/postfix/virtual
info@example.com \info@example.com,xxxxx@gmail.com
info@example.jp \info@example.jp,xxxxx@gmail.com

実装 〜 コマンド操作

自己証明書と秘密鍵の作成
> cd /etc/pki/tls/certs
> openssl req -new -x509 -nodes -days 365 -out mail.crt -keyout mail.key
> chmod 600 mail.key
> ls
mail.crt mail.key mail.der
バーチャルメールアカウント作成
> groupadd -g 10000 vmail
> useradd -u 10000 -g 10000 -d /var/spool/vmail -r -s /sbin/nologin vmail
> mkdir /var/spool/vmail
> chown vmail:vmail /var/spool/vmail
> chmod 700 /var/spool/vmail
メールアカウントディレクトリ作成
> mkdir -p /var/spool/vmail/example.com/info/Maildir/{new,cur,tmp}
> chown -R vmail:vmail /var/spool/vmail/example.com/info

> mkdir -p /var/spool/vmail/example.jp/info/Maildir/{new,cur,tmp}
> chown -R vmail:vmail /var/spool/vmail/example.jp/info
メールアカウント作成とパスワード設定
# パスワード作成
doveadm pw

#/etc/dovecot/passwd編集
info@example.jp:{CRAM-MD5}e01582f1efjdaksffdsffdjsakkffjdasfdsfasdf7b5a775867cd4e572da4f
postfix dovecot設定反映と起動
postmap /etc/postfix/vmailbox
postmap /etc/postfix/virtual
service postfix restart
service dovecot restart

さいごに

【postfix】独自ドメインでメール送受信する手順メモ〜バーチャルドメインで複数ドメイン扱う - とりあえずphpとか
あと、こちらに書いたdnsの設定はあらかじめ行います

完全に次回のコピペ用になってしまったがもうすこしまとめて理解しなくては、、、

以上です