QA #746
未完了メール送信にAWS SESを使用している場合、Redmineから50名超のメールが配信されない(news/watcher)
0%
説明
■現象/要望¶
メール送信にAWS SESを使用している場合、Redmineから50名超のメールが配信されない(Redmine3.4,news/watcher)
このとき、RedmineのログにAWS SESからの554エラー通知が記録されている。
554 Transaction failed. Recipient count exceeds 50
AWS SESでは、1通のメールは最大50人までの受信者しか設定できない仕様のため、Redmine側で回避策が必要。
https://aws.amazon.com/jp/ses/faqs/
■解決策¶
Postfixでメール中継し分割送信する(Redmine3.XでのWorkAround)¶
EC2にPostfixをインストールし、localhostのPostfixを経由してSESに送る。
Postfixは1メールに最大1000件の宛先を指定でき、宛先が50を超える場合は分割して送信できる。(初期設定値)
https://redmine.tokyo/issues/746#note-2
[Redmine] ---(SMTP)---> [Postfix] ---(SMTP)---> [SES]
Redmine4.1.0のメール配信処理変更¶
Redmine4.1.0にて、通知メールを1ユーザー毎に送信するよう変更予定。これにより解消する筈。
http://www.redmine.org/issues/26791
■対応状況¶
Redmine4.1リリースまでは、上記WorkAroundで対処可能。動作確認OK。
↓具体的な設定手順
[Redmine]Sending “news” by e-mail to more than 50 Redmine accounts via SES/AWS
■補足¶
Redmineのメール通知に使用するSMTPサーバーとして、SES(Amazon Simple Email Service)を利用するための手順
[Redmine] Using AWS SES as SMTP Server for Redmine notification
以下、当初内容
現在、AWSのEC2でRedmineを稼働し運用しております。メールの送信にはAWSのSESを利用しています。
その中で、現在メンバーが50名を超えるプロジェクトができました。
するとニュースの更新でメールがメンバーに届かなくなるという現象が発生しました。
調べたところ、Redmineのログに
554 Transaction failed. Recipient count exceeds 50
と出力されており、AWS SESからエラーが返って来ていることがわかりました。
さらに調べたところ以下のFAQに1通のメールは最大50人までの受信者しか設定できないという記載がありました。
https://aws.amazon.com/jp/ses/faqs/
現在AWSにはこの制約が(追加料金などで)解除できるものなのかどうかについては問い合わせを投げておりますが、Redmine側で対応できる策がないのか調べようと思い、こちらに投稿させていただきました。
通常チケットは更新時は1通1宛先なのに、ニュースは一括送信になっている仕様を変えるぐらいしか手立てはないのでしょうか?
お知恵を拝借したく。
Environment:
Redmine version: 3.4.2.stable
Ruby version: 2.3.4-p301 (2017-03-30) [x86_64-linux-gnu]
Rails version: 4.2.8
前田 剛 さんが6年以上前に更新
今すぐ使える情報でなくて申し訳ないのですが、Redmine 4.0.0 (リリース時期未定) では、すべての通知メールが1ユーザーごとに送信されるようになる予定です。
http://www.redmine.org/issues/26791
https://www.slideshare.net/g_maeda/redmine-4041/18
前田 剛 さんが6年以上前に更新
おそらく現在はEC2上のRedmineから直接SESにSMTPで接続していると思いますが、EC2にPostfixをインストールし、localhostのPostfixを経由してSESに送るようにすると解決するのではないかと思います。
現状: [Redmine] ---(SMTP)---> [SES] 変更案: [Redmine] ---(SMTP)---> [Postfix] ---(SMTP)---> [SES]
Postfixに対してはデフォルトでは一度に最大1000件の宛先を指定できます ( smtpd_recipient_limit )。一方、他のMTAにメールを送るときは、デフォルトでは最大50件の宛先を指定し、宛先が50を超える場合は送信処理を分割します( smtp_destination_recipient_limit )。
したがって、Postfixを間に挟むだけで、SESに対しては宛先が50件を超えないメールに小分けして配送してくれると思われます。
Yatsunami Tomo さんが6年以上前に更新
Redmine4.0.0での仕様変更の情報ありがとうございます。
とはいえ、会社で使っている仕組みで人柱は怖いですね・・・。
WorkAroundの提案ありがとうございます。
ひとまずこちらの提案を実現する方向で進めようと思います。
Yatsunami Tomo さんが6年以上前に更新
職務状況ですぐ試せないので、1月中の対応になるのですが、それでも大丈夫でしょうか?
問題なければ確認でき次第共有させていただきます。
Yatsunami Tomo さんが6年以上前に更新
SESの1メールあたりの最大受信者(TOに記載されたメールアドレス数)が50であることの制限についてAmazon Web Servicesからの回答がありましたので、情報共有のために記載しておきます。
こちらの数字について、現時点では個別に設定できる数字ではないということが結論だそうで、やはり前田さんからご提示いただいたWorkAroundで対処するしかなさそうです。その前に4.0.0が出れば別ですが・・・。
※回答はだいぶ前にありましたが、こちらへの記載が遅くなりました。
Yatsunami Tomo さんが約6年前に更新
遅くなりましたが、対応が完了しましたので、ご報告します。
前田さんからのWorkAround提案の通り、
[Redmine] ---(SMTP)---> [Postfix] ---(SMTP)---> [SES]
の環境にし、65アカウントがメンバーとして登録されているプロジェクトでニュースが正しく配信されることを確認しました。
具体的な手順についてはこちらにだいたいまとめましたのでご興味があればご覧ください。
[Redmine]Sending “news” by e-mail to more than 50 Redmine accounts via SES/AWS