Redashのメール送信設定にAmazon SESを使ってみた

Redashのメール設定にAmazon SESを使ってみました。ややはまりの可能性となりそうな点をピックアップしつつ、必要な設定を挙げてみました。
2021.05.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Redashのアカウント新規登録にて個別実施時にはメール送信が必要だと知りました。メール送信手段について色々な選択肢を試した結果Amazon SESに落ち着きましたが、SESを利用する設定も若干試行錯誤が伴いました。備忘録として残すことにします。

Amazon SESの設定

SESの設定は以下の記事を参考にしてください。

環境設定

必要な環境変数へ指定を入れるだけで完了です。

Redashにて今回用いた変数は以下の通り。

key value
REDASH_MAIL_DEFAULT_SENDER user@domain
REDASH_MAIL_SERVER email-smtp.ap-northeast-1.amazonaws.com
REDASH_MAIL_PORT 587
REDASH_MAIL_USE_TLS True

REDASH_MAIL_SERVERのリージョン名部分は適度変更してください。コードベースでの実装は必要なく、Redashの管理画面上からメール送信用設定で操作できる場所もありません。

変数更新後に動作確認したい場合

デプロイによる変数更新後に再送信する場合はUsersのPending Invitationsから対象ユーザに対してResend Invitationを実行してください。送信完了とは表示されますが、送信処理が失敗していても完了とでます。実際の状況はCloudWatch等からログを確認する必要があります。

よくあるエラー

メールアドレスが認証されていないと出る

以下のエラーが出る場合はSandboxが有効になっている可能性を考慮します。検証目的なら追加認証を、そうでないならSandbox解除申請を行います。

Message rejected: Email address is not verified. The following identities failed the check in region AP-NORTHEAST-1: user@domain

STARTTLSが必要と出る

smtplib.SMTPAuthenticationError: (530, b'Must issue a STARTTLS command first')

REDASH_MAIL_USE_TLSTrueになっている状態で出る場合は、opensslをインストールしてみましょう。

apt-get install openssl

あとがき

ポートとTLS,SSLの設定の組み合わせで手間取ったものの、動作完了まで至れました。送信設定で躓いている場合の参考になれば幸いです。

今回の設定にて一部参考にしていますが、AirFlowでのメール送信設定を行いたい場合は以下の記事を参考にしてください。