Giter Site home page Giter Site logo

email-forwarder's Introduction

email-forwarder

Terraform を使って、AWS 上に Email の受信・転送・Slack通知を実行するための環境を作成するためのプロダクトです。

機能

  • SES でのメール受信と S3 へのメール保存
  • S3 に保存したメールを指定されたメールアドレスに転送
  • ついでに Slack に投稿
  • ついでに受信したメールが ACM の apploval メールだったら勝手に承認

SESメール受信ルールの作成も、R53の設定も、Lambda の作成も terraform apply だけで完結します。 手作業でやらなくてはいけないのは、SES の送信Eメールの登録・承認と Slack の incomming web hook の作成だけ。

新規で取得したドメインでメール受信の設定とかするのめんどくさかったんだけど、これ使えば既存のメールアドレスに受信したメールを転送してくれるようになるので、いきなり楽チンになります。

使用にあたって

既存のリソースへの影響がないかの確認を行うためには terraform plan で確認を忘れずにお願いします。

Route53 使用上の注意

既存のドメインに適用する場合は、まず以下のコマンドで Route53 Hosted Zone を Terrahome 管理下においてください。

$ terraform import resource aws_route53_zone.public {__ZONE_ID__}

これやらないと、新規で Route53 zone 作っちゃうので。

SES 送信 Eメール作成

SES の送信Eメールの登録・承認は、手動で行っておく必要があります。 作成した送信Eメールは ${var.email_from} にセットしてください。

ACM の自動承認について

Approval メール本文内のAWSアカウントIDと Lambda が実行されているAWSアカウントIDを比較して同じだったら自動承認するようにしています。 別のAWSアカウントから、ACMリクエストしても自動承認されません。

apply

terraform apply すると、幾つかの変数の入力を要求します。 あらかじめ terraform.tfvars を作っておくといいでしょう。 サンプル

"domain"     = "example.com"
"region"     = "us-east-1"

"email_from" = "[email protected]"
"email_to"   = "[email protected]"

"slack_path"       = "/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX"
"slack_channel"    = "#test"
"slack_icon_emoji" = ":ses:"

"ses_receipt_rule_position" = 1

email_from

SES を使ってメール転送するときの From として使用するメールアドレスです。 事前に SES 送信Eメールとして登録・承認しておいてください。

email_to

転送先のメールアドレスです。

slack_path, slack_channel, slack_user_name, slack_icon_emoji

Slack incoming Webhook 用の情報です。

ses_receipt_rule_position

SES 受信ルールの default-rule-set に受信ルールを追加するので、すでに受信ルールが登録されている場合は最後の数字+1を設定してください。 何も受信ルールが設定されていない場合は 1 でいいです。

email-forwarder's People

Contributors

wokamoto avatar

Stargazers

Yuki Komatsu avatar Takayuki Ushida avatar

Watchers

Tai / JOTAKI Taisuke avatar  avatar James Cloos avatar KOGA Hiromichi avatar Takahiro Horike avatar Koga Tatsuro avatar  avatar Kazue IGARASHI avatar Hidetaka Okamoto avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.