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

Reply via email to