AWS SESでメールを受信し、特定のURLにPOSTする。(関連プロジェクトの mailreceiver を想定している)
~/.aws/credentials を適切に設定し、AWS_PROFILE
と AWS_REGION
が参照できる状態にあること。
SESのメール受信を使用する関係上、使用できるリージョンは限定される。(東京リージョン ap-northeast-1 は使えない。)
パッケージインストール
$ npm install
$ npm run bootstrap
CDKの初期化
$ cd packages/mailforwarder-infrastructure
$ npm run cdk bootstrap
$ export MAIL_RECEIVER_URL="https://..."
$ export MAIL_RECEIVER_AUTH="Basic ..."
$ npm run build
$ npm run deploy-ci
- Email receivingにて、Rule set をアクティブにする。
- Verified Identitiesで、受信したいドメインを確認状態にする。
以下の目的のユーザーが作成されているので、必要があればアクセスキーを発行しておく。
- MailForwarderStack-MailForwarderMUAUser*
- mailreceiverのメールボックスS3バケット用(S3QLで使用)
- MailForwarderStack-MailSender*
- SESメール送信用 (要送信制限解除)
- IAMの管理画面からアクセスキーを発行した後、こちらの方法を使ってSMTPパスワードに変換する。
mailreceiverのメールボックスバケットを使う予定があれば、mailforwarderstack-mailboxbucket*
が同時に作成されるので名前を控えておく。
MailForwarderStack-AccountsTable* に、下記の項目を作成する。 (受信メールアドレスの数だけ作成する)
- accountId: UUIDを作成して設定
- accountEmail: 配信先のメールアドレス (mailreceiver側に存在するアカウントを指定)
- createdAt: JavaScript コンソールで
new Date().getTime()
{
"accountId": "A6137788-A915-439D-B92F-09F6702A8D33",
"accountEmail": "user@example.com",
"createdAt": 1642818458904
}
MailForwarderStack-AccountMappingsTable* に、下記の項目を作成する。
- mappingKey: 受信メールアドレスによる転送の条件
- フルメールアドレス一致の場合、そのメールアドレス
user@example.com
- Gmailスタイルエイリアス
user+test1@example.com
は、エイリアス部分が除かれた状態で評価される。
- Gmailスタイルエイリアス
- ドメイン一致(*@user.example.com)の場合、@+ドメイン
@user.example.com
- 両方に一致する場合は、フルメールアドレス一致が優先される。
- フルメールアドレス一致の場合、そのメールアドレス
- accountId: 配信先のアカウントのUUID
- createdAt: JavaScript コンソールで
new Date().getTime()
{
"mappingKey": "user@example.com",
"accountId": "A6137788-A915-439D-B92F-09F6702A8D33",
"createdAt": 1642818583197
}