スマートフォン・タブレットからインターネットサーバーオペレーション 2012

APPW.jp 2012

お名前.com VPS (KVM) にて WordPress をはじめるまで(5)

第5回は、Postfix と Dovecot のインストールについてです。

2012年5月から お名前.com VPS(KVM) の利用を始めています。

標準 OS にて、設定などを備忘録として残しておきたいと思います。

パッケージのインストール

Postfix は送信メールサーバー(SMTP サーバー)です。Dovecot は受信メールサーバー(POP、IMAP サーバー)です。そして、SMTP AUTH で利用する cyrus-sasl-md5 のパッケージをインストールします。

$ sudo yum install postfix dovecot cyrus-sasl-md5

Postfix と Dovecot の設定

ここでは、バーチャルメールボックスを設定し、バーチャルメールボックスのアカウントと SMTP AUTH 認証用のアカウントは Dovecot で一元管理するようにします。

よって、Postfix と Dovecot とをあわせながら設定していきます。

バーチャルメールボックスの管理ユーザー

バーチャルメールボックスの管理ユーザー vmail を作成します。

$ sudo groupadd -g 10000 vmail
$ sudo useradd -u 10000 -g 10000 -d /var/spool/vmail -r -s /sbin/nologin vmail
$ sudo mkdir /var/spool/vmail
$ sudo chown vmail:vmail /var/spool/vmail
$ sudo chmod 700 /var/spool/vmail

バーチャルメールボックスのアカウント

バーチャルメールボックスのアカウントを作成します。

アカウントは、/etc/dovecot/passwd というファイルを作成して管理することとします。

ファイルは、「ユーザー名(メールアドレス):パスワード(ハッシュ値)」という形式で作成します。

postmaster@example.jp:{CRAM-MD5}e9695099f05fa74a1ffe8639764f105508731447f45d74b1011f719bdc88046d
admin@example.jp:{CRAM-MD5}e9695099f05fa74a1ffe8639764f105508731447f45d74b1011f719bdc88046d

なお、パスワードのハッシュ値は、doveadm pw コマンドで取得できます。

$ sudo doveadm pw

/etc/postfix/vmailbox ファイルを作成します。

postmaster@example.jp    example.jp/postmaster/Maildir/
admin@example.jp    example.jp/admin/Maildir/

データベースへ変換

/etc/postfix/vmailbox をデータベースに変換します。また、/etc/postfix/virtual は、メール転送を設定します。今回は設定しませんが、こちらもデータベースに変換します。

$ sudo postmap /etc/postfix/vmailbox
$ sudo postmap /etc/postfix/virtual

main.cf の編集

Postfix の設定は /etc/postfix/main.cf を編集します。以下は設定例です。

myhostname = www.example.jp
mydomain = example.jp
myorigin = $mydomain
inet_interfaces = all
local_recipient_maps = $virtual_mailbox_maps
unknown_local_recipient_reject_code = 550
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown
# SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth
smtpd_sasl_security_options = noanonymous,noplaintext
# Virtual
local_transport = virtual
virtual_transport = virtual
virtual_mailbox_domains = example.jp
virtual_mailbox_base = /var/spool/vmail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000
virtual_alias_maps = hash:/etc/postfix/virtual
# limit
message_size_limit = 10485760
virtual_mailbox_limit = 10485760
# add Ver.2.10.x
smtpd_relay_restrictions = 
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination

【補足】Postfix の local_recipient_maps の設定

【補足】Postfix の smtpd_relay_restrictions の設定

dovecot.conf の編集

/etc/dovecot/dovecot.conf を編集します。以下を追加します。

listen = *, ::

service auth {
  unix_listener /var/spool/postfix/private/dovecot-auth {
    group = postfix
    user = postfix
    mode = 0660
  }
}

10-mail.conf の編集

/etc/dovecot/conf.d/10-mail.conf を編集します。以下を追加します。

mail_location = maildir:~/Maildir

10-auth.conf の編集

/etc/dovecot/conf.d/10-auth.conf を編集します。以下を変更します。

#auth_mechanisms = plain
auth_mechanisms = cram-md5 login
!include auth-passwdfile.conf.ext
!include auth-static.conf.ext

auth-passwdfile.conf.ext の編集

/etc/dovecot/conf.d/auth-passwdfile.conf.ext を編集します。以下に変更します。

passdb {
  driver = passwd-file
  args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/passwd
}

auth-static.conf.ext の編集

/etc/dovecot/conf.d/auth-static.conf.ext を編集します。以下を追加します。

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/spool/vmail/%d/%n
}

起動と自動起動設定

Postfix を起動します。自動起動を設定します。

$ sudo service postfix start
$ sudo chkconfig postfix on

Dovecot を起動します。自動起動を設定します。

$ sudo service dovecot start
$ sudo chkconfig dovecot on

ファイアウォールの設定

iptables を設定し、再起動します。

$ sudo vi /etc/sysconfig/iptables
$ sudo service iptables restart

iptables に追加する設定例です。

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT

ドメイン管理

わたしは スタードメイン を利用して、ドメインの更新や DNS 設定を行っております。ドメイン管理で MX レコードなどの DNS 設定を行います。

SSL 証明書

さらに、SSL を利用する設定を行っています。次回の「お名前.com VPS (KVM) にて WordPress をはじめるまで(6)」で SSL 証明書を作成します。

 

補足

 

SSL 証明書の利用

SSL 証明書を利用した設定例について追記します。

/etc/postfix/main.cf に設定を追加します。

smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_security_level = may
smtpd_tls_key_file = /etc/ssl/certs/wwwexamplejp.key
smtpd_tls_cert_file = /etc/ssl/certs/wwwexamplejp.crt
smtpd_tls_CAfile = /etc/ssl/certs/inter.crt

Postfix を再起動します。

$ sudo service postfix restart

/etc/dovecot/conf.d/10-ssl.conf を編集します。

ssl = yes
ssl_cert = </etc/ssl/certs/wwwexamplejp.crt
ssl_key = </etc/ssl/certs/wwwexamplejp.key
ssl_ca = </etc/ssl/certs/inter.crt

Dovecot を再起動します。

$ sudo service dovecot restart

 

ログ出力先

参考として、ログは /var/log/maillog に出力されています。

 

submission ポート(587)

submission ポート(587)の対応について追記します。/etc/postfix/master.cf にて設定します。以下の記述のコメントをはずします。

submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

Postfix を再起動します。

$ sudo service postfix restart

 

無料お試し期間の制限事項

さて、お名前.com VPS(KVM) では、申込後 15 日間無料のお試しサービスが実施されてています。この期間は、「データ転送帯域制限:ダウンロード(中から外)を5Mbps」、「ポート制限:25番ポート(中から外)」の制限事項があり、入金確認(決済完了)後に制限が解除されます。

 

Postfix の local_recipient_maps の設定

Postfix の /etc/postfix/main.cf において、local_recipient_maps の設定を見直しました。Postfix のバージョンアップに伴い、オプション機能から必須機能へと変更されたためです。本文における設定例は、バーチャルメールボックスのアカウントを参照するように設定したものに修正しました。

 

Postfix の smtpd_relay_restrictions の設定

Postfix の /etc/postfix/main.cf において、smtpd_relay_restrictions の設定を追加しました。Postfix の 2.10.x へのバージョンアップに伴うものです。

reject_unauth_destination を defer_unauth_destination とすることも 2.10.x からできます。ちがいは、with a non-permanent error code だそうです。

via IPv4

アーカイブ

カテゴリー