Issue Summary
An email received as part of a voice mail broke the incoming email request for a Jira Service Management project.
An email from +49xxxxxxxxx@.MISSING-HOST-NAME. that contained a voice mail/ message caused the mail processor to stop processing any incoming mail.
This is reproducible on Data Center: yes
Steps to Reproduce
- Configure a email channel for a JSM project
- Send an email from a invalid email address that contains a voice message
- The mail processor will get stuck and fail to process any incoming mail
Expected Results
If the mail processor encounters an invalid email address or invalid email content, it should reject or mark the mail has failed to process
Actual Results
The mail process fails for the following error;
2023-02-08 15:19:37,192+0100 DEBUG [] Caesium-1-1 ServiceRunner Start running MailProcessor ...
2023-02-08 15:19:37,195+0100 DEBUG [] Caesium-1-1 ServiceRunner Found 2 valid mail channels for processing email(s)
2023-02-08 15:19:37,195+0100 DEBUG [] Caesium-1-1 ServiceRunner Starts processing mail item(s) for mail channel [CHANNELa1ab56170b9a] ...
2023-02-08 15:19:37,196+0100 DEBUG [] Caesium-1-1 ServiceRunner Looking up main handler ...
2023-02-08 15:19:37,197+0100 DEBUG [] Caesium-1-1 ServiceRunner Found main handler [com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.handler.SDMailHandler]
2023-02-08 15:19:37,197+0100 DEBUG [] Caesium-1-1 ServiceRunner Looking up mail filters ...
2023-02-08 15:19:37,198+0100 DEBUG [] Caesium-1-1 ServiceRunner Found 4 mail filters com.atlassian.jira.mail.processor.api.handler.DeliveryStatusMailFilter, com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.filter.SDSentFromJIRAFilter, com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.filter.SDBulkFilter, com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.filter.SDAutoReplyFilter
2023-02-08 15:19:37,223+0100 DEBUG [] Caesium-1-1 ServiceRunner Starts processing mail item [id: 115047] ...
2023-02-08 15:19:37,223+0100 DEBUG [] Caesium-1-1 ServiceRunner Checking if mail item [id: 115047] is a mail loop ...
2023-02-08 15:19:37,224+0100 DEBUG [] Caesium-1-1 ServiceRunner Filtering message [message number: 0] using mail filter allow list...
2023-02-08 15:19:37,227+0100 ERROR [] Caesium-1-1 ServiceRunner MailJobRunner Failed
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at com.atlassian.jira.internal.mail.processor.feature.processor.AllowBlockListHelper.getSenderDomain(AllowBlockListHelper.java:77) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.feature.processor.AllowBlockListHelper.isSenderAllowListed(AllowBlockListHelper.java:66) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.feature.processor.AllowBlockListHelper.isMessageInAllowList(AllowBlockListHelper.java:54) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.feature.processor.MailFilterWorker.filter(MailFilterWorker.java:57) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.processMailItem(MailProcessorWorker.java:120) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.lambda$process$0(MailProcessorWorker.java:96) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.lambda$execute$0(DatabaseAccessorImpl.java:69) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.executeInternal(DefaultTransactionalExecutor.java:109) [?:?]
at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.lambda$execute$0(DefaultTransactionalExecutor.java:64) [?:?]
at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.lambda$borrowConnectionAndExecute$0(JiraHostConnectionAccessor.java:95) [?:?]
at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:74) [classes/:?]
at jdk.internal.reflect.GeneratedMethodAccessor673.invoke(Unknown Source) [?:?]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [?:?]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) [?:?]
at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26) [atlassian-plugins-core-7.1.4.jar:?]
at com.sun.proxy.$Proxy726.executeQuery(Unknown Source) [?:?]
at jdk.internal.reflect.GeneratedMethodAccessor673.invoke(Unknown Source) [?:?]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [?:?]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) [?:?]
at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:130) [atlassian-plugins-osgi-bridge-7.1.4.jar:?]
at com.sun.proxy.$Proxy726.executeQuery(Unknown Source) [?:?]
at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.borrowConnectionAndExecute(JiraHostConnectionAccessor.java:84) [?:?]
at com.atlassian.sal.jira.rdbms.JiraHostConnectionAccessor.execute(JiraHostConnectionAccessor.java:48) [?:?]
at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.execute(DefaultTransactionalExecutor.java:61) [?:?]
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(DatabaseAccessorImpl.java:67) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInNewTransaction(DatabaseAccessorImpl.java:38) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.process(MailProcessorWorker.java:93) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.processAllValidMailChannels(MailProcessorWorker.java:143) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorService.run(MailProcessorService.java:25) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.services.MailProcessorExecutor.run(MailProcessorExecutor.java:29) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.services.AbstractMailExecutor.execute(AbstractMailExecutor.java:45) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.jira.internal.mail.processor.services.MailJobRunner.runJob(MailJobRunner.java:35) [jira-email-processor-plugin-5.6.0-REL-0004.jar:?]
at com.atlassian.scheduler.core.JobLauncher.runJob(JobLauncher.java:134) [?:?]
at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(JobLauncher.java:106) [?:?]
at com.atlassian.scheduler.core.JobLauncher.launch(JobLauncher.java:90) [?:?]
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.launchJob(CaesiumSchedulerService.java:435) [?:?]
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJob(CaesiumSchedulerService.java:430) [?:?]
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJobWithRecoveryGuard(CaesiumSchedulerService.java:454) [?:?]
at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeQueuedJob(CaesiumSchedulerService.java:382) [?:?]
at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeJob(SchedulerQueueWorker.java:66) [?:?]
at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeNextJob(SchedulerQueueWorker.java:60) [?:?]
at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.run(SchedulerQueueWorker.java:35) [?:?]
at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
This error seems to specifically happen when trying to check the incoming mail against the Allowlist
Workaround
To workaround this and stop the mail process from checking against the allowlist, disable the feature through Dark features;
- Go to <BASE_URL>/secure/admin/SiteDarkFeatures!default.jspa
- In the Enable Dark Feature box at the bottom, add the following lines and click add after each entry.
- sd.email.allow.list.support.disabled
- sd.email.block.list.support.disabled
- Go to Admin -> Applications and verify that the allowlist and blocklist features are no longer present under email requests.