数珠丸
概要
独自ドメインのメールをSlackをクライアントとして送受信するツール。
- 受信: SESで受けたメールをS3に保存し、Lambdaで解析してSlackに投稿する。本文がSlack Block Kitの文字数制限を超える場合は、ファイルとしてスレッドに添付する
- 送信: botにテンプレートを出させ、記入して投稿したメッセージのURLをbotに渡すと、プレビューが表示される。確認して送信ボタンを押すとSESから送る。同じメッセージからの二重送信は防いでいる
目的
- 独自ドメインのメール送受信環境を作ること
- 商用サービスほどの可用性は必要ないので作ってみた。
- 常時稼働のサーバーがないので運用コストが低い。受信したメールはまずS3に保存するので、Slackへの投稿に失敗してもメール自体は失われない
- 「インフラがインターフェイスを実装する」という考え方が、クラスレベルだけでなくパッケージやデプロイレベルでも成り立つことを実感すること
- メールの解析や送信の判断はcoreパッケージにまとめ、ストレージやメールサーバーとのやり取りはリポジトリのインターフェースとして抽象化したので、一応クラウドプロバイダの種類にも依存しない設計になっている
現在の状態
coreパッケージはnpmで公開中(さすがにまともな名前をつけた): @rindrics/slackmail
独自ドメイン宛てのメールは、すべて本ツールで受信している。