Stop Emails from being Filtered due to Local address contains illegal character
Scenario
Sometimes, mail will be dropped as the email contains illegal characters. JEMH Audit Screen would show something like:
Audit Screen results
Audit event details
Field Value Help
Processed OK: N
Rejected:
Process Outcome: forward
Hints:
Can Handle: N
Do Delete: Y
Email Subject: some topic
Message Size: 331.8 Kb
Signed:
Issue Key:
Created:
Updated:
Commented:
Processor Selected:
Exception:
Failed to send the forward mail: Local address contains illegal character
AddressException: Local address contains illegal character:
javax.mail.internet.AddressException: Local address contains illegal character in string ``NUVI: "; \"ABC DEF\"" <ABC.DEF@place.com''
at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java:1216)
at javax.mail.internet.InternetAddress.parse(InternetAddress.java:1091)
at javax.mail.internet.InternetAddress.parseHeader(InternetAddress.java:658)
at javax.mail.internet.MimeMessage.getAddressHeader(MimeMessage.java:702)
at javax.mail.internet.MimeMessage.getRecipients(MimeMessage.java:534)
at com.javahollic.jira.emh.service.DefaultJEMHMailManager.updateContextForMessage(DefaultJEMHMailManager.java:1478)
at com.javahollic.jira.emh.service.DefaultJEMHMailManager.sendForwardEmail(DefaultJEMHMailManager.java:582)
at com.javahollic.jira.emh.service.EnterpriseMessageHandlerImpl.sendForwardMail(EnterpriseMessageHandlerImpl.java:695)
at com.javahollic.jira.emh.service.EnterpriseMessageHandlerImpl.updateAuditEvent(EnterpriseMessageHandlerImpl.java:532)
at com.javahollic.jira.emh.service.EnterpriseMessageHandlerImpl.handleMessage(EnterpriseMessageHandlerImpl.java:259)
at com.javahollic.jira.emh.service.EnterpriseMessageHandlerProxy.handleMessage(EnterpriseMessageHandlerProxy.java:45)
at com.atlassian.jira.service.services.mail.MailFetcherService$1.process(MailFetcherService.java:368)
at com.atlassian.jira.service.services.mail.MailFetcherService$MessageProviderImpl.getAndProcessMail(MailFetcherService.java:271)
at com.atlassian.jira.service.services.mail.MailFetcherService.runImpl(MailFetcherService.java:356)
Why?
JIRA uses a library called JavaMail that strictly interprets Internet standards such as (RFC 2045, RFC 2046, and RFC 2047). The IMAP, SMTP, and POP3 protocols use MimeMessages
. Whilst being strict, the JavaMail API specification requires support for behaviour changing properties, which must be set in the System
properties. The properties are always set as strings;
Solution
A possible workaround to allow these illegal characters 'in' is to set a system property in the java launch script:
Mail Property | Notes | Related Pages |
---|---|---|
-Dmail.mime.address.strict | Set to false to disable strict mail addresses |
Consequences
As yet unknown. Potential for non-standard characters to cause storage problems within JEMH is a possibility for SQLServer and Mysql depending on characters involved.