Sending mail does not work on Snapshot Release

I have troubles configuring the sending mail from rules.

here my configuration:

mail.cfg

hostname=mail.gmx.net
username=openhab.lukic@gmx.ch
password=xxxxxxxxx
from=openhab.lukic@gmx.ch 
ssl=true

I have enabled debugging and what I see is that the if I set the port to a value, default is 25, this is ignored and 465 is used.

debug:

2017-01-14 08:30:00.905 [ERROR] [rg.openhab.action.mail.internal.Mail] - Could not send e-mail to 'slavisa.lukic@gmail.com'.
org.apache.commons.mail.EmailException: Sending the email to the following server failed : mail.gmx.net:465
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1421)
	at org.apache.commons.mail.Email.send(Email.java:1448)
	at org.openhab.action.mail.internal.Mail.sendMail(Mail.java:157)
	at org.openhab.action.mail.internal.Mail.sendMail(Mail.java:89)
	at org.openhab.action.mail.internal.Mail.sendMail(Mail.java:67)
	at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_111]
	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_111]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1085)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1060)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:991)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:114)[129:org.eclipse.smarthome.model.script:0.9.0.201701091847]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:901)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:864)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:223)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:446)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:227)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:189)[145:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.smarthome.model.script.runtime.internal.engine.ScriptImpl.execute(ScriptImpl.java:77)[130:org.eclipse.smarthome.model.script.runtime:0.9.0.201701091847]
	at org.eclipse.smarthome.model.rule.runtime.internal.engine.ExecuteRuleJob.execute(ExecuteRuleJob.java:60)[128:org.eclipse.smarthome.model.rule.runtime:0.9.0.201701091847]
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)[104:org.eclipse.smarthome.core.scheduler:0.9.0.201701091847]
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)[104:org.eclipse.smarthome.core.scheduler:0.9.0.201701091847]
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: mail.gmx.net, port: 465;

Can anyone give me guess what I am doing wrong. I tried different providers.

The online help for gmx.net mail setup offers information about port 587 as the normal port to use, so try these settings:

hostname=mail.gmx.net
port=587
username=openhab.lukic@gmx.ch
password=xxxxxxxxx
from=openhab.lukic@gmx.ch 
tls=true

Does it make a difference?

Don’t you have to use

port=25
tls=true

instead of “ssl= true”?

Christian

The link given above says that STARTTLS should work with port 587 (assuming I’m understanding the page in German correctly).

No, no difference,
the parameter is somehow ignored.
I changed the hostname, to be sure that I am changing the right config file, and this parameter is taken, not the port.

If you

openhab> config:list | grep port

does 587 appear? Did you restart openHAB in the case that the new configuration is somehow not being read when edited?

I have restarted, same result.
I tried to access the karaf console, but:

  • 8101 just stall before login
  • /usr/share/openhab2/runtime/bin/client

i get:

client: Ignoring predefined value for KARAF_HOME
Logging in as openhab
Authentication failed

strange

Yes, strange. I am using the Debian package on the unstable channel via apt-get, and the first time you try to

ssh openhab@localhost -p 8101

it will take a very long time generating the cryptographic key. On my Pi2, it takes so long that the ssh client times out, but on the next attempt it goes directly to the Password: prompt (default password habopen).

Incidently, If anyone has any suggestions on how to overcome this, I would appreciate a message here.

Finally I managed to get karaf running.
Here the results:

openhab> config:list | grep port
   port = 587
   feature.esh-io-transport-dbus/0.9.0.SNAPSHOT = esh-io-transport-dbus/0.9.0.SNAPSHOT
   feature.esh-io-transport-mdns/0.9.0.SNAPSHOT = esh-io-transport-mdns/0.9.0.SNAPSHOT
   feature.esh-io-transport-mqtt/0.9.0.SNAPSHOT = esh-io-transport-mqtt/0.9.0.SNAPSHOT
   feature.esh-io-transport-upnp/0.9.0.SNAPSHOT = esh-io-transport-upnp/0.9.0.SNAPSHOT
   feature.openhab-transport-mdns/2.0.0.SNAPSHOT = openhab-transport-mdns/2.0.0.SNAPSHOT
   feature.openhab-transport-mqtt/2.0.0.SNAPSHOT = openhab-transport-mqtt/2.0.0.SNAPSHOT
   feature.openhab-transport-serial/2.0.0.SNAPSHOT = openhab-transport-serial/2.0.0.SNAPSHOT
   feature.openhab-transport-upnp/2.0.0.SNAPSHOT = openhab-transport-upnp/2.0.0.SNAPSHOT

tons of ongoing log entries, multiple per second?

openhab> log:tail mail
17:16:30.511 [ERROR] [rg.openhab.action.mail.internal.Mail] - Could not send e-mail to 'slavisa.lukic@gmail.com'.
org.apache.commons.mail.EmailException: Sending the email to the following server failed : mail.gmx.net:465
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1421)
	at org.apache.commons.mail.Email.send(Email.java:1448)
	at org.openhab.action.mail.internal.Mail.sendMail(Mail.java:157)
	at org.openhab.action.mail.internal.Mail.sendMail(Mail.java:89)
	at org.openhab.action.mail.internal.Mail.sendMail(Mail.java:67)
	at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_111]
	at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_111]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1085)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1060)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:991)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:114)[130:org.eclipse.smarthome.model.script:0.9.0.201701140927]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:901)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:864)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:223)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:446)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:227)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:203)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:189)[146:org.eclipse.xtext.xbase:2.9.2.v20160428-1452]
	at org.eclipse.smarthome.model.script.runtime.internal.engine.ScriptImpl.execute(ScriptImpl.java:77)[131:org.eclipse.smarthome.model.script.runtime:0.9.0.201701140927]
	at org.eclipse.smarthome.model.rule.runtime.internal.engine.ExecuteRuleJob.execute(ExecuteRuleJob.java:60)[129:org.eclipse.smarthome.model.rule.runtime:0.9.0.201701140927]
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)[105:org.eclipse.smarthome.core.scheduler:0.9.0.201701140927]
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)[105:org.eclipse.smarthome.core.scheduler:0.9.0.201701140927]
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: mail.gmx.net, port: 465;

Seems the port is ignored?!

Strange! If you browse the full output of config:list, do you see any sign of mail settings containing 465?

I will do some testing here shortly, since we’re on the same build.

config:list | grep 465

delivers nothing

I also apt-getted it today

any news on this topic?
does anybody have a guess what’s going wrong here?

Hi, I just edited my etc/services/mail.cfg twice, port 123 and port 25:

openhab> config:list | grep port
   port = 123
openhab> config:list | grep port
   port = 25

Works (without restarting openHAB 2) without problems for me…

Christian

This is not the problem.
the port definition is ignored and always 465 is used.

I set the port to 123:

Caused by: javax.mail.MessagingException: Could not connect to SMTP host: webmail.hailer.eu, port: 123;

Ah! If I set ssl = true, then port 465 indeed is used, despite of the configured port!

16:52:41.274 [ERROR] [rg.openhab.action.mail.internal.Mail] - Could not send e-mail to 'christian@hailer.eu'.
org.apache.commons.mail.EmailException: Sending the email to the following server failed : webmail.hailer.eu:465

Until we find the cause of this bug, try setting “ssl = false” and “tls=true” explicitly in your mail config

Found the cause!

https://commons.apache.org/proper/commons-email/apidocs/src-html/org/apache/commons/mail/Email.html#line.1704

The mail action needs a new configuration parameter to override the default SSL port. I will submit a pull request.

Issue:

Here is a test JAR. I’m out the door right now so can’t offer installation instructions at the moment, but your existing port=587 should take effect for ssl=true connections, with this change. No new configuration parameter is needed – the existing port= should take effect.

Please let us know!

asume right procedure I usem is:

  • disable mail in paper ui
  • drop over jar to addons folder
    ?