This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch improve-smtp-debug-logs in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 7a24bdaf250a327edd5b46b2bed3e975b7b6378f Author: Benoit TELLIER <btell...@linagora.com> AuthorDate: Mon Apr 14 18:07:01 2025 +0200 [ENHANCEMENT] Dedicated debug logs for significant SMTP details Failing hooks are also logged at INFO --- .../org/apache/james/protocols/smtp/core/HeloCmdHandler.java | 3 +++ .../org/apache/james/protocols/smtp/core/MailCmdHandler.java | 3 +++ .../org/apache/james/protocols/smtp/core/QuitCmdHandler.java | 7 ++++++- .../org/apache/james/protocols/smtp/core/RcptCmdHandler.java | 11 +++++++---- .../james/protocols/smtp/core/esmtp/EhloCmdHandler.java | 3 +++ 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java index f7da421392..607cb58033 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java @@ -23,6 +23,7 @@ import java.util.Collection; import jakarta.inject.Inject; +import org.apache.commons.lang3.StringUtils; import org.apache.james.metrics.api.MetricFactory; import org.apache.james.protocols.api.ProtocolSession; import org.apache.james.protocols.api.ProtocolSession.State; @@ -82,6 +83,8 @@ public class HeloCmdHandler extends AbstractHookableCmdHandler<HeloHook> { response.append(session.getConfiguration().getHelloName()).append( " Hello ").append(parameters).append(" [").append( session.getRemoteAddress().getAddress().getHostAddress()).append("])"); + + LOGGER.debug("HELO {} {}", StringUtils.abbreviate(command, 80), StringUtils.abbreviate(parameters, 80)); return new SMTPResponse(SMTPRetCode.MAIL_OK, response); } diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java index c3f4095cbe..1b46315dca 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java @@ -29,6 +29,7 @@ import java.util.StringTokenizer; import jakarta.inject.Inject; import jakarta.mail.internet.AddressException; +import org.apache.commons.lang3.StringUtils; import org.apache.james.core.MailAddress; import org.apache.james.core.MaybeSender; import org.apache.james.metrics.api.MetricFactory; @@ -110,6 +111,8 @@ public class MailCmdHandler extends AbstractHookableCmdHandler<MailHook> { responseBuffer.append(sender.asString()); } responseBuffer.append("> OK"); + + LOGGER.debug("MAIL FROM {}", StringUtils.abbreviate(sender.asString(), 80)); return new SMTPResponse(SMTPRetCode.MAIL_OK, responseBuffer); } diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/QuitCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/QuitCmdHandler.java index 7bb2dc87c7..515074fe48 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/QuitCmdHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/QuitCmdHandler.java @@ -31,6 +31,8 @@ import org.apache.james.protocols.smtp.SMTPSession; import org.apache.james.protocols.smtp.dsn.DSNStatus; import org.apache.james.protocols.smtp.hook.HookResult; import org.apache.james.protocols.smtp.hook.QuitHook; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableSet; @@ -38,6 +40,7 @@ import com.google.common.collect.ImmutableSet; * Handles QUIT command */ public class QuitCmdHandler extends AbstractHookableCmdHandler<QuitHook> { + private static final Logger LOGGER = LoggerFactory.getLogger(QuitCmdHandler.class); /** * The name of the command handled by the command handler @@ -45,7 +48,7 @@ public class QuitCmdHandler extends AbstractHookableCmdHandler<QuitHook> { private static final Collection<String> COMMANDS = ImmutableSet.of("QUIT"); private static final Response SYNTAX_ERROR; - + static { SMTPResponse response = new SMTPResponse( SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, DSNStatus @@ -80,6 +83,8 @@ public class QuitCmdHandler extends AbstractHookableCmdHandler<QuitHook> { " Service closing transmission channel"); SMTPResponse ret = new SMTPResponse(SMTPRetCode.SYSTEM_QUIT, response); ret.setEndSession(true); + + LOGGER.debug("QUIT"); return ret; } else { return SYNTAX_ERROR; diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java index 14ad4ef504..1ce041ff91 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java @@ -28,6 +28,7 @@ import java.util.StringTokenizer; import jakarta.inject.Inject; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.apache.james.core.MailAddress; import org.apache.james.core.MaybeSender; @@ -85,12 +86,14 @@ public class RcptCmdHandler extends AbstractHookableCmdHandler<RcptHook> impleme MailAddress recipientAddress = session.getAttachment(CURRENT_RECIPIENT, State.Transaction).orElse(MailAddress.nullSender()); rcptColl.add(recipientAddress); session.setAttachment(SMTPSession.RCPT_LIST, rcptColl, State.Transaction); + StringBuilder response = new StringBuilder(); - response - .append( - DSNStatus.getStatus(DSNStatus.SUCCESS, - DSNStatus.ADDRESS_VALID)) + String status = DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.ADDRESS_VALID); + response.append(status) .append(" Recipient <").append(recipientAddress).append("> OK"); + + LOGGER.debug("RCPT TO {}", StringUtils.abbreviate(recipientAddress.asString(), 80)); + return new SMTPResponse(SMTPRetCode.MAIL_OK, response); } diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java index 3af6fb6c64..dfe322b447 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java @@ -25,6 +25,7 @@ import java.util.Locale; import jakarta.inject.Inject; +import org.apache.commons.lang3.StringUtils; import org.apache.james.metrics.api.MetricFactory; import org.apache.james.protocols.api.ProtocolSession.State; import org.apache.james.protocols.api.Response; @@ -95,6 +96,8 @@ public class EhloCmdHandler extends AbstractHookableCmdHandler<HeloHook> impleme COMMAND_NAME, State.Connection); processExtensions(session, resp); + + LOGGER.debug("EHLO {}", StringUtils.abbreviate(argument, 80)); return resp; } --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org