TL;DL
Oracle Cloudでメールを送信する際、Email Delivery というサービスがある。
これを使うと良さげ。
設定方法は、公式の チュートリアル(基礎編)、チュートリアル(応用編) や、
他の方が書かれている 記事 がとても詳しいので、まあ詰まることはないだろうと
高を括っていたのだが、実際に設定してみると 少々 躓いてしまったw
自嘲のついでに、自分の環境に構築したときのメモを公開してしまうという試み。
Email Deliveryの設定
準備(OCI外部リソースの設計)
- 送信用のメールアドレス
たとえばhogegegege.net
というドメインを(お名前.com とかで)持っていたとして、
no-reply@sub.hogegegege.net
ってアドレスで、メールを送信(From:)したいケース。- ドメイン(or サブドメ)
新規をドメインを準備できんかったので、たまたま持ってたドメインのサブドメを使う。
たとえば、sub.hogegegege.net
とか。 - アカウント
送信したメールに返信をされても、おそらくdovecotなりを建てないと受け取れない...
それが伝わるようなアカウント名にしておくと良さそう。
たとえば、no-reply
とか。
- ドメイン(or サブドメ)
設定(OCIリソース+DNSレコード追加)
1. SMTP資格証明
このあたりを見ながら、メール送信時にクライアントアプリ側で指定する認証情報を作成。
- SMTPのユーザー名
- パスワード(取り扱いに注意)
2. ドメイン(or サブドメ)の登録
開発者サービス → 電子メール配信 → 電子メール・ドメイン → 『電子メール・ドメインの作成』と進める
3. 承認済送信者の登録
開発者サービス → 電子メール配信 → 承認済送信者 → 『承認済送信者の作成』と進める
4. SPF用のTXTレコード
東京だと、多分v=spf1 include:ap.rp.oracleemaildelivery.com ~all
※ソース
親ドメインhogegegege.net
のDNSに、TXTレコードを入れる。
数分でレコードが伝搬されるはず。以下、確認方法のサンプル。
PS C:\Users\xxxxxxxx> nslookup -type=txt sub.hogegegege.net 8.8.8.8
サーバー: dns.google
Address: 8.8.8.8
権限のない回答:
sub.hogegegege.net text = "v=spf1 include:ap.rp.oracleemaildelivery.com ~all"
PS C:\Users\xxxxxxxx>
5. DKIM用のCNAMEレコード
開発者サービス → 電子メール配信 → 電子メール・ドメイン
→ 『sub.hogegegege.net (さっき登録したドメイン)』 → 『DKIMの追加』と進めて、
適当に「DKIMセレクタ」を入力(図の dkim-sub-000)して、CNAMEのレコード/値を作成。
ドメインhogegegege.net
のDNSに、CNAMEレコードを入れる。
・DNSに設定するレコードの情報(↑で作成したもの)
レコード:(例)dkim-sub-000._domainkey.sub.hogegegege.net.
値 :(例)dkim-sub-000.sub.hogegegege.net.dkim.nrt1.oracleemaildelivery.com
数分でレコードが伝搬されるはず。以下、確認方法のサンプル。
PS C:\Users\xxxxxxxx> nslookup -type=cname dkim-sub-000._domainkey.sub.hogegegege.net 8.8.8.8
サーバー: dns.google
Address: 8.8.8.8
権限のない回答:
dkim-sub-000._domainkey.sub.hogegegege.net canonical name = dkim-sub-000.sub.hogegegege.net.dkim.nrt1.oracleemaildelivery.com
PS C:\Users\xxxxxxxx>
6. ポリシー
アイデンティティとセキュリティ → ポリシー → 『ポリシーの作成』と進めて、
メールアプリからでも、Email Deliveryを使えるようにポリシーを追加する。
Allow グループ名 to use email-family in compartment コンパートメント名
詳細はこちら。
自分は、SMTP資格での認証のみでメールを送信できるようにしたかったので
グループ名にany-user
を設定して、エラーなくメールを送信することができました。
お仕事環境などの場合のポリシー設計は、セキュリティ責任者さんとお話をして決めましょう。
※コンパートメントの指定方法なども考え方は一緒です
メール送信テスト
Swaksを使う
Perl製のお手軽メール・クライアント。実態はただのPerlスクリプト?らしい。
コマンドでメールを送信できたり、プロトコル・ログを確認することもできるようで、
このプロトコル・ログは、メールが送信できない場合のデバック用途として使えるもよう。
が、長くなるので 別の記事(Linux版, Win版) で整理しますー