3

ソフトウェア プロジェクト用に buildbot セットアップを実行しており、次のように電子メール通知をセットアップしようとしています。

from buildbot.status import mail
c['status'].append(mail.MailNotifier(fromaddr=BUILDBOT_EMAIL,
                                     mode=('failing'),
                                     extraRecipients=[NOTIFICATION_EMAIL],
                                     sendToInterestedUsers=False))

BUILDBOT_EMAILは文字列「buildbot@name-of-our-project.org」で、NOTIFICATION_EMAIL通知を受け取りたい電子メールの文字列です。

documentationによると、すべて問題ないようです。関心のあるユーザーにメールを送信するわけではないので、lookup引数は必要ありません。ビルドが失敗した場合に備えて、明示的に指定されたアドレスにメールを送信しようとしているだけです。私は基本的にこれをやっています:

単純なビルドごとに 1 つのメッセージ (メーリング リストなど) を取得するには、代わりに次のフォームを使用します。このフォームは、個々の開発者にメールを送信しません (したがって、以下で説明する lookup= 引数は必要ありません)。代わりに、引数で指定された追加の受信者にのみメールを送信します。

mn = MailNotifier(fromaddr="buildbot@example.org",
                  sendToInterestedUsers=False,
                  extraRecipients=['listaddr@example.org'])

ただし、ビルドに失敗しているにもかかわらず、電子メールが届きません。原因は何ですか?

fromaddr を使用し、単にbuildbot@domain-name.org例に従ってアドレスを使用する方法に問題がある可能性はありますか? このアドレスを何らかの方法でドメインに登録する必要がありますか? buildbot@localhost代わりに使用すると違いはありますか?

を使用していないために問題が発生する可能性はありrelayhostますか? ドキュメントの例から、これは、インバウンド アドレスではなく、アウトバウンド アドレスでの認証にのみ設定する必要があるようです。

どんな助けでも大歓迎です。

4

1 に答える 1

2

kfunk が提案したのと同様に、私は twistd.log を調べることから始めました。次の内容が含まれていました。

2013-02-09 04:26:18+0000 [-] sending mail (868 bytes) to ['addr@example.com']
2013-02-09 04:26:18+0000 [-] Starting factory <twisted.mail.smtp.ESMTPSenderFactory instance at 0x31dc488>
2013-02-09 04:26:18+0000 [Uninitialized] SMTP Client retrying server. Retry: 5
2013-02-09 04:26:18+0000 [Uninitialized] SMTP Client retrying server. Retry: 4
2013-02-09 04:26:18+0000 [Uninitialized] SMTP Client retrying server. Retry: 3
2013-02-09 04:26:18+0000 [Uninitialized] SMTP Client retrying server. Retry: 2
2013-02-09 04:26:18+0000 [Uninitialized] SMTP Client retrying server. Retry: 1
2013-02-09 04:26:18+0000 [Uninitialized] Unhandled error in Deferred:
2013-02-09 04:26:18+0000 [Uninitialized] Unhandled Error
    Traceback (most recent call last):
    Failure: twisted.internet.error.ConnectionRefusedError: Connection was refused by other side: 111: Connection refused.

マシンのコマンド ラインから ( を使用して) 手動で電子メールを送信しようとしましたsendmailが、失敗しました。SMTP サーバーが起動していないことが判明しました。解決策は、メール転送エージェントをインストールして構成することです (Ubuntu の場合、最も一般的なのは Postfix と思われるため、それをインストールしました)。Postfix をインストールして構成する方法については、チュートリアルやマニュアルがたくさんあります。

独自の SMTP サーバーを持つには多くの考慮事項があります。たとえば、不正アクセスからセキュリティを保護する方法を見つけなければなりません。そうしないと、スパマーなどに使用される可能性があります。ただし、buildbot から電子メールを取得する場合は、SMTP サーバーが必要になるため、それを正しく学習して構成する努力をする価値があります。

于 2013-02-18T12:44:51.100 に答える