数珠丸

概要

独自ドメインのメールをSlackをクライアントとして送受信するツール。

  • 受信: SESで受けたメールをS3に保存し、Lambdaで解析してSlackに投稿する。本文がSlack Block Kitの文字数制限を超える場合は、ファイルとしてスレッドに添付する
  • 送信: botにテンプレートを出させ、記入して投稿したメッセージのURLをbotに渡すと、プレビューが表示される。確認して送信ボタンを押すとSESから送る。同じメッセージからの二重送信は防いでいる

目的

  • 独自ドメインのメール送受信環境を作ること
    • 商用サービスほどの可用性は必要ないので作ってみた。
    • 常時稼働のサーバーがないので運用コストが低い。受信したメールはまずS3に保存するので、Slackへの投稿に失敗してもメール自体は失われない
  • 「インフラがインターフェイスを実装する」という考え方が、クラスレベルだけでなくパッケージやデプロイレベルでも成り立つことを実感すること
    • メールの解析や送信の判断はcoreパッケージにまとめ、ストレージやメールサーバーとのやり取りはリポジトリのインターフェースとして抽象化したので、一応クラウドプロバイダの種類にも依存しない設計になっている

現在の状態

coreパッケージはnpmで公開中(さすがにまともな名前をつけた): @rindrics/slackmail

独自ドメイン宛てのメールは、すべて本ツールで受信している。

利用技術

Amazon SES, AWS Lambda, Bolt for JS, Pulumi, Route53, TypeScript