さくらレンサバに入れた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 のままでももちろんダメでした。


Thu Apr 3 21:30:39 JST 2008 - 追記

とりあえず調べてみたらエラーの内容はなんとなくわかってきた。

  • SMTPRecipientsRefused は、 Python のモジュール smtplib が送出する例外で、すべての受取人が (sendmail コマンドによって) 弾かれた場合にのみ発生するらしい。
  • ログの最終行の 553 という数字は、 sendmail コマンドが返すエラーコードで、不正中継っぽいもの (spam の踏み台である可能性があるケース) を弾いたときのものっぽいです。

さくらのレンサバの sendmail コマンドのポリシーがどうなってるのかがいまいちよくわからんのですが、その辺の設定が仮に変えられるのだとして、その為に spam の踏み台になるリスクが生まれるんだとするとそれはさすがにまずいので、この辺は良く調べてから対応したほうがよさそう。そもそも回避できないのかもしれないけど。。。

当面は通知なしで運用しようかな。(←ひよったw)

コメント

_ aplo ― 2010/02/26 15:21:58

古い記事ですので、もう解決されたかもですが。

私も似たような問題で、こちらにたどり着きました。

私の場合、Pythonでメールを送ろうという事で
試したところ、サクラサーバ間のメールアドレスには
送れても、他のメールアドレスには送れないという
現象でした。

それで、こちらの情報等も参考にさせて試行錯誤
した結果、ユーザーIDとパスワードで明示的に
ログインさせることで解決しました。

Tracについては門外漢ですが、設定ファイルを見ると
項目はあるようなので試すことで解決するかも?と
思います。

もう解決済みでしたら、ごめんなさい。

_ T.MURACHI ― 2010/03/08 22:51:36

> aplo さめ

情報感謝です。
あいにく、現在開発にはさくらのレンサバではなく別のレンタルサーバーを利用させて頂いているので、試させて頂く機会があるかどうかは分かりませんが、いずれ似たようなケースに直面した際には参考にさせて頂きたいと思います。。。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
おいらがやっている会社の名前をひらがな4文字で。

コメント:

トラックバック

このエントリのトラックバックURL: http://harapeko.asablo.jp/blog/2008/04/03/2948433/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。