ハンズオン: Lightsail入門

目的

Lightsailを利用して、簡易メールサーバを構築する。

前提

作業環境条件

本作業は、以下の作業環境で行います。

作業環境条件1: OSとバージョン

本手順は、Amazon Linux "<AmazonLinuxのバージョン>"以降のOS環境での実施を前提としています。

コマンド:

cat /etc/system-release

結果(例):

Amazon Linux AMI release <AmazonLinuxのバージョン>

作業環境条件2: シェルとバージョン

本手順は、bash "<bashのバージョン>"以降のシェル環境での実施を前提としています。

コマンド:

bash --version -v \
  | head -1

結果(例):

GNU bash, バージョン <bashのバージョン> (x86_64-redhat-linux-gnu)

作業環境条件3: AWS CLIのバージョン

本手順は、AWS CLIのバージョン"1.16.251"以降での実施を前提としています。

コマンド:

aws --version

結果(例):

aws-cli/1.16.251 Python/3.6.5 Linux/4.14.59-64.43.amzn1.x86_64 botocore/ 1.11.2

注釈

バージョンが古い場合は最新版に更新しましょう。

コマンド:

sudo -H pip install -U awscli

手順

ローカル環境での作業

  • 今回は"${HOME}/tmp/parameter-handson-cli-lightsail"をパラメータファイル情報用ディレクトリとします。

ディレクトリが存在することを確認します。

コマンド:

ls -d ${HOME}/tmp/parameter-handson-cli-lightsail

結果(例:存在する場合):

${HOME}/tmp/parameter-handson-cli-lightsail

存在しない場合は作成します。

コマンド:

mkdir -p ${HOME}/tmp/parameter-handson-cli-lightsail

6. Route53へのLightsailドメインの登録

8. 動作確認

8.2. Postfixの稼動確認 (Lightsailインスタンス)

コマンド(Lightsailインスタンス):

ps -ef \
  | grep 'postfix' \
  | grep master

結果(例):

root      9041     1  0 07:45 ?        00:00:00 /usr/libexec/postfix/master

コマンド(Lightsailインスタンス):

netstat -a \
  | grep smtp \
  | grep ^tcp

結果(例):

tcp        0      0 *:smtp                      *:*                         LISTEN
tcp        0      0 *:smtp                      *:*                         LISTEN

8.3. ローカルユーザへのメール送信 (Cloud9環境)

変数の設定:

DIR_TMP="${HOME}/environment/tmp-handson-cli-lightsail"

変数の設定(Cloud9環境):

FILE_TMP_DOMAIN="${DIR_TMP}/sub_domain.tmp" \
  && echo ${FILE_TMP_DOMAIN}

結果(例):

${HOME}/environment/tmp-handson-cli-lightsail/sub_domain.tmp

変数の設定(Cloud9環境):

source ${FILE_TMP_DOMAIN}

変数の設定(Cloud9環境):

MAIL_DOMAIN_NAME="${DOMAIN_SUB_FULLNAME}" \
  && echo ${MAIL_DOMAIN_NAME}

結果(例):

handson-cli-lightsail.example.jp

コマンド(Cloud9環境):

cat << EOT
宛先: ec2-user@${MAIL_DOMAIN_NAME}
表題: test for ec2-user
本文: Hello! ec2-user!!
EOT

注釈

メールクライアントに上記の各項目をコピーして、メールを送信します。

8.4. ローカルユーザのメール受信確認 (Lightsailインスタンス)

コマンド(Lightsailインスタンス):

sudo tail -f /var/log/maillog |grep delivered

結果(例):

Feb 10 08:39:23 ip-172-26-7-210 postfix/local[29844]: 5DF6160BA0: to=<ec2-user@handson-cli-lightsail.example.jp>, relay=local, delay=0.08, delays=0.08/0.01/0/0, dsn=2.0.0, status=sent (delivered to mailbox)

注釈

  • しばらくするとログが表示されます。

  • ログの表示を確認できたらCtrl + Cでtailコマンドを終了します。

8.5. ローカルユーザのメール拒否の設定 (Lightsailインスタンス)

コマンド(Lightsailインスタンス):

sudo sh -c "echo 'ec2-user: | \"exit 67\"' >> /etc/postfix/aliases"

コマンド(Lightsailインスタンス):

sudo newaliases

8.6. ローカルユーザへのメール送信 (Cloud9環境)

コマンド(Cloud9環境):

cat << EOT
宛先: ec2-user@${MAIL_DOMAIN_NAME}
表題: reject test for ec2-user
本文: Sorry! ec2-user!!
EOT

注釈

メールクライアントに上記の各項目をコピーして、メールを送信します。

8.7. ローカルユーザのメール拒否の確認 (Lightsailインスタンス)

コマンド(Lightsailインスタンス):

sudo tail -f /var/log/maillog | grep 'user unknown'

結果(例):

Feb 10 08:50:49 ip-172-26-7-210 postfix/local[29872]: CDAE060BA2: to=<ec2-user@handson-cli-lightsail.example.jp>, relay=local, delay=0.09, delays=0.08/0.01/0/0.01, dsn=5.1.1, status=bounced (user unknown)

注釈

  • しばらくするとログが表示されます。

  • ログの表示を確認できたらCtrl + Cでtailコマンドを終了します。

8.8. エイリアスメールへの送信 (Cloud9環境)

コマンド(Cloud9環境):

cat << EOT
宛先: handson-cli@${MAIL_DOMAIN_NAME}
表題: test for alias
本文: Hello! handson-cli!!
EOT

注釈

メールクライアントに上記の各項目をコピーして、メールを送信します。

8.9. エイリアスメールの転送確認 (Lightsailインスタンス)

コマンド(Lightsailインスタンス):

sudo tail -f /var/log/maillog |grep 'handson-cli@'

結果(例):

Feb 10 08:56:56 ip-172-26-7-210 postfix/local[29889]: 428C160BA9: to=<handson-cli@handson-cli-lightsail.example00.com>, relay=local, delay=0.08, delays=0.08/0.01/0/0, dsn=2.0.0, status=sent (forwarded as 533A660BAA)
Feb 10 08:57:26 ip-172-26-7-210 postfix/smtp[29890]: 533A660BAA: to=<operation@office.operation-lab.co.jp>, orig_to=<handson-cli@handson-cli-lightsail.example00.com>, relay=none, delay=30, delays=0/0/30/0, dsn=4.4.1, status=deferred (connect to office.operation-lab.co.jp[219.94.128.219]:25: Connection timed out)

注釈

  • しばらくするとログが表示されます。

  • ログの表示を確認できたらCtrl + Cでtailコマンドを終了します。

注釈

Lightsailは、EC2と同様に外部へのメール送信は制限されているので、転送は1回だけうまくいくかもしれません。 (2回目以降はtimeoutする可能性が高いです。)

制限解除を申請しないと受信したメールに対するエラーメールも返らないようです。

後始末2. Route53からのLightsailドメインの削除

ローカル環境での作業

パラメータファイル情報用ディレクトリを削除します。

コマンド:

rm -Rf ${HOME}/tmp/parameter-handson-cli-lightsail

一時ファイル用ディレクトリを削除します。

コマンド:

rm -Rf ${HOME}/environment/tmp-handson-cli-lightsail

(不要であれば)設定ファイル用ディレクトリを削除します。

コマンド:

rm -Rf ${HOME}/environment/conf-handson-cli-lightsail

備考