ハンズオン: 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
0. 事前準備¶
1. Lightsailキーペアの作成¶
2. Lightsail静的IPアドレスの取得¶
3. Lightsailインスタンスの構築¶
- 3.1. ユーザデータの作成 (postfix: handson-cli-lightsail-user_data)
- 3.2. Lightsailインスタンスの作成 (handson-cli-lightsail-instance)
- 3.3. Lightsailインスタンスへの静的IPアドレスのアタッチ (handson-cli-lightsail-instance)
- 3.4. Lightsailインスタンスのパブリックポートの開放 (handson-cli-lightsail-instance:22022)
- 3.5. Lightsailインスタンスのパブリックポートの開放 (handson-cli-lightsail-instance:25)
4. Route53ゾーンの作成¶
5. Lightsailドメインの作成¶
6. Route53へのLightsailドメインの登録¶
7. 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する可能性が高いです。)
制限解除を申請しないと受信したメールに対するエラーメールも返らないようです。
後始末1. Lightsailドメインの更新¶
後始末2. Route53からのLightsailドメインの削除¶
後始末3. Lightsailドメインの削除¶
後始末4. Route53ゾーンの削除¶
後始末6. Lightsail静的IPアドレスの解放¶
後始末7. 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