メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバは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の反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

apacheのSSL設定(マルチドメイン時)

本来の目的は…

仕事の関係でteamで作業を行う予定があり、グループウェアを入れようか、どうしようかと迷っていた時に、ownCloudが良さそうに感じた。

そこで、apt-getでちょろっと入れてみたら、結構いい感じなのでいくつかテストして、実運用にと思ったけれど、仕事で使うんだし、暗号化しておく必要はあるわなぁと…いうことで、SSLの設定をしようとしてハマったのでメモメモ…。

現在の環境

vpsを借りていて、ディスクには余裕があるし、常時動いているので共有場所には最適なのですよ。

WEB関係としては、apache2+BINDで運用。
ドメイン1:aaa.info(主ドメイン)
ドメイン2:bbb.jp(別ドメイン)

ここまでは、問題なく動作している。
ownCloudをapt-getで入れたら5.0系だったので、本家の6.0系を入れることに。

PC用のクライアントは無料だけど、モバイルのクライアントアプリは100円なのよね〜。実際使ってみると、Dropboxより融通が効いて、とってもいい感じですなぁ。
容量は自分で決められるし…。WebDAVでもアクセスできるし、カレンダーもあったりして…。

設定作業1

apacheのモジュールを調べると、ssl関連がちゃんとあるので、簡単じゃんと思ってやってみる。
# a2enmod ssl
これで、mods-avaiableにあるssl関連が、mods-enable配下にリンクされ、機能するようになる…はずだった。
# service apache2 restart
エラーは出ないが、httpsでaaa.infoに接続してみると、エラーが返ってくる。

アクセスログを見ると
www.abc.info:443 xxx.yyy.zzz.aaa - - [06/Jun/2014:10:22:03 +0900] "\x16\x03\x01" 501 297 "-" "-"

いままでに、見たことのないエラーが出ている…。
httpでのアクセスは問題ないことから、SSL関係の設定ということは分かる。

エラーログを見ると
[Fri Jun 06 10:22:03 2014] [error] [client xxx.yyy.zzz.aaa] Invalid method in request \x16\x03\x01

まあ、確かに対応しているけれどなぁ。

結局、半日格闘することになる。

設定作業結果

/etc/apache2/ports.confを以下のように修正

NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
    NameVirtualHost *:443
    Listen 443
</IfModule>
<IfModule mod_gnutls.c>
    Listen 443
</IfModule>
続いて、/etc/apache2/sites-enabled/virtual.confを以下のようにした
NameVirtualHost aaa.bbb.ccc.ddd:80
<VirtualHost aaa.bbb.ccc.ddd:80>
ServerAdmin webmaster@aaa.info
DocumentRoot /var/www
ServerName www.aaa.info
ServerAlias aaa.info
<Directory /var/www> 
Options FollowSymlinks ExecCGI 
AllowOverride AuthConfig
Limit Options FileInfo
</Directory>
</VirtualHost>
<VirtualHost aaa.bbb.ccc.ddd:80>
ServerAdmin webmaster@bbb.jp
DocumentRoot /home/sites/bbb.jp
ServerName www.bbb.jp
ServerAlias bbb.jp
<Directory /home/sites/bbb.jp> 
Options FollowSymlinks ExecCGI
AllowOverride AuthConfig
Limit FileInfo Options
</Directory>
</VirtualHost>
NameVirtualHost aaa.bbb.ccc.ddd:443
<VirtualHost aaa.bbb.ccc.ddd:443>
ServerAdmin webmaster@aaa.info
DocumentRoot /var/www
ServerName www.aaa.info
ServerAlias aaa.info
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-aaa.info.pem
<Directory /var/www> 
Options FollowSymlinks ExecCGI 
AllowOverride AuthConfig
Limit Options FileInfo
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@aaa.info
DocumentRoot /var/www
ServerName www.aaa.infoServerAlias aaa.info
SSLEngine onSSLCertificateFile /etc/ssl/certs/ssl-aaa.info.pem
<Directory /var/www>
Options FollowSymlinks ExecCGI AllowOverride AuthConfig
Limit Options FileInfo
</Directory>
</VirtualHost>

  a2enmod で有効にしたsslは削除して、全て自分で書いた。
また、ここで利用してるSSL証明書は、自分で別に作りなおしている。
# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf ssl-aaa.info.pem
あとは、キチッとapacheの再起動を掛けてやることで、正常に動作するようになった。

問題点

複数ドメインを扱っていて、SSLを設定しても最初に設定したサイトの証明書しか渡すことが出来ない。もちろん、複数のIPを持っていれば可能なんだろうけど、名前で切り分けている場合は諦めるしか無い。
(設定は可能だけど、ブラウザと正しくやりとりが出来ない)

まあ、どっちにしてもオレオレ証明書だし、経路の暗号化としてしか使用しないので、これでOKっす。

ちなみに、ownCloudをSSLによる接続のみに設定できるので、少しだけ安心?かな。

そういえば、OpenSSLの脆弱性の情報が流れていました。
http://ccsinjection.lepidum.co.jp/ja.html

updateしておかなきゃね。

コメント

このブログの人気の投稿

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

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ