我为一个软件项目运行了一个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-ofour-project.org”,而NOTIFICATION_EMAIL是一个带有电子邮件的字符串,我想在其中获取通知。
根据文档的说法,一切似乎都很好;我不向感兴趣的用户发送邮件,因此不需要lookup参数。我只是试图发送邮件到一个明确声明的地址,以防任何构建失败。我基本上是这样做的:
要获得每个构建一个简单的一条消息(例如,对于一个邮件列表),请使用以下形式。此表单不向单个开发人员发送邮件(因此不需要下面解释的lookup=参数),而是只向参数中指定的额外收件人发送邮件:
mn = MailNotifier(fromaddr="buildbot@example.org",
sendToInterestedUsers=False,
extraRecipients=['listaddr@example.org'])然而,没有电子邮件到达,即使我确实有失败的构建。可能是什么原因?
我使用fromaddr的方式是否会出现问题,并按示例简单地使用buildbot@domain-name.org地址?这个地址应该以某种方式在我们的域名注册吗?如果我用buildbot@localhost代替,会有什么不同吗?
这个问题可能是我不使用relayhost造成的吗?从文档中的示例中可以看出,这只需设置为使用出站--而不是入站--地址进行身份验证。
任何帮助都将不胜感激。
发布于 2013-02-18 12:44:51
类似于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,所以我安装了它)。关于如何安装和配置后缀有很多教程和手册,所以一旦我找到了这条线索,就很容易继续下去了。
关于拥有自己的SMTP服务器,有许多考虑因素;例如,找到一种方法来保护它免受未经授权的访问,否则它可以被例如垃圾邮件发送者使用。但是,如果您想从buildbot获得电子邮件,您必须有一个SMTP服务器,因此值得学习和正确配置它。
https://stackoverflow.com/questions/14787336
复制相似问题