Hi guys/gals!

I am running into an issue where certain messages ended up delivered multiple times to a user's mailbox.

After much troubleshooting, we think we caught how this is happening. However I'm not sure if there is a problem in our deployment or if its a bug. I was hoping some of the folks here could try to duplicate this so we can figure this out.

Steps to reproduce:

a) Setup a filter that includes a rule to file a message into a folder and forward to another off-server location
b) Send an email that includes an attachment over 1MB to the account so that it is processed by the filter.
c) Check /opt/zimbra/log/mailbox.log for something like:

Code:
2008-04-30 12:25:04,609 WARN  [LmtpServer-18949] [name=xxx@yyy.com;mid=5;] filter - Redirect to zzz@aaa.com failed.  Saving message to INBOX.  javax.mail.MessagingException: Exception reading response;
  nested exception is:
        java.net.SocketTimeoutException: Read timed out
2008-04-30 12:25:04,611 INFO  [LmtpServer-18949] [name=xxx@yyy.com;mid=5;] mailop - Adding Message: id=1037066, Message-ID=<a17527720804300923p412e4cfw757a0a4c8a0f888c@mail.gmail.com>, parentId=1037018, folderId=2, folderName=Inbox.
2008-04-30 12:25:04,623 INFO  [LmtpServer-18949] [] ProtocolHandler - Exception occurred while handling connection
java.lang.NullPointerException        at com.zimbra.cs.store.BlobInputStream.closeFile(BlobInputStream.java:138)
        at com.zimbra.cs.store.BlobInputStream.closeFile(BlobInputStream.java:138)        at com.zimbra.cs.store.BlobInputStream.closeFile(BlobInputStream.java:138)
        at com.zimbra.cs.store.BlobInputStream.closeFile(BlobInputStream.java:138)
        at com.zimbra.cs.store.BlobInputStream.closeFile(BlobInputStream.java:138)
        at com.zimbra.cs.store.BlobInputStream.closeFile(BlobInputStream.java:138)
        at com.zimbra.cs.store.BlobInputStream.closeFile(BlobInputStream.java:138)
        at com.zimbra.cs.store.BlobInputStream.closeFile(BlobInputStream.java:138)
        at com.zimbra.cs.mime.ParsedMessage.closeFile(ParsedMessage.java:1297)         at com.zimbra.cs.lmtpserver.ZimbraLmtpBackend.deliverMessageToLocalMailboxes(ZimbraLmtpBackend.java:467)
        at com.zimbra.cs.lmtpserver.ZimbraLmtpBackend.deliver(ZimbraLmtpBackend.java:136)
        at com.zimbra.cs.lmtpserver.LmtpHandler.processMessageData(LmtpHandler.java:375)
        at com.zimbra.cs.lmtpserver.TcpLmtpHandler.continueDATA(TcpLmtpHandler.java:67)
        at com.zimbra.cs.lmtpserver.LmtpHandler.doDATA(LmtpHandler.java:364)
        at com.zimbra.cs.lmtpserver.LmtpHandler.processCommand(LmtpHandler.java:174)
        at com.zimbra.cs.lmtpserver.TcpLmtpHandler.processCommand(TcpLmtpHandler.java:61)
        at com.zimbra.cs.tcpserver.ProtocolHandler.processConnection(ProtocolHandler.java:160)
        at com.zimbra.cs.tcpserver.ProtocolHandler.run(ProtocolHandler.java:128)
        at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:619)
2008-04-30 12:25:04,624 INFO  [LmtpServer-18949] [] ProtocolHandler - Handler exiting normally
d) Check the defered mail queue about a minute or two later to see if the message ends up defered.

It will deliver a copy locally, then the defered copy will stay in the queue and keep delivering locally as it continues to try to deliver remotely.

Thanks!