[Redmine]Sending “news” by e-mail to more than 50 Redmine accounts via SES/AWS

SESはハードリミットとして、1通のメールに含まれている宛先が50件までという制限があります。
また、Redmineは3.4.2現在ニュースの通知をする場合、すべてのメンバーをbccに入れて送信するという仕様になっています。そのため、50人以上がプロジェクトに含まれている場合、以下のようなエラーがRedmineのログに出力されニュースが配信されないという現象が起こってしまいます。これを回避するためにlocalhostにpostfixを挟んで送信する手順になります。

554 Transaction failed. Recipient count exceeds 50

ただし、Redmine 4.1.0(リリース予定未定(2017年1月現在))以降ではニュースでも1人1通となる予定のようなので、そうなればこの対応は必要なくなります。
Patch #26791: Send individual notification mails per mail recipient

前提条件:

  • AWS上でSESをSMTPとして使うセットアップは終わっている
  • 利用するSESのRegionはOregon
  • SMTPサーバーを利用するためのIAMユーザーは作成済みでそのCredntial情報を把握している
  • 上記2点についてはUsing AWS SES as SMTP Server for Redmine notificationで説明していますので必要な方はご覧ください。

  • Redmineの環境はAWSのAmazon Linux上で構築済み
  • OSコマンドを実行するユーザーはec2-user
  • postfixの設定は必要最小限に抑える
  • main.cfで設定可能なsmtp_destination_recipient_limitが宛先分割単位となるが、postfixのデフォルト値が50のため、設定をあえて記載はしない。
  • postfixのログが大量に出力されるようになりますが、その対策はここでは触れない。

手順概要

  1. (OPTIONAL)sendmailを削除
  2. Postfixをインストール
  3. (OPTIONAL)mailxをインストール
  4. PostfixをPrimaryのMTAとして設定
  5. Postfixの設定
  6. Postfixのサービス開始
  7. (OPTIONAL)メール送信テスト
  8. Redmineの設定変更
  9. Redmineの再起動
  10. Redmineの管理画面からのテストメール送信

手順詳細

  1. (OPTIONAL)sendmailを削除
  2. sendmailを使っていない環境であればデフォルトでインストールされるsendmailを削除。
    [ec2-user]$ sudo yum erase -y sendmail

  3. Postfixをインストール
  4. [ec2-user]$ sudo yum install -y postfix

  5. (OPTIONAL)mailxをインストール
  6. メールの送信をコマンドラインで確認する場合はインストール
    [ec2-user]$ sudo yum install -y mailx

  7. PostfixをPrimaryのMTAとして設定
  8. sendmailを削除した場合は必要なし。削除していない場合は実行する。
    [ec2-user]$ sudo alternatives --config mta

  9. Postfixの設定
  10. [ec2-user]$ cd /etc/postfix
    [ec2-user]$ sudo cp -p main.cf main.cf.org
    [ec2-user]$ sudo vi main.cf

    以下を追記

    [ec2-user]$ sudo vi sasl_password

    [ec2-user]$ sudo postmap hash:sasl_password
    [ec2-user]$ sudo chmod 600 sasl_password.db
    [ec2-user]$ sudo rm sasl_password

  11. Postfixのサービス開始
  12. [ec2-user]$ sudo /etc/init.d/postfix start

  13. (OPTIONAL)メール送信テスト
  14. mailコマンドを使って検証をします。mailコマンドはmailxがインストールされていることが前提となりますので、上記コマンド(手順3)を実行して必要な場合はインストールしてください。
    -rが送信元メールアドレスとなりますが、これにSESでVerifyされているドメインのメールアドレスを指定する必要があります。
    [ec2-user]$ mail -r xxxx@kohachi.net tomoyuki@kohachi.net
    Subject: This is a test message
    this is a test
    .

  15. Redmineの設定変更
  16. [ec2-user]$ cd redmineのホームDIR/config
    [ec2-user]$ sudo cp -p configuration.yml configuration.yml.old
    [ec2-user]$ sudo vi configuration.yml

  17. Redmineの再起動
  18. Redmineの管理画面からのテストメール送信

Reference: Postfixからの送信を全てSES経由に変更する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です