通知メールの送信元(Return-Path)を変更する。
会社でRedmineをかなりヘビーに使っており、自分の管理してるRedmineのサーバを他のチームにも相乗りで提供しているのですが、メール配信関係でトラブル。
Redmineにはチケットの更新を各担当者(チケットの担当者+ウォッチリストに入っている人)にメールでお知らせする機能があるのですが、この配信先の人のメールがUser Unknownで届かなかった場合にSMTPサーバ側から送信される配信エラーのメールがどこにも届かず、不着になってしまうとの事。
メールのヘッダーを確認すると該当のメールは
となっており、SMTPサーバ側はReturn-Pathのアドレスに向けてメールを送ろうとして、メール配信エラーを起こした模様。このRedmineのユーザ名@サーバホスト名ではメールは受信できないので、当たり前ですね。
このサーバ、メール送信の構成としては Redmine → Postfix → 社内メールサーバ という風にメールをリレーしており、どうもPostfix側が怪しい。
ログを確認しても
Jan 9 10:24:31 サーバホスト名 postfix/pickup[27594]: 8B8DB140058: uid=XX from=
Jan 9 10:24:31 サーバホスト名 postfix/cleanup[29756]: 8B8DB140058: message-id=
Jan 9 10:24:31 サーバホスト名 postfix/qmgr[11947]: 8B8DB140058: from=, size=3034, nrcpt=7 (queue active)
となってるので、やはりおかしくなってるのはここかな?
Redmine側でもconfiguration.ymlでメール送信の設定を変更できますが、どうもsendmailを指定した場合は細かいオプションが指定できそうな項目がない。
ということで、Postfix側で設定の変更をして対応する事にしました。
- /etc/postfix/main.cf に 「sender_canonical_maps = hash:/etc/postfix/canonical」を追加
- /etc/postfix/canonical へ「Redmineのユーザ名@サーバホスト名 指定したメールアドレス」の書式でアドレスの変換マッピングを指定。
- テキストファイルを書き換えたらインデックスファイルを再作成
- postfixを再起動。
$ vi /etc/postfix/canonical
redmine@localhost.localdomain redmine_sender@example.com
$ postmap /etc/postfix/canonical
$ /etc/init.d/postfix restart
これでRedmineからの通知メール送信時のログを見てみると
Jan 9 14:55:46 サーバホスト名 postfix/pickup[4669]: 0D2CF140058: uid=XX from=
Jan 9 14:55:46 サーバホスト名 postfix/cleanup[5879]: 0D2CF140058: message-id=
Jan 9 14:55:46 サーバホスト名 postfix/qmgr[4670]: 0D2CF140058: from=<指定したメールアドレス>, size=1680, nrcpt=1 (queue active)
という風になったのでとりあえず一安心かな?
しかし、今まで自分のプロジェクトで届いてた通知メールにはずっとReturn-Pathついてなかったのに、なぜそのプロジェクトの通知メールだけReturn-Pathが指定されたのかは謎・・・。しばらくログを監視するようにしておきますかね。