Here is the method going bang, with the problematic line highlighted in yellow - I guess mmis object must be null.
public Response onLine(SMTPSession session, ByteBuffer lineByteBuffer, LineHandler<SMTPSession> next) { byte[] line = new byte[lineByteBuffer.remaining()]; lineByteBuffer.get(line, 0, line.length); MimeMessageInputStreamSource mmiss = (MimeMessageInputStreamSource) session.getAttachment(SMTPConstants.DATA_MIMEMESSAGE_STREAMSOURCE, State.Transaction); try { OutputStream out = mmiss.getWritableOutputStream(); // 46 is "." // Stream terminated if (line.length == 3 && line[0] == 46) { out.flush(); out.close(); @SuppressWarnings("unchecked") List<MailAddress> recipientCollection = (List<MailAddress>) session.getAttachment(SMTPSession.RCPT_LIST, State.Transaction); MaybeSender sender = (MaybeSender) session.getAttachment(SMTPSession.SENDER, State.Transaction); MailImpl mail = new MailImpl(MailImpl.getId(), Optional.ofNullable(sender).flatMap(MaybeSender::asOptional), recipientCollection); // store mail in the session so we can be sure it get disposed later session.setAttachment(SMTPConstants.MAIL, mail, State.Transaction); MimeMessageCopyOnWriteProxy mimeMessageCopyOnWriteProxy = null; try { mimeMessageCopyOnWriteProxy = new MimeMessageCopyOnWriteProxy(mmiss); mail.setMessage(mimeMessageCopyOnWriteProxy); Response response = processExtensions(session, mail); session.popLineHandler(); return response; } catch (MessagingException e) { // TODO probably return a temporary problem LOGGER.info("Unexpected error handling DATA stream", e); return new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unexpected error handling DATA stream."); } finally { LifecycleUtil.dispose(mimeMessageCopyOnWriteProxy); LifecycleUtil.dispose(mmiss); LifecycleUtil.dispose(mail); } // DotStuffing. } else if (line[0] == 46 && line[1] == 46) { out.write(line, 1, line.length - 1); // Standard write } else { // TODO: maybe we should handle the Header/Body recognition here // and if needed let a filter to cache the headers to apply some // transformation before writing them to output. out.write(line); } } catch (IOException e) { LifecycleUtil.dispose(mmiss); SMTPResponse response = new SMTPResponse(SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.UNDEFINED_STATUS) + " Error processing message: " + e.getMessage()); LOGGER.error("Unknown error occurred while processing DATA.", e); return response; } return null; } On Mon, 5 Aug 2019 at 10:40, Matt Pryor <pr...@international-presence.com> wrote: > Hi there > > I'm seeing the below NullPointerException when attempting to send email to > James. This stacktrace / error is repeated many times in the wrapper.log. > It appears that the message was received okay however. > > I'm about to delve into the source to look for clues, but wondered if this > rings any bells. > > INFO | jvm 1 | 2019/08/05 10:27:08 | ERROR 10:27:08,949 | > org.apache.james.protocols.netty.BasicChannelUpstreamHandler | Unable to > process request > INFO | jvm 1 | 2019/08/05 10:27:08 | java.lang.NullPointerException > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.smtpserver.DataLineJamesMessageHookHandler.onLine(DataLineJamesMessageHookHandler.java:93) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:101) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:88) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.smtp.core.SeparatingDataLineFilter.onHeadersLine(SeparatingDataLineFilter.java:94) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.smtp.core.AbstractAddHeadersFilter.onHeadersLine(AbstractAddHeadersFilter.java:73) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.smtp.core.SeparatingDataLineFilter.onLine(SeparatingDataLineFilter.java:63) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:101) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:88) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.smtp.core.esmtp.MailSizeEsmtpExtension.onLine(MailSizeEsmtpExtension.java:187) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:101) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.smtp.core.DataCmdHandler$DataLineFilterWrapper.onLine(DataCmdHandler.java:88) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.apache.james.protocols.netty.LineHandlerUpstreamHandler.messageReceived(LineHandlerUpstreamHandler.java:50) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.jboss.netty.channel.SimpleChannelUpstreamHandler.messageReceived(SimpleChannelUpstreamHandler.java:124) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.doRun(ChannelUpstreamEventRunnable.java:43) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:67) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor$ChildExecutor.run(OrderedMemoryAwareThreadPoolExecutor.java:314) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) > INFO | jvm 1 | 2019/08/05 10:27:08 | at > java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) > INFO | jvm 1 | 2019/08/05 10:27:08 | at java.lang.Thread.run(Unknown > Source) > > > Many thanks > Mattt > -- > Matt Pryor > Software Developer > > The International Presence Group of Companies > EMAIL: pr...@presencebpm.com > URL: www.International-presence.com > > > -- Matt Pryor Software Developer The International Presence Group of Companies EMAIL: pr...@presencebpm.com URL: www.International-presence.com