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]