MAILET-115 Refactor DSNBounce mailet
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/70f8c252 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/70f8c252 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/70f8c252 Branch: refs/heads/master Commit: 70f8c25272962b58f37e6617780ee73efd8b68bd Parents: f2671b8 Author: Antoine Duprat <[email protected]> Authored: Wed Dec 7 12:01:57 2016 +0100 Committer: Benoit Tellier <[email protected]> Committed: Wed Jan 11 10:03:31 2017 +0700 ---------------------------------------------------------------------- .../james/transport/mailets/DSNBounce.java | 38 +++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/70f8c252/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java index a293f38..a8ccd72 100755 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java @@ -222,30 +222,29 @@ public class DSNBounce extends GenericMailet implements RedirectNotify { @Override public void service(Mail originalMail) throws MessagingException { - if (originalMail.getSender() == null) { - if (getInitParameters().isDebug()) { - log("Processing a bounce request for a message with an empty reverse-path. No bounce will be sent."); - } - if (!getInitParameters().getPassThrough()) { - originalMail.setState(Mail.GHOST); - } - return; + if (hasSender(originalMail)) { + trySendBounce(originalMail); + } + + if (!getInitParameters().getPassThrough()) { + originalMail.setState(Mail.GHOST); } + } + private void trySendBounce(Mail originalMail) throws MessagingException { MailImpl newMail = new MailImpl(originalMail); try { - newMail.setRemoteHost(getRemoteHost()); newMail.setRemoteAddr(getRemoteAddr()); newMail.setRecipients(getSenderAsList(originalMail)); - + if (getInitParameters().isDebug()) { log("New mail - sender: " + newMail.getSender() + ", recipients: " + StringUtils.arrayToString(newMail.getRecipients().toArray()) + ", name: " + newMail.getName() + ", remoteHost: " + newMail.getRemoteHost() + ", remoteAddr: " + newMail.getRemoteAddr() + ", state: " + newMail.getState() + ", lastUpdated: " + newMail.getLastUpdated() + ", errorMessage: " + newMail.getErrorMessage()); } - + newMail.setMessage(createBounceMessage(originalMail)); - + // Set additional headers MailModifier mailModifier = MailModifier.builder() .mailet(this) @@ -259,19 +258,24 @@ public class DSNBounce extends GenericMailet implements RedirectNotify { mailModifier.setReversePath(getReversePath(originalMail), originalMail); mailModifier.setIsReply(getInitParameters().isReply(), originalMail); mailModifier.setSender(getSender(originalMail), originalMail); - newMail = mailModifier.getMail(); - + newMail.getMessage().setHeader(RFC2822Headers.DATE, getDateHeader(originalMail)); - + newMail.getMessage().saveChanges(); getMailetContext().sendMail(newMail); } finally { newMail.dispose(); } + } - if (!getInitParameters().getPassThrough()) { - originalMail.setState(Mail.GHOST); + private boolean hasSender(Mail originalMail) { + if (originalMail.getSender() == null) { + if (getInitParameters().isDebug()) { + log("Processing a bounce request for a message with an empty reverse-path. No bounce will be sent."); + } + return false; } + return true; } private String getDateHeader(Mail originalMail) throws MessagingException { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
