Jenkins“不向未注册用户发送邮件”

时间:2017-05-23 07:15:33

标签: jenkins

Jenkins拒绝向某些用户发送错误邮件。 在日志中我发现了这些消息:

....
Build step 'Maven Goals aufrufen' marked build as failure
Not sending mail to unregistered user user1@example.org
Sending e-mails to: user2@example.org
Finished: FAILURE

用户(user1)列在管理员列表中。他还有一封注册邮箱(user1@example.org)。

Jenkins Peoaple admin interface

那么为什么这个用户被称为未注册用户?

在搜索此警告时,我发现了几个开放的JIRA问题,例如https://issues.jenkins-ci.org/browse/JENKINS-43178 但这些对我没有帮助。

这是错误配置还是jenkins错误?

5 个答案:

答案 0 :(得分:7)

问题是(对我来说):

 SECURITY-372 (advisory) Emails were sent to addresses not associated with
 actual users of Jenkins.

我正在使用Jenkins和Gerrit触发器来创建新创建的Patchsets或已发布的草稿。 有了这个安全"修复",詹金斯将尝试猜测"电子邮件地址前的名称中的用户名。例如"名称姓氏","名称姓氏"部分将是用户名jenkins尝试在Jenkins UserDB中查找,但该组合与我们的LDAP中使用的标识符不同,因此jenkins不会发送电子邮件....除非:

https://wiki.jenkins.io/display/JENKINS/Email-ext+plugin#Email-extplugin-2.57.2(April10,2017)

If the security fix is undesirable in a particular instance, it can be disabled with either or both of the following two system properties:

    -Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true: send mail to build culprits even if they do not seem to be associated with a valid Jenkins login.
    -Dhudson.tasks.MailSender.SEND_TO_USERS_WITHOUT_READ=true: send mail to build culprits associated with a valid Jenkins login even if they would not otherwise have read access to the job.

这些JAVA_ARGS可以添加到/ etc / default / jenkins或/ etc / sysconfig / jenkins中,具体取决于您的发行版。

答案 1 :(得分:5)

Jenkins 2.150.1中至少在Allow sending to unregistered users菜单下有Configure System设置。

答案 2 :(得分:3)

未注册的用户没有jenkins密码。在jenkins用户密码字段中输入密码后,邮件将发送给该​​用户。

输入密码

  1. 导航至用户管理“人员”:http://jenkins/asynchPeople/ enter image description here
  2. 选择用户
  3. 选择“配置”
  4. 在密码字段
  5. 中输入密码

    User password

答案 3 :(得分:3)

澄清马蒂亚斯的回答: 即使在构建期间创建了用户帐户(因为SCM提供了有关提交者的信息),它仍然是Jenkins的“未注册用户”。因此,不会向该用户发送电子邮件。

如果您导航到<your-jenkins-URL>/asynchPeople/处的相应用户帐户,则可以配置此用户帐户并为其输入密码。从理论上讲,用户现在可以使用此密码登录Jenkins。一旦Jenkins用户帐户关联密码,就不再将其视为“未注册”。并将收到电子邮件通知。瞧。

答案 4 :(得分:0)

从OP尚不清楚他们是否使用LDAP,但是这里有一些信息可以为我解决该问题,而且我在任何地方都找不到,包括Jenkins JIRA。

以下建议:

-Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true

以及:

Allow sending to unregistered users

和:

Create committer as Jenkins user

对我不起作用。不过,第一个答案确实使我步入了一个解决方案的轨道。 事实证明,在使用LDAP时,Jenkins实际上与git committer的用户名匹配。因此,如果git commit消息为:

Committer: John Doe <John.Doe@company.com>  2019-05-27 19:12:00

Jenkins将采用“ John Doe”,将其转换为“ john.doe”,然后尝试与LDAP匹配。现在,如果您的LDAP用户名是“ john.doe”,那很好,但是在我的情况下,公司标准是“ doejohn”,这将导致出现可怕的消息:

Not sending mail to unregistered user John.Doe@company.com

此消息极易引起误解,因为它显示了正确的电子邮件地址,而不是提及发明的(不存在的)用户名。对我来说,解决方案是将git用户名配置为“ doejohn”:

$ git config --global user.name "doejohn"