さくらレンサバに入れたTracから通知メールが飛ばせない ― 2008年04月03日 16時05分58秒
前々から使っているさくらレンタルサーバ上に、最近 Trac を入れて使おうとしているのですが、メール通知の設定をしても、通知メールがうまいこと飛んでこなくて困っています。
trac.ini の [notification] ディレクティブの設定内容は以下の通り (ドメイン名、メールアドレスは便宜上変えてあります)。
[notification] always_notify_owner = true always_notify_reporter = true always_notify_updater = true mime_encoding = base64 smtp_always_bcc = #smtp_always_cc = example@example.sakura.ne.jp smtp_default_domain = smtp_enabled = true smtp_from = example@example.sakura.ne.jp smtp_password = smtp_port = 587 smtp_replyto = example@example.sakura.ne.jp smtp_server = example.sakura.ne.jp smtp_subject_prefix = __default__ smtp_user = use_public_cc = false use_short_addr = false use_tls = false
smtp_always_cc
のコメントアウトをはずすと、そこで指定したメールアドレスがレンタルサーバー上に設定されたアドレスであれば、そのアドレスにだけはメールが届きます。
smtp_always_cc
をコメントアウトしたままの場合、以下のような動作になるようです。
-
Ticket の報告者がレンタルサーバー上に設定されたメールアドレスを設定している場合、通知メールは問題なく配信される。
-
Ticket の報告者がレンタルサーバー外の (例えば ISP などが提供する) メールアドレスを設定している場合、通知メールは届かない。そして、
log/trac.log
には以下のようなエラーログが出力される。2008-04-03 16:13:26,873 Trac[web_ui] ERROR: Failure sending notification on change to ticket #3: {u'murachi@example.ne.jp': (553, '5.3.0 <murachi@example.ne.jp>... Please receive your mail before sending')} Traceback (most recent call last): File "/home/example/local/lib/python2.4/site-packages/trac/ticket/web_ui.py", line 562, in _do_save tn.notify(ticket, newticket=False, modtime=now) File "/home/example/local/lib/python2.4/site-packages/trac/ticket/notification.py", line 129, in notify NotifyEmail.notify(self, ticket.id, subject) File "/home/example/local/lib/python2.4/site-packages/trac/notification.py",line 216, in notify Notify.notify(self, resid) File "/home/example/local/lib/python2.4/site-packages/trac/notification.py",line 115, in notify self.send(torcpts, ccrcpts) File "/home/example/local/lib/python2.4/site-packages/trac/ticket/notification.py", line 275, in send NotifyEmail.send(self, torcpts, ccrcpts, hdrs) File "/home/example/local/lib/python2.4/site-packages/trac/notification.py",line 368, in send self.server.sendmail(msg['From'], recipients, msgtext) File "/usr/local/lib/python2.4/smtplib.py", line 691, in sendmail raise SMTPRecipientsRefused(senderrs) SMTPRecipientsRefused: {u'murachi@example.ne.jp': (553, '5.3.0 <murachi@example.ne.jp>... Please receive your mail before sending')}
別に通知機能自体は今すぐ必要なわけではないんですが、何でこうなっちゃうのかだけは一応知っておきたいので、とりあえずメモってみます。。。
そもそもさくらのレンサバの sendmail がそういうものなのかなぁ。。。あ、ちなみに smtp_port
が 587 になってますが、25 のままでももちろんダメでした。
とりあえず調べてみたらエラーの内容はなんとなくわかってきた。
SMTPRecipientsRefused
は、 Python のモジュールsmtplib
が送出する例外で、すべての受取人が (sendmail コマンドによって) 弾かれた場合にのみ発生するらしい。- ログの最終行の
553
という数字は、 sendmail コマンドが返すエラーコードで、不正中継っぽいもの (spam の踏み台である可能性があるケース) を弾いたときのものっぽいです。
さくらのレンサバの sendmail コマンドのポリシーがどうなってるのかがいまいちよくわからんのですが、その辺の設定が仮に変えられるのだとして、その為に spam の踏み台になるリスクが生まれるんだとするとそれはさすがにまずいので、この辺は良く調べてから対応したほうがよさそう。そもそも回避できないのかもしれないけど。。。
当面は通知なしで運用しようかな。(←ひよったw)
コメント
_ aplo ― 2010/02/26 15:21:58
_ T.MURACHI ― 2010/03/08 22:51:36
情報感謝です。
あいにく、現在開発にはさくらのレンサバではなく別のレンタルサーバーを利用させて頂いているので、試させて頂く機会があるかどうかは分かりませんが、いずれ似たようなケースに直面した際には参考にさせて頂きたいと思います。。。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。
トラックバック
このエントリのトラックバックURL: http://harapeko.asablo.jp/blog/2008/04/03/2948433/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
私も似たような問題で、こちらにたどり着きました。
私の場合、Pythonでメールを送ろうという事で
試したところ、サクラサーバ間のメールアドレスには
送れても、他のメールアドレスには送れないという
現象でした。
それで、こちらの情報等も参考にさせて試行錯誤
した結果、ユーザーIDとパスワードで明示的に
ログインさせることで解決しました。
Tracについては門外漢ですが、設定ファイルを見ると
項目はあるようなので試すことで解決するかも?と
思います。
もう解決済みでしたら、ごめんなさい。