【OCI クラウド移行ガイド】AWS SESからOCI EmailDeliveryの移行/検証メール配信試してみた~メール配信編~

# OCIクラウド移行ガイドとは
オンプレミスやAWSなど、複数のプラットフォームからOracle Cloud Infrastructureへの移行プロジェクトに取り組んでいるクラウドエンジニア（@araidon,@kazunishi,@yama6）による、OCI移行手順をまとめたシリーズ記事です。
各回、サンプルワークロードから対象サービスを取り上げ、移行手順をガイドいたします。

まとめ記事は以下になります。

https://qiita.com/yama6/items/b197c0fe3ec75eb02637

# 移行したいサンプルワークロード
日々の業務でよく目にするサービスを中心に、サンプルワークロードとしてまとめてみました。このシリーズでは、主にAWSからの移行を取り上げます。
このワークロードは、ユーザがログインして、Web上で写真を共有するWebサービスをイメージしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/5d657078-030c-a277-544e-eebe031c74cf.png)

# 移行するサービス：AWS SES

メール配信サービスは様々なSaaSも世に広く出回っておりますが、コスト削減やカスタマイズ性や自社内運用という観点でパブリッククラウド上からメール配信するケースも少なくないと思います。
今回はそういった想定からメール配信サービスについて調査してみました。
タイトルはAWS SESからOCI EmailDeliveryの移行となっていますが、基本的にはOCI EmailDeliveryを主軸/紹介記事としてしていることご容赦ください。

今回はDKIMやSPFまで利用したり、独自ドメインを利用した検証を行いませんがこういったサービスの利用利点としては各プロバイダは、メールを転送する際に送信者と実際のメール送信元が正しいかを、DKIMやSPF等といった認証技術で認証する必要がありますが、業界標準技術を持っているのでオンプレミスで認証に関する設定を担ってくれる部分かなと思います。
また送信送達数や不到達数などのモニタリングができることもメリットだと思われます。
社内システムで簡単にメール配信をしたいなどのニーズを持つ方の一助になれば幸いです。

# 作業流れ
①AWS SESの利用検証
②OCI EmailDeliveryの利用検証
　②-1 アプリケーション構成について
　②-2 権限設定について
　②-3 ユーザにSMTP資格証明の付与
　②-4 Email Deliveryの設定
　②-5 mailxサーバの構築
　②-6 テストメールの送信

# ①AWS SESの検証
AWS SESにアクセスし、各種設定を実施します。
今回はあくまでも検証という形で、サンドボックス内で筆者の固定アドレスにのみテストメールを配信してみるというところだけ実施してみます。
（実際に他アドレスにも送付するとなるとAWS側に"本稼働アクセスのリクエスト"が必要になりますが、どうやら概ね1営業日ほどあれば解除いただけるようです。こういった対応が早いのはいいところですね。）


　任意のメールアドレスと送信ドメインを入力します
　今回は自身のプライベートのメールアドレスを入力しておきました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/dd1a640e-68e2-5566-aeb1-8c71fc25fe76.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/47b02e05-e417-615a-7a4d-36aebe3c4017.png)

　入力に間違いがなければGet Startedをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/5d99dbef-71de-84ca-adc3-20b94bb551c4.png)


画面が遷移し、東京リージョンのサンドボックス環境で構築されたことを確認できます
サンドボックス環境は送信数や送信レートの上限があり、登録したアドレスしか送信できないとのことです
今回はあくまでも操作感やメール配信の検証なので、"テストEメールの送信"をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/ecfa344f-d7bf-0095-da27-cce0f36cb843.png)

以下内容でテストメールを送信します
　Eメール設定：フォーマット済み
　From-address：設定済みの任意Eメールアドレス
　シナリオ：カスタム
　カスタム受信者：設定済みの任意Eメールアドレス
　件名：任意
　本文：任意
　設定セット：my-first-configuration-set(デフォルト)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/137f4614-911b-8e55-e4b6-2431558a0857.png)


自分のメールボックスを確認してみると問題なく配信されることが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/b20ad583-d516-6f6e-89e3-199ffd3841c6.png)

# ②OCI EmailDeliveryの利用検証
## ②-1 アプリケーションの構成について
Email Deliveryサービスを介して電子メールを送信できるようにするためには、Oracle Cloud上でアプリケーションを構成する必要があります。
[公式Document](https://docs.oracle.com/ja-jp/iaas/Content/Email/Reference/gettingstarted_topic-Configuring_ThirdParty_Applications.htm)には以下の記載がありましたので、今回は簡単にMailxを利用した電子メール配信検証をしたいと思います。

　Oracle Application Expressと電子メール配信の統合
　Postfixと電子メール配信の統合
　Oracle Enterprise Managerと電子メール配信の統合
　Mailxと電子メール配信の統合
　MailKitと電子メール配信の統合
　Swaksと電子メール配信の統合
　JavaMailと電子メール配信の統合
　Sendmailと電子メール配信の統合
　PeopleSoftと電子メール配信の統合
　Pythonと電子メール配信の統合

## ②-2 権限設定について
EmailDeliveryを利用するには適切な権限が必要です
「アイデンティティ>ドメイン>Defaultドメイン>グループ」にアクセスし、グループを作成します
　名前：任意
　説明：任意
　グループに割り当てるユーザを選択します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/54e7369e-fe3e-6fd3-e754-674a6927ab42.png)

先ほど作成したグループに対し、ポリシー作成します
　名前：任意
　説明：任意
　コンパートメント：任意
　ポリシー・ユース・ケース：電子メールの管理
　共通ポリシーテンプレート：電子メール管理者がSMTP資格証明、電子メール配信リソース及びロギングを管理できるようにします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/ff083861-63ac-2689-77e5-761e07b75fc3.png)

## ②-3 ユーザにSMTP資格証明の付与
OCI Webコンソールの右上のアイコンから"自分のプロファイル"を選択します
SMTP資格証明にアクセスし、資格証明の生成をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/3d739624-145f-efed-63e8-6cc471531a6a.png)

説明：任意コメント
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/7cc8f0b6-d127-49e9-36d1-521bffad23ee.png)

パスワードはこのポップアップ画面でしか確認できないため、エディタ等にメモしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/77b2d883-5ec4-4741-c267-22ae673e7850.png)

## ②-4 Email Deliveryの設定
OCI Webコンソールから「開発者サービス>>電子メール配信」でEmail Deliveryにアクセスします

承認済送信者の作成を実施します。
任意のメールアドレスを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/fa4c84b0-30b9-7057-30b8-e90739a58dc4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/3c759925-6cb8-8ef2-e33a-5b974c012816.png)


後の作業のためにパブリック・エンドポイントを確認しておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/c4df5a71-7090-0a79-0f20-25f4b4ba24b3.png)

## ②-5 mailxサーバの構築
mailxのインストール
```
sudo yum install mailx
```
/etc/mail.rc にあるファイルを追記
```
sudo vi /etc/mail.rc	
	#smtp config
	   set nss-config-dir=/etc/pki/nssdb/
	   set smtp-use-starttls
	   set smtp-auth=plain
	   set smtp=<SMTPエンドポイント>:587
	   set from=<承認済送信者>
	   set smtp-auth-user=<SMTP送信用のユーザー名(ユーザーOCID)>
	   set smtp-auth-password=<SMTPパスワード> 
```

## ②-6 テストメールの送信
```
echo "Malixを使用したメール送信" | mailx -s "テストメール" ＜送信先のメールアドレス＞
```

自分のメールボックスを確認してみると問題なく配信されることが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/642261bd-d217-50ec-b8e3-d459a993dd2a.png)

# 最後に
今回は簡単にAWS SESとOCI EmailDeliveryについて試してみました。
使用感を試すことを主としたため、実際の本番運用では必須となるであろうDKIMやSPF、独自ドメインを利用した検証をしなかったためではありますが、非常に簡単ではありました。
こういったPaaSをあまり深堀する機会はなかったのでいい勉強になりました。
引き続き、他のサービスについても記事を投稿していきたいと思います。


# 参考

https://docs.oracle.com/ja-jp/iaas/Content/Email/Reference/mailx.htm

https://oracle-japan.github.io/ocitutorials/intermediates/sending-emails-1/