Buildbot不发送电子邮件?

时间:2013-02-09 10:50:50

标签: python continuous-integration buildbot

我有一个针对软件项目运行的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参数。我只是尝试将邮件发送到明确声明的地址,以防任何构建失败。我基本上是这样做的:

  

要获得一个简单的单消息构建(例如,对于邮件列表),请使用   而是以下形式。此表单不会向个人发送邮件   开发人员(因此不需要lookup =参数,解释   以下),相反,它只发送邮件给名为的额外收件人   在论点中:

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

然而,即使我确实有失败的构建,也没有电子邮件到达。可能是什么原因?

我使用fromaddr并根据示例简单地使用buildbot@domain-name.org地址的方式会出现问题吗?该地址是否应以某种方式在我们的域中注册?如果我改用buildbot@localhost会不会产生影响?

问题可能是由于我没有使用relayhost造成的?从文档中的示例看来,这只需要设置为使用出站进行身份验证 - 而不是入站地址。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

与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服务器,因此值得花时间学习和正确配置它。

相关问题