0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS SESでメール受信してLambda連携

Posted at

AWS以外での監視サービスを利用していてメールでしか監視の情報が受信できないことがあったので、AWS SESでメールを受信してからLambdaを経由して社内のチャットツールに連携してみました。

構成イメージ

イメージ作ろうと思ったけど手抜きで・・・

監視ツールなどのサービス

  |
  | メール送信
  ↓

SES受信 → S3保存 → Lambda

  |
  | Webhook
  ↓

内部チャットツール

AWS SESのIDにドメインを登録

Route53に登録したドメインをIDに登録します。
※Route53だとEasy DKIMで自動で認証までしてくれます。
※Route53以外でもDKIMの設定で発行されたDNSレコードをドメイン側で登録して検証すれば利用できます。

image.png

Route53のドメインにMXレコードの追加

東京リージョンを使用しているので10 inbound-smtp.ap-northeast-1.amazonaws.comの値でMXレコードを作成します。

image.png

使用するリージョンにより変わるので、必要に応じて以下の公式ドキュメントで確認してください。

メール受信情報を扱うLambdaの準備

今回は何かするわけでは無いので、デフォルトの内容にログ出力を追加したのみです。
※ここでS3からファイル取得して、mailparserなどのライブラリで読み取るところまでやれば、社内チャットやSlackなどに通知できます。

export const handler = async (event) => {

  // 受信した内容をログに出力
  console.log(JSON.stringify(event, null, 2))

  // TODO implement
  const response = {
    statusCode: 200,
    body: JSON.stringify('Hello from Lambda!'),
  };
  return response;
};

メール受信時のS3バケットの準備

メール情報を保持するS3バケットを作成して、イベントを設定

image.png

ファイル追加時のPutでLambdaを起動するようにしておく

image.png

※保持期間があるならライフサイクルポリシーで一定期間経過ファイルの削除

AWS SESでメール受信の設定

受信ルールセットを作成

image.png

受信ルールの追加

先ほどのルールセットにルールを追加します。

image.png

受信するメールアドレスを条件に設定

受信に利用するメールアドレスは、MXレコードに登録されているドメインなら@より前は自由に設定できます。
将来的に使い分けれることを想定して設定しておくのが良いです。

image.png

アクションの指定でS3への保存を指定

image.png

設定するIAMロールに設定する権限は、アクション時のオプションに応じて変更する必要があるので以下を参考に作成
※画面上でIAMロールを作成できるけど、IAM Policyは自動で作成されない点にちゅうい

ルールセットの有効化

ルールセットはデフォルトでステータスが無効になっているため、明示的に有効にする必要があります。

image.png

SESメール受信内容の連携方式における注意点

  • SES → Lambda で直接連携
    • この場合はメール本文が含まれない
  • SES → SNS → Lambda で連携
    • メール本文は連携できるが150kbまでの制限あり
    • ※サイズに収まるならS3を利用しない、この方式が良さそう

その他

SESにメール受信を設定後、早速試したら以下が発生しましたが、こちらはルールセットの有効化忘れでした。。

Returned Mail: 550 5.1.1 Requested action not taken: mailbox unavailable

参考サイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?