困りました。。。
お客様の共用レンタルサーバーからAWSクラウドサーバーへのドメイン移転案件でトラブル発生しました。。。
もくじ
現状把握
ここまでは順調でした。。
まず、移転するドメインの現状を確認。
現状はあるダークファイバー系のプロバイダが運営するレンタルサーバーサービスを長らく使ってきていた。
ここにきて当プロバイダのIPが、RBLに頻繁に登録されるようになってきて、メールの送受信がままならなくなってきたことから、サーバーの移転を検討。
同時に、WEBサイトもいまだFLASHを使っていたりするのでリニューアルを同時に行う
という状態でした。
Webサイトについては、新サーバーを構築さえしてしまえばあとはドメインを向ける前からホスティングしてしまって、WEBサイトを構築するPCにhostsでも書いてやればドメインを新サーバーに向け替えなくても構築できると判断しました。
それ以外の要件は?
今回、サーバーの移転を【手伝ってほしい】という、ご依頼で、普通なら、サーバー移転したいのでお願いします。すべてお任せします
と言われることが多いのですが手伝ってほしい、、、ということは、自分たちでやりたいんだな?と、感じました。
手伝う→アドバイスをおこなうということは、アドバイス・指導料をいただくことになりますし、実際、私は言わなかったのですが、アドバイス料ということで料金をいただきました。しかも結構多めにw
ということは、私に任せても、お願いして移転作業を委託しても費用が掛かることも認識しており、しかも移転手続き料でいただくくらいの金銭がアドバイス料として提示されているので、お金の問題ではなく、何か自分たちでやりたい事情があるのだなと考えて、【今回の件を自分たちでこなすことで何か考えていますか?】と、直球で聞きました。
はい。うちは、WEBサイトや、WEB・メール周りのサーバーのこととか、まったくわからないジャンル違いの仕事だと思っていたのですが、パソコンやルーターを収めることがある関係からなのでしょうか。Webサイトを作ってほしいという依頼をたくさん受けます。。
貴方にまわすのでいいのですが、営業に依頼が来てもその営業が受け答えもできないというのが内情です。なので、できればたぶん一番面倒なサーバーの移転からサイトのリニューアルというのはどのくらい手間のかかることなのか、これを機に一応知っておきたいと思いました。
とのことでした。
私は良いと思います。
できればWEBサイトの構築も御社さんでやってもらえたらいいと思いますがと。
サーバーの方というのは1回や2回経験したからって絶対うまくできないと思いますし、おそらくトラブルが起きたら対応しきれないと思うので、私がサーバーの面倒を見て、WEBサイト自身の構築は先方さんが仕事として受ければいいと思いました。
なので、今回は一応サーバー周りのことも説明しながら基本的に私が構築していくような流れでWEBサイトの構築のしかたに比重を置くことにしました。
で、サーバー構築
今回、お客様が現れたときに説明できるように、何をどうやっているのかを軽くでも説明できないとまずいだろうと思ったので、説明できるように順を追って説明しました。
AWSの採用
リソースの増減を必要とはしないので、いわゆるVPSサービスで十分なのですが、ここ最近日本の大手ブランドのVPSサービスは割り当てられるIPアドレスのほとんどがRBLにリストインしていて、仮に今はいっていなくとも、ほぼ100%、1~3か月以内にリストインしてきます。
ビジネスユースではちょっと使用に耐えられないくらいひどいですし、また、大手サーバー業者さんは割り当てたIPアドレスの変更は受付してくれません。
なので、コンパネ上から容易にIPアドレスの変更ができて、なおかつ、IPアドレスの追加も可能なAWSなら、ホワイトなIPを選んで採用することもできるし、いざブラックリストに入ったらIPを変更することでRBL会費が可能です。
そういうこともあり、AWS内のVPSサービスのようなサービスである、Lightsailというサービスで構築することにしました。
先方様は初めてと言っていいくらいのサーバーの構築・契約なのでこの時点で何のことかわからない状態でしたので、とりあえず、引っ越ししたかったRBLへのブラックリスト登録について、回避するためにはAWSを利用するのが一番柔軟に対応できますと伝えて、承認していただきました。
サーバー操作パネル【Plesk】の実装
次は、WEBとメールサーバーを構築するわけですから、やはりLinuxの方が構築しやすいですし、私はLinuxは20年近く触っているディストリビューションがありますのでこちらならメールサーバーもWEBサーバーも容易に構築できますし、トラブルが発生してもそれなりに対応できます。
WindowsServerでもおそらく構築できるのでしょうけど、そちらになると私は何も手を出せないかなと思ったのでLinux採用で進めることにしました。
が、そうなると、今度は先方様が問題になります。
まったくもって触ったことがないですから、サーバー構築どころか、メールアカウント一つも発行できません。
なので、少なくともメールアカウントが作れる、サーバーがダウンしていたら起動できるくらいのことはやれないとまずいので、コントロールパネルを導入してもらうことにしました。
コントロールパネルはPlesk。Pleskも私は20年近く利用していて、Ver7からのお付き合いです。
Plesk開発元に呼ばれて相談を受けるほど習熟しているので、こちらであればシュールなトラブルが起きても何らかの対処ができると考えました。
そして、コントロールパネルとしてはPleskはなかなか素晴らしく、ほとんどのことはWEBで提供されるコントロールパネル内で設定ができます。
ドメインの追加やメールアカウントの発行、サーバーのファイアウォールの管理までできますからある程度安心して運用できます。
ドメインの管理
サーバーの構築と同時に考えておかないといけないのは、新サーバーにドメインを向けなければいけないので、こちらの手ものにドメインの管理権限がないといけません。
いまは、プロバイダさんにサーバーと一緒に管理してもらっている状態ですから、これを切り離す必要があります。
なので、ドメイン管理会社にアカウントを作ってもらって、そちらから移転申請を出してもらいました。
これで、プロバイダに通達し、移転関係に必要なプロバイダさんの手続きを踏んでいただければ、いずれ、ドメイン管理業者の先方様のアカウントに紐づいてくるでしょう。
決定した仕様でサーバー構築
一通りの構成が決まったら構築です。
クラウドサービスなので、OSのインストールはこちらでは基本的に行う必要はなく、いくつかのディストリビューション選択肢の中からディストリを選び、契約ドン!で、3分後程度あとには構築完了します。
要注意!AWSは、静的IPを設定する必要あり!
ここで重要なのですが、サーバーを構築した時点で割り当たられている外向けIP(グローバルIP)は、動的IPです。ようは、マシンの再起動を行うと違うIPが割り当てられることがあります。
これでは、WEBやメールのサーバーとしてはちょっと危ないです。
そして、AWSは、1個目の静的IPまでは無料で割り当ててくれますから、最初の段階でIPは静的IPを割り振ります。
これで、固定IPについたPlesk搭載のLinuxサーバーの完成です。
あとはドメインを受け入れるだけとなります。
AWSは、デフォルトはSSHしか開いていません!
もう一つ注意が、AWSで、サーバーを構築すると規定設定でAWSクラウドサービス側でFireWallが張られています。
最初の段階ではSSHくらいしかポートが開いていないのでWEBサーバーを構築してもサイトは表示されませんし、FTPにつながりません。
Pleskを搭載した場合、PleskでFireWallを構築できますので、AWSのファイアウォールはオール通しと設定します。
構築もここまでは良かったのですが、、、
Webサイトの構築はそれなりに進めて形にしました。
さて、次は移転する際には、仕事で使っているドメインですから当然メールでドメインを利用しています。
このメールサーバーの移転が最大のネックです。
考えておかなければいけないことは以下の通りです。
- メールアカウントはどういう名前でどれだけ作るのか
- パスワードは旧サーバーと同じにするのか別にするのか
- 今どのPC(スマホ端末)でどのアカウントのメールの送受信をしているのか
- 転送設定・自動返信設定などの有無
- 現在設定してあるメールサーバー名(POP/SMTPホスト名)
- 接続ポート(SSLなのか、NoneSSLなのか、TLSなのかなど)
- 過去の受け取ったメールの引継ぎは?(IMAPの場合)
という感じです。
で、これらは切り替えてから考えていたら遅いので今の段階でどうしていくか考えて設定できるものはしておかないといけません。
これらについてはいろんな絡みもあるのでじっくり検討していただいて方針を決めてもらって追加するべきアカウントは新しいサーバーに追加して準備してもらいました。
ここも、そんな問題なく進みました。
さてここからです。
ドメインを新サーバーに!DNSのネームサーバー変更!
ドメインの管理権限が委譲されてきましたので、まずは確認すると、ネームサーバーは、プロバイダが提供してくれているDNSサーバーホストが登録されていました。
これをこのままにしておけば旧サーバーにつながりますし、この先、新しいサーバーに向けるべく新しいDNSサーバーホストを登録するとそのDNSサーバーでドメインが管理されます。
Pleskは、DNSサーバーを自動的に立ててくれますのでそれを利用します。
そのためには、DNSのホスト登録を行う必要があります。
これは、切り替え前でもできる作業なので切り替える1週間前にホストは登録してしまっておきました。
そして、。切り替え日!
そして、いよいよやってきました。Xデー。
先方様のドメインを新サーバーに切り替える日です。
事前に準備をしてしまってあります。
Webサイトは新しいデザインですでに公開できる状態になっていて、ドメインが向いてくれたらそのまま新サイトにリニューアルされます。
そして、メールについても、メールアカウント(メールアドレス)は、すでに追加済みで、あとは、パスワードをこの機に全部刷新したいということでしたのでパスワードを打つ必要があることを理解しています。
DNSを切り替えたら、WEBはもう何もしなくても良くて、メールはパスワードを打ちかえればまた送受信ができるはず。。。
でした。。。
が、うまくいきません。。。
メールが送受信ともにできない!!!
私の方は、自分の職場デスクでDNSの切り替えをしてDNSの反映を確認していました。
向こうのプロバイダDNSがTTLが3時間となっていたので最長で3時間かかりそうだな。。。と思っていましたが思ったより早く、私のPCは、新サーバーのDNSレコードに切り替わりました。
切り替わったことを確認しながら、次はWEBサイトの方のSSL証明書の取得に動き、SSL証明書の設定を行いながら、Pleskのセキュリティ設定などを固めつつ、DNSのリニューアルが全世界で反映してくることを待っていました。
どうしてもキャッシュの関係で前後しながら反映していきますので、それを確認していました。
そうしたところ、先方様からTELが。。。
だめです。。。メールが通信できないんです。。。。
通信ができないというのはどういうことだ?
そうです。
旧サーバーも新サーバーもメール送受信用のホストは同じにしています。
仮にDNSの反映がまだ出会ったら旧サーバーにつながるし、反映してしまえば新サーバーにつながるのでパスワードが一致しないということで、パスワード入力画面が出るはず。。。。なんです。
通信ができないということはあり得ません。
そんなはずはないはずなので、一度私の方でテスト用アカウントを作って送受信テストしてみますね。と。
できるじゃねーか。。。
特に何の問題も無く送受信ができました。
なので、折り返し電話して、私の方でできてますので、やっぱりDNSの反映待ちなのかな。。。
(↑DNSの反映待ちが原因のわけがないんだけど。。。と思いながらでも思い当たる節がそれしかない。。。)
もうちょっとやってみるということでいったん電話話切りました。
1時間後、やっぱりできないと。。。
なので、先方様のPCをリモート接続ツールで接続させてもらって確認。
まず、プロンプトでNSLOOKUPしてみたところ、新サーバーのIPを返してきました。
だから、普通にもう新サーバーに向いてますね。
で、聞くと、WEBサイトも表示しないと。
それだけはあり得ない。
だって、私はスマホで見ても新デザインのサイトが見れたんですから。
サーバーダウンしてないか?と言ってきますが、私の方でSSH接続してtopで、プロセス見てる状態です。落ちてません。
なんじゃこりゃ???????
なんでこんなんになる?????????
あっ。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。!?
パスワードを変更したのが災いしました
旧サーバのパスワードから、新サーバーでは別のパスワードに変更してセキュリティ的な強度を上げることを決断されました。が、今回はこれが災いしました。
まず、メールソフトを開いた時点では旧サーバーの設定のままですよね。パスワードも。
なので、新サーバーに向いてしまっているのに旧サーバーのパスワードで送受信を試みようとしますよね。
仮にAさんとします。
AさんのPCのメールソフトのパスワード変更しなきゃと、ソフトを開きます。開いたらすぐ送受信しますから一回パスワード間違いが起きます。
先方様の会社ではメールを11個、PCは8個で受信しているそうです。
はい。3人くらいでスタッフのPCを全部切り替える作業をするということで一斉にメールソフトを開きました。
合計で11個、一発目はパスワード不一致のエラーを吐きました。
↑これが原因でした。↑
Pleskは、デフォルトでFail2Banという機能が実装されていて、メールに関してはパスワード不一致を10分間の間に5回連続で間違うと一定時間サーバー通信をシャットアウトします。
最初のうちは10分程度なので、あれ?おかしいな?って言ってるうちに解除されます。
そんなことを5回繰り返すと、今度は結構重度のアタックとみなされ、約1か月間のBanに入ります。
そうなんです。
同時に開いたことでBanされてしまったのです。自分のサーバーに自分がBanされる。。。
実はこれ、なさそうでよくあるんです。特に今のように切り替えでパスワード打ちなおしっていうときに、
BanのシステムはPC個体ではなくグローバルIP単位ですから個のPCで1回でもそれが8台あれば8回です。一発Banですね。
気付けて良かったw
早速先方様のお使いのグローバルIPをホワイトリストに登録。これでBanされることはなくなって、設定はスムーズに進みました。
そこまでは良かった。。。。。。。。
Banは、気付いてしまえば何のことはないことです。
それよりも、おかしいことがありました。
先ほど私がテストでメールの送受信をした、【送信したメール】の一部が届かないのです。
一部というのは一部であって、大部分なんですが、外部ドメインに向けたメールが届きません。
メールソフトで送信をしても何のエラーも出ませんが、メールは届きません。
Pleskは、メールキュー(現在処理中のメール)を確認できますからキューの確認をしてみると。。。
内部転送(設定したドメインから設定したドメインへ向けたメール)は送受信ができますが、外部のドメインのメールはキューに溜まったままです。。。
要は外に出ません。。。。。
こんなケースは初めてでした。。。
調べてみたら。。。。
調べてみたら、これは、AWSが、25番ポートは基本的に締めていて、申請を出して許可をもらわないと外向けにメールは送れないことがわかりました。。。。
これもスパム対策の一環なんですかね。。。
申請を出さなきゃ許可が出ないんですから、申請するしかないですよね。。。
しかし、48時間以内に返事を出すからその返事を確認してもう1回返信してそれから48時間以内に許可が出ますって。。。
ほぼ1週間じゃん。。。
先方様は仕事で使っていますからね。。。とりあえず謝罪しつつ、許可申請を出して、耐えてもらうしかないです。。。
でも、メールは受け取れるけど送れないって、、、相手に返信どうするのよって話です。
やっぱ使えません待ってくださいじゃダメだな。。。と。
なので、私が使っているメールサーバーで一つ外部ドメインですがSMTP用にアカウントを作って送信サーバーだけ外部サーバーに設定し直してもらって、許可が出たら従来のSMTPに戻してもらうのにするか。。。
と考えていました。SPFとかも、DNSはこちらでいじれますのでレコードを書き直せば外部のサーバーも正当なサーバーとして認識させられますしね。
と思っていましたがやっぱり手間がかかるんですよね。。。
なんとか、先方様の手を煩わせずに通信可能な外部メールを使ってメールを送れないか。。。。そんな都合のいい方法はないのか。。。。。。
ありましたよ!あるんでしょ!
そうです。リレーです。
GMO社のIPの大半がRBLに登録されてクラウドサービスのメールがGmailにまったく届かなくなるという問題がありました。
その際のGMOの回避方法が、Gmailへの送信時だけGMO社が準備したメールサーバー経由で送るようにリレーの設定をするという方法でした。
これは、自分の使っているメールサーバーを使ってGmail限定ではなく、すべてのドメインに対してリレーを掛ければいいのではないかっ。。。。。。
という思考に至りました。
AWSの25ポートブロック解除申請中は、メールリレーで回避!
メールのリレーは、要はまず、自分サーバーSMTPで送信メールを受け取ったら、普通は自分サーバーが送りたい先のメールサーバーにメールを配送します。
その際に使っているポートは25番です。(587ポートというのは、ISPが25番を締めてしまっているので私たちがPCから送ろうとすると25が使えないので代わりに587を使っていったんメールデータをサーバーに送り込んでいるだけで、実際に配送する際は25番で配送します。)その25番ポートをAmazonが締めちゃっているので、外に出ていきません。
そして、今から登場してくるリレー用のサーバーは既にその25番は、送信許可が出ているサーバーですので外部に対してメールを送れる状況になっています。
だから、自分サーバがNGの間、送りたいメールは直接送るのではなく、許可が出ているリレーサーバーを経由してメールを送れば外に出ます。そして、自分サーバーがリレーサーバーにメールを送るときは、私たちがPCのメールソフトを使ってメールを送信するのと同じ方法でメールをリレーサーバーに送るので587ポートで送ります。
だから、Amazonのファイアウォールには引っかかりません。
よっしゃ見つけたぜっ!!!
ってことで、さっそくリレーサーバーの設定を書き、送受信テストドン!
おおおっとどいたっっ!!!万歳!
ふぅ。。。これで、Amazonから許可が出たらリレーを解除すればいいので、ひと段落。。。。
とおもったんです。普通ならこれで終わりです。。。。
先方様から連絡。。。。
なんかおかしいんですよ。
今度は送れるようになったんですが受け取れないみたいなんです?
えっ????
送受信ボタンを押してもエラー無いよ?と思って聞いてみたら
お客さんがメール送ったけど届いてる?って言ってきたから見てもないし、もう1時間待ってるけど来ないんですよ。。。。
えー?????
まさかまだDNSが反映してない???(しかしこの時点でDNS切り替えてから24時間以上経過しています。TTLは3時間だったのでさすがにもうほぼ反映しているはず。。。)
ちょっと試してみます。
外部のドメインメールから先方様ドメインにメールを送信。
(´ー`*)ウンウン送れた。。。。
が。。。。届かない。。。。。。。
3分後配送エラーのメールが外部ドメインに届く。。。。。。
おおっ。。。。なんかおきてる。。。。。リレーの設定ミスったか????
エラーの内容を見ると、初めて見るエラー。。。。。。
配送を繰り返しています
的なエラーでした。。。。。。。。
はぁぁぁぁん。。。。。。なるほど。。。。。そういうことか。。。。
メールサーバーというのは、メールを各アカウントに仕分けまでしてくれます。
例えば、test@test.domというメールアドレスにメールを送るとすると、まず第一段階として送る側のメールサーバーがこのメールを受け取ってtest.domのメールサーバーに配送します。
そして、受け取ったtest.domのメールサーバーはまずは受け取ります。
そのあと、test@のアカウント部分を確認し、指定のフォルダにそのメールを配送します。
この受け取ったメールを指定のアカウントにメールを配送するときもメールサーバーが仕事をします。
ローカル配送すらもリレーがかかっている。。。。。。
ワイルドカードで全ドメインを指定しないと、一個ずつドメインを指定していられませんからね。。。
だから、ワイルドカードで全ドメインリレーしてって書きました。
そうしたことでローカル配送、ローカルのドメインのメールまでリレーサーバに行っています。
だから、リレーサーバーが受け取ってまた自分サーバーに送って、自分サーバーはまたそのメールをリレーサーバーに送るというまさに無限ループ地獄に陥っていました。
なので、除外すべきローカルホスト、ローカルドメインを除外として記述。
これでやっとまともに動くようになりました。
はあ。。。。良かった。
この時点でAmazonにDNSを切り替えて約1日半。25番ポートの解除申請を出して約12時間というところでしょうか。
リレーサーバーの設定を確定させた5分後、Amazonからメールが来ました。
解除申請を受け付けました。ただいまより25番ポートを解除いたします。
ふぅ。。。。。。。。徒労に終わったかもしれない。。。。