You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2025/04/14 16:09:21 UTC
(james-project) 02/02: [ENHANCEMENT] Dedicated debug logs for significant SMTP details
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 <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org