AWS EC2上にメールサーバーを立てる

長かった・・・

5日前に作られしメールサーバー構築の悲劇

今その決着はついた

だがこれでよかったのか?

サーバー構築の達人たちよ

申請結果

前回の「AWS EC2上にメールサーバーを立てるために事前申請してみる」の続き

申請した翌日には返信がありました。

f:id:FlyingHighAgain:20150430213731p:plain

確認

申請前に一回確認しとけばよかったと少し後悔しているが

一応、通知後の状況を確認しておく。

逆引きの登録確認
~ $ nslookup hoge.net
Server:     192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
Name:   hoge.net
Address: xxx.xxx.xxx.xxx

~ $ nslookup xxx.xxx.xxx.xxx
Server:     192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
xxx.xxx.xxx.xxx.in-addr.arpa    name = hoge.net.

正引きと逆引きが一致する。OKのようだ。

ブラックリストに載ってないか確認

RBL.JP → すべて登録なし

BLACKLISTALERT.ORG - Email Problem ? - Test if your IP or DOMAIN is blacklisted in a spamdatabase → 最初は幾つかLISTEDになっていたが、現在では1箇所に減っている。もう少し経てば消えるかな?

メールサーバー構築開始(Postfix+Dovecot

送信サーバーにはPostfix、受信サーバーにはDovecotを使用。 だが、あまりにも嵌りすぎて正直どんな手順でどう設定して行ったのか覚えていない。

とりあえず最終的な設定結果だけを書き出してみる。

送信サーバー
  • ポート:587 (サブミッションポート)

  • 接続保護:STARTTLS

  • 認証:SMTP-AUTH

受信サーバー
  • ポート:995 (POP3S)
  • 接続保護:SSL/TLS

  • 認証:plain

複数アカウントの用意

・・・実は上記の設定までであれば、半分くらいの時間で済んでいた。

だが作成していた2つのアカウントのうち、片方のアカウントへメールが届かないことが判明。送信はできるのだが。

これがさらなる悲劇の始まりであった。

調べてみると、複数アカウントで受信するためには「バーチャルメールボックス」という設定をしなければならないとのこと。

その対応のためにこれまでの設定をさらにいじることに。

バーチャルメールボックス設定前は、1アカウントはとりあえず送受信できていたのに

そのアカウントも送受信できなくなってしまっていた。

「status=bounced (User unknown in virtual alias table)」のエラーログがどうやっても消えない。

私の構想上、どうしても2つのアカウントが必要だ。

何度ググってみても有力な情報が見つからない。

何度も何時間も設定を弄ってはテストメールを送りログを確認の繰り返し。

そのうち、おぉ。出来たっ!!!

バーチャルホストの設定が不要だったらしい。

感想

疲れた…の一言。無事に当初の目的は達成したが、もう当分メールサーバー構築はこりごり。

AWS EC2上にメールサーバーを立てるために事前申請してみる

AWS EC2上にメールサーバーを立てようと思って調べてみると事前申請をした方が良いらしい。 スパムに使われないよう制限解除の申請のようだ。

申請回答に2,3営業日掛かるそうなので、今回は申請だけしておくことにする。

申請手順はここを参考に。

AWS EC2 Eメール上限緩和 / 逆引き(rDNS)設定 申請手順

下記の申請ページから「Eメール上限緩和」と「 逆引き(rDNS)設定 」を合わせて申請した。

https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request

f:id:FlyingHighAgain:20150429151207p:plain

で回答を待つ訳だが。 Amazonさんの営業カレンダーってどうなってるのか? 日本での審査だと最悪GW明けとなってしまう可能性も!?

AWS EC2上にWordPressをインストールしてみる

ビジネスサイトのようなものを構築するCMS的なものとしてWordPressAWS EC2上にインストールしてみた。

インストール手順

ただ単にAWSの公式サイトの下記の内容を手順通りに行っただけです。

docs.aws.amazon.com

docs.aws.amazon.com

とくに問題もなく無事、WordPressがインストールできた。

f:id:FlyingHighAgain:20150425232830p:plain

結果

ディスク容量が気になったが、インストール直後の状態ではまだ余裕がありそう。 今はこんな感じ

[ec2-user@ip-XXX-XXX-XXX-XXX wordpress]$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       7.8G  1.4G  6.4G   18% /
devtmpfs         490M   56K  490M    1% /dev
tmpfs            499M     0  499M    0% /dev/shm

MySQLAWS RDSを使うことも検討したが料金計算をしてみて断念。 EC2内にインストールすることとした。

EC2のほうもそんなに容量がないので、できればサイトで使う画像ファイルなどにはS3を使っていければと考えている。

まとめ

とりあえず今回はここまで。サイトの中身は時間をみて少しずつ作り上げていく。

CMSはいままで1回だけ5年ほど前にとある政令都市の市役所ホームページリニューアルのお手伝いで つかったことがあるだけでWordPress自体は初めて。少しずつ使い方を覚えていこうと思う。

またビジネスサイトの作成も経験なし。どこかデザインの参考になるものを探して本格的サイトにしていければと思う。

AWS Route 53 を使い EC2インスタンスにドメイン名をつけてみる

もうちょい後にしようと思っていたのだが昨日作成したWEBサイトにドメイン名をつけてみることにする。

今回はこちらの記事を参考にさせていただきました。

お名前.com で取ったドメインを Amazon Route53で管理し、サブドメインをはてなブログに割り当てるまで - 銀の光と碧い空

ドメインの取得

一応まえまえから、どんなドメイン名をつけようか検討してたので早速申し込み手続きを。

お名前.comでドメインの取得しました。詳細は割愛します。

EC2インスタンスにパブリック固定IPの割り当て

EC2ダッシュボードにある「Elastic IP」を選択し「新しいアドレスの割り当て」を選択。 作成済みのEC2インスタンスへ関連付けする。

※ これの割り当てをするEC2インスタンスに固定用のIPアドレスが付け直されますので注意しましょう。

f:id:FlyingHighAgain:20150424002852p:plain

AWS Route 53 のDNSサービスを利用する

AWSマネージメントコンソールからRoute 53を選択する。

「Create Hosted Zone」を押し、取得したドメインを入力。

ゾーンを作成すると4つのネームサーバーが表示され利用できるようになる。

f:id:FlyingHighAgain:20150424004538p:plain

お名前.comのネームサーバーを変更

お名前.comのドメインNaviにログインし、ネームサーバーを変更。

Route 53で表示されていたネームサーバーを入力します。

f:id:FlyingHighAgain:20150424010041p:plain

nslookupコマンドにてネームサーバーの切り替えを確認。

反映に15分ほどかかりました。

$ nslookup
 set type=ns
 xxxxx.net

f:id:FlyingHighAgain:20150424011638p:plain

IPアドレスの設定

AWS Route 53に戻り作成したゾーンにAレコードを作成。

「Create Record Set」を押しValueにEC2インスタンスの固定IPを入力。Nameのサブドメイン部分は少し迷ったが、とりあえず www とした。

f:id:FlyingHighAgain:20150424012927p:plain

アクセス確認

DNSの反映に20分以上待たされ不安であったが無事に接続!

f:id:FlyingHighAgain:20150424014146p:plain

まとめ

インフラ系に弱いこんな自分にも公開Webサイトが安く(今のところドメイン取得の料金のみ)簡単に構築できてしまっていいのか?(サイトの内容はともかく)という驚き。

1年の無料枠を超えたら料金がどうなるかわからないが、こんな便利なサービスを提供してくれるAmazonさんに感謝したい。

AWS EC2を試してみる(その2)WEBサイト立ち上げ

少し間が空いてしまったが前回のAWS評価のつづき 今回はWebサーバーを起動するまでを試してみる。

以下はEC2インスタンスに接続後の操作です。

Apache HTTPサーバーのインストールと起動

下記コマンドを入力しインストールとサービス起動を行う。

$ sudo yum install httpd
$ sudo service httpd start

テスト用HTMLの作成

wwwのルートディレクトリにHTMLファイルを作成

$ cd /var/www/html
$ sudo vi index.html

とりあえず下記のようなファイルを作成しました。

<html>
<head>
  <title>AWS EC2 デモサイト</title>
</head>
<body>
  <h1>AWS EC2 でWEBサイトを立ち上げてみる</h1>
</body>
</html>

HTTPのアクセスを許可

外部からブラウザアクセスしようとするとセキュリティーでブロックされてしまうようなので セキュリティーグループにルールを追加しHTTPの外部からのアクセスを許可する

f:id:FlyingHighAgain:20150423001959p:plain

とここまでくると、ブラウザからアクセスしてみると下記ページが無事表示された。

f:id:FlyingHighAgain:20150423000035p:plain

まとめ

将来的にはちゃんとしたドメイン名をつけたWebサイトにしたいと思っているが 当面はHTML5,CSS3,Javascriptなどのお勉強実習用に使っていきたいと思う。

AWS EC2を試してみる(その1)

そろそろ私もクラウド*1を勉強しないといけないと思い、AWS(Amazon Web Service) EC2を試すことにした。

AWS EC2 でWebサーバーを構築

ググってみたら、こちらのブログ記事が非常に丁寧にまとめられているようだったので、ありがたく参考にさせていただきました。

AWS EC2を使って無料枠でWebサーバを立ててみた(2014年11月版) - sometimes I laugh

AWSユーザー登録をする

こちらにアクセスしてまずはユーザー登録

http://aws.amazon.com/jp/

f:id:FlyingHighAgain:20150415230314p:plain

途中で電話による本人確認もありながらも登録完了。 f:id:FlyingHighAgain:20150415230340p:plain

マネージメントコンソールを開くとたくさんのサービスが並んでます。 f:id:FlyingHighAgain:20150415231430p:plain

EC2インスタンスの作成

さきほどのマネージメントコンソールからEC2を選択し、仮想サーバーを作成します。

1.Choose AMI

22個ほど用意されたOSイメージの中から、今回は一番トップにある無難そうな「Amazon Linux AMI 2015.03 (HVM), SSD Volume Type - ami-cbf90ecb」 を選択してみます。 f:id:FlyingHighAgain:20150415233228p:plain

2.Choose Instance Type

t2.microのみ無料枠のようなのでこれを選択します。

3.Configure Instance

ここはデフォルトのままで行ってみます。

4.Add Storage

ここは下記のようにしてみます。特に意図があるわけではなく山勘です。(⌒-⌒; )

  • Size: 8GB -> 15GB
  • Volume Type: General Purpose(SSD)
  • Delete on Termination: On -> Off

5.Tag Instance

インスタンスにタグ付けができるようです。何に役立つのかわかりませんが Name:Server1 とだけ設定しておきます。

6.Configure Security Group

どうもインスタンスとの接続方法の指定のようです。 インスタンスLinuxなのでTypeはSSHのままにします。 Sourceでインスタンスに接続できるIPアドレスを指定できるようです。Anywhereのままにしてると次のページでセキュリティの改善をしなさいと警告されたのでMy IPにしました。

7.Review

これまでの設定内容の確認画面です。 設定に問題なければLaunchボタンを押します。

SSH用の証明書の選択ダイアログが表示されるので新規作成しておきます。 続行すると下記の「起動中ですよ」画面が表示されました。

f:id:FlyingHighAgain:20150416005703p:plain

インスタンスに接続する

さてちゃんと起動しているかインスタンスに接続してみます。 接続方法にSSHを選択したのでsshで接続すればよいのですが、さて…と思っていたら、 下記画面のConnectボタンを押すと具体的なインスタンスへの接続方法が表示されましたのでターミナルからその通りにやってみます。

f:id:FlyingHighAgain:20150416012429p:plain

途中なぜか認証の確立に失敗してますが、continueで無事接続できたようです。

f:id:FlyingHighAgain:20150416013659p:plain

ログインのメッセージで「セキュリティーのためアップデートしなさい」とでてますので、本日のところはそれだけして続きはまた明日にします。

無料枠の750時間/月の制約がありますが、当面のところ1インスタンスだけの予定なのでStopしなくて大丈夫そうです。

まとめ

今回は初めてで調査しながら・記事を書きながらしたので時間が掛かってしまったが、慣れてくればかなり短時間でサーバーを用意できそうだ。 次回は実際にWebサーバーを動かしてみる。

*1:個人的には「クラウド」という言葉は嫌い。何を指しているのか定義が曖昧なため。

Haskell Platformをインストールする

さて、もともと快適な開発マシンが欲しくてiMacを購入したので(動作は快適になったのだが、まだ操作が全然快適じゃなぁい´д` ;)、まずはHaskellを使えるようにしてみたいと思う。

iMac(Yosemite)と仮想上のWindows(8.1), Ubuntu(14.04LTS)にそれぞれHaskell Platformをインストールする。

Macにインストール

下記リンクからダウンロード・インストールする。

Haskell Platform for Mac OS X

f:id:FlyingHighAgain:20150215001910p:plain

f:id:FlyingHighAgain:20150215001933p:plain

ターミナルから確認してみる

~ $ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.8.3

はい、一丁あがり。

Windowsにインストール

下記リンクからダウンロード・インストールする。

Haskell Platform for Windows

f:id:FlyingHighAgain:20150215002009p:plain

f:id:FlyingHighAgain:20150215002022p:plain

コマンドプロンプトで確認してみる

>ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.8.3

はい、こっちもOK。

Ubuntuにインストール

下記リンクのバイナリをダウンロードすればいけそうなきがしたのだが…

Haskell Platform for Linux

f:id:FlyingHighAgain:20150215014953p:plain

ここは素直に(?)apt-getを使ってインストールしてみた。

~$ sudo apt-get update
~$ sudo apt-get install haskell-platform

ターミナルで確認してみる

~$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.6.3

ありゃ、バージョンが少し古いみたい。 ちょっと調べてみたがいろいろややこしそうなので、まあいいか。

とりあえず、今回はここまで。