23
votes

I've setup Jenkins to send emails only to users who broke the build using email-ext plugin, but I'm getting this error:

Not sending mail to unregistered user [email protected] because your SCM claimed this was associated with a user ID ‘John Smith' which your security realm does not recognize; you may need changes in your SCM plugin

I don't really understand what this error means, is the problem in our SCM, or in the email plugin? The emails are taken from the commit history, should I register them somewhere so Jenkins will start working?

For reference, this is the code around the error message in the plugin's source code:

                    } catch (UsernameNotFoundException x) {
                        if (SEND_TO_UNKNOWN_USERS) {
                            listener.getLogger().printf("Warning: %s is not a recognized user, but sending mail anyway%n", userAddress);
                        } else {
                            listener.getLogger().printf("Not sending mail to unregistered user %s because your SCM"
                    ........

How do I enable SEND_TO_UNKNOWN_USERS?

The error message is also mentioned in this bug report.

4
static /* not final */ boolean SEND_TO_UNKNOWN_USERS = Boolean.getBoolean(MailSender.class.getName() + ".SEND_TO_UNKNOWN_USERS"); So... just figure out how to set that boolean since you have the sourcecode?Shark
@Shark I have it for reference, I don't compile it from source. I need to set it from configuration somehow.sashoalm
-Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true perhaps ? as read here on the email-ext plugin wikiShark
Can this be set from the web interface? I tried setting it from Manage Jenkins -> Configure System -> Global Properties -> Environment Variables, but nothing happened.sashoalm
Looks like the Email Extension plugin adds a checkbox to the system configuration: wiki.jenkins.io/display/JENKINS/Email-ext+pluginandybuckley

4 Answers

38
votes

For version V2.61 or above this can be configured via a radio button.

Go to

Manage Jenkins -> Configure System -> Extended E-mail Notification

and tick the radio button for Allow sending to unregistered users

enter image description here

Edit: If this does not work, see https://stackoverflow.com/a/45353810/492336 for another solution.

19
votes

OK, after some experiments this is what I found out:

Jenkins takes the email part of the committer (not the author). For example for a commit message that looks like that:

Author: John Smith <[email protected]>  2017-07-27 17:15:39
Committer: John Doe <[email protected]>  2017-07-27 17:15:39
Parent: 9c3ff18dda8ca6f7b7ac4ebab4c76d3c85891a33 (commit)
Branch: master

Jenkins will take "committer1", and create a brand new user under People with User ID "committer1" and email "". Unless that user has a password however, it will be considered unregistered so you need to go to Configure for that user and add a password field to it:

enter image description here

So this is one way to fix the error, but you have to do it for every user and in a big team it can be tedious.

8
votes

Put the line bellow in your jenkins startup script

-Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true

The newest Jenkins security directive only allow sending mail to registered user. The line above bypass this configuration.

1
votes

Given jenkins takes the first part of the email address and creates a user, I made my team have their jenkins user name be the first part of their email address. This removed any overhead of having to maintain two separate users.