メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

SSL自己署名証明書の作成

マルチドメインを管理していて

これまで1台のサーバ(仮想も含め)で1ドメインの管理をこれまで行ってきた。
今回、複数のドメインを1台で管理した方が良い案件だったので、設定することにした。

webサーバはapache2のvirtual設定でOK。
IPは一つだけで、名前ごとに異なるコンテンツを返す。

メールはpostfix+dovecotで、virtual mailboxで管理することに。

ftpは、chrootして、各ユーザのhome以下のweb用ディレクトリに配置。

ここまでは、別に難しくはない。

テストでは、Thunderbirdを利用していたのが、トラブルを見つけにくくしていた。
Thunderbirdは、知らないSSL証明書を受け取った場合、例外として処理するかどうかを自分で設定できる。

僕が設定してテストしている時に、例外指定をしたため、以後警告も何も言わずに送受信ができていた。

ところが、WindowsLiveやOutlook/OutlookExpressは、起動時に確認され、OKしても再度メーラーを起動すると、再び警告が出てくる。
WindowsLiveだと「接続しているサーバーは、確認できないセキュリティ証明書を使用しています。」って、ええやんか〜。

問題はSSLだった

オレオレ証明書(自己署名証明書)の使い方と、設定の計画にあった。
デフォルトでは、勝手に証明書を作ってくれて、それを使えば基本的には問題ない。
(というか、これまで問題になったことはない)

ただし、先にも書いたように1マシン=1ドメインの場合だ。
ホスト名でCN名を埋め込んで証明書を作るため、マルチドメインの場合の処理が厄介だった。

今回はvpsを借りているので、デフォルトでは借りたvpsによる名前のホストで作ってくれている。
そこで、通常通りSSLを使用して、設定してみると…。

う〜む。
メーラーのサーバ設定を、オリジナルのドメインにしたり、仮想ドメインにしたり、IPにしたりしてみたがダメ。

サーバから証明書を持ってきて、登録するが上手くいかない。

あれこれやっているうちに、vpsがデフォルトで付けてくれたマシン名だとSSLで警告が出なくなることで閃いた。

利用するマシン名で証明書を作りなおしておけば、いいんじゃね?
各メーラーにはサーバ名はIPで振る約束になっている。これは好都合。

そこで、IP名でのCN名を埋め込んだ証明書を作成して、それを元にSSLを通すことに。

自己署名証明書の作成

手順は「postfix、dovecot の証明書の作成(Ubuntu 8.04)」が分かりやすかった。

重要なので、再掲しておく。
$ sudo -s
# cd /etc/ssl/private
# openssl genrsa -des3 1024 > mail.key
パスフレーズ聞かれるので、とりあえず覚えていられる程度のものでOK。
# chmod 600 mail.key
# openssl rsa -in mail.key -out mail.key
これでパスワードを解除したもので上書きしておく。この作業をしておかないと、パスフレーズの入力を求められる。するとプログラムが停止してしまうので…。
(先に使ったパスフレーズが必要)

# cd ../certs
# openssl req -utf8 -new -key ../private/mail.key -x509 -days 3650 -out mail.pem -set_serial 0
として、パブリックキーを生成。とりあえず有効期限10年程度の証明書にしてみた。(何度も設定したくないしね)

Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Aichi
Locality Name (eg, city) []:Nagoya
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Hoge Ltd
Organizational Unit Name (eg, section) []:xxxx-net
Common Name (eg, YOUR name) []:aaa.bbb.ccc.ddd ←IPで設定
Email Address []:root@hoge.com

postfixの設定

/etc/postfix/main.cfを編集
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
となっているのを、先ほど作ったmail.keyとmail.pemに修正。
smtpd_tls_cert_file=/etc/ssl/certs/mail.pem smtpd_tls_key_file=/etc/ssl/private/mail.key
これで、postfixを再起動。
 # service postfix restart
/etc/dovecot/conf.d/10-ssl.confを編集
ssl_cert = </etc/ssl/certs/mail.pem
ssl_key = </etc/ssl/private/mail.key
保存したら、dovecotを再起動。
# service dovecot restart

クライアント用の処理

PC用に証明書を変換する。
# openssl x509 -in mail.pem -outform DER -out mail.der
このファイルを、web経由でも、USBメモリでもftpでもなんでもいいので、PCに持ってくる。(以下Windows上の作業)

mail.derをダブルクリック。
「証明書のインストール」→「証明書のインポートウィザード」→「証明書を次のストアに配置する」→「信頼されたルート証明機関」

最後に警告が出るが、OKで完了。
これで証明書がインポートされ、しかも信頼していることになる。

メーラーを起動しても、何も言わずに送受信できるようになった。

ふ〜。
ここまでたどり着くのに、予想以上に時間がかかりましたわ…。

まあセキュリティが強化されているのは分かるけど、Thunderbirdくらいに自分の責任で、証明書を信用するってことにしてくれれば、こんなに手間はかからないのに…。

良し悪しですな…。

無事使えるようになって、めでたしめでたしとな。
チカレタゎ。


コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ