This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git


The following commit(s) were added to refs/heads/master by this push:
     new a1661728cb JAMES-3837 add ESMTP ID (i.e. SMTP session ID) as mail 
attribute by default and include it to MDC context in mailet container (#1265)
a1661728cb is described below

commit a1661728cb5546153a7c1ff741f137e0ee240226
Author: ouvtam <[email protected]>
AuthorDate: Tue Oct 25 05:09:42 2022 +0200

    JAMES-3837 add ESMTP ID (i.e. SMTP session ID) as mail attribute by default 
and include it to MDC context in mailet container (#1265)
---
 mailet/api/src/main/java/org/apache/mailet/Mail.java              | 1 +
 .../java/org/apache/james/mailetcontainer/impl/ProcessorImpl.java | 8 ++++++++
 .../apache/james/smtpserver/AddDefaultAttributesMessageHook.java  | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/mailet/api/src/main/java/org/apache/mailet/Mail.java 
b/mailet/api/src/main/java/org/apache/mailet/Mail.java
index 9ab7e9844d..2b1ce09472 100644
--- a/mailet/api/src/main/java/org/apache/mailet/Mail.java
+++ b/mailet/api/src/main/java/org/apache/mailet/Mail.java
@@ -103,6 +103,7 @@ public interface Mail extends Serializable, Cloneable {
 
     AttributeName SMTP_AUTH_USER = 
AttributeName.of("org.apache.james.SMTPAuthUser");
     AttributeName SMTP_HELO = AttributeName.of("org.apache.james.HELO");
+    AttributeName SMTP_SESSION_ID = 
AttributeName.of("org.apache.james.SMTPSessionID");
     AttributeName MAILET_ERROR = 
AttributeName.of("org.apache.james.MailetError");
     Attribute SENT_BY_MAILET_ATTRIBUTE = 
Attribute.convertToAttribute("org.apache.james.SentByMailet", true);
 
diff --git 
a/server/mailet/mailetcontainer-impl/src/main/java/org/apache/james/mailetcontainer/impl/ProcessorImpl.java
 
b/server/mailet/mailetcontainer-impl/src/main/java/org/apache/james/mailetcontainer/impl/ProcessorImpl.java
index 86272c77b3..617f61d3fa 100644
--- 
a/server/mailet/mailetcontainer-impl/src/main/java/org/apache/james/mailetcontainer/impl/ProcessorImpl.java
+++ 
b/server/mailet/mailetcontainer-impl/src/main/java/org/apache/james/mailetcontainer/impl/ProcessorImpl.java
@@ -26,6 +26,8 @@ import 
org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor.MailetP
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
 import org.apache.james.util.MDCBuilder;
+import org.apache.mailet.Attribute;
+import org.apache.mailet.AttributeValue;
 import org.apache.mailet.Mail;
 import org.apache.mailet.Mailet;
 import org.apache.mailet.MailetConfig;
@@ -58,11 +60,17 @@ public class ProcessorImpl {
         long start = System.currentTimeMillis();
         TimeMetric timeMetric = 
metricFactory.timer(mailet.getClass().getSimpleName());
         Throwable ex = null;
+        String smtpSessionID = mail.getAttribute(Mail.SMTP_SESSION_ID)
+            .map(Attribute::getValue)
+            .map(AttributeValue::value)
+            .map(String.class::cast)
+            .orElse(null);
         try (Closeable closeable =
                  MDCBuilder.create()
                      .addToContext(MDCBuilder.PROTOCOL, "MAILET")
                      .addToContext(MDCBuilder.ACTION, "MAILET")
                      .addToContext(MDCBuilder.HOST, mail.getRemoteHost())
+                     .addToContext(MDCBuilder.SESSION_ID, smtpSessionID)
                      .addToContext("state", mail.getState())
                      .addToContext("mailet", mailet.getClass().getSimpleName())
                      .addToContext("mail", mail.getName())
diff --git 
a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AddDefaultAttributesMessageHook.java
 
b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AddDefaultAttributesMessageHook.java
index 16ec4bb492..5b31c518d2 100644
--- 
a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AddDefaultAttributesMessageHook.java
+++ 
b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AddDefaultAttributesMessageHook.java
@@ -43,6 +43,9 @@ public class AddDefaultAttributesMessageHook implements 
JamesMessageHook {
             final MailImpl mailImpl = (MailImpl) mail;
             mailImpl.setRemoteHost(session.getRemoteAddress().getHostName());
             
mailImpl.setRemoteAddr(session.getRemoteAddress().getAddress().getHostAddress());
+
+            mail.setAttribute(new Attribute(Mail.SMTP_SESSION_ID, 
AttributeValue.of(session.getSessionID())));
+
             session.getAttachment(SMTPSession.CURRENT_HELO_NAME, 
ProtocolSession.State.Connection)
                 .ifPresent(helo ->  mail.setAttribute(new 
Attribute(Mail.SMTP_HELO, AttributeValue.of(helo))));
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to