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 2c5c9b771d JAMES-3775 Pass SSL information to RspamD scanner mailet
2c5c9b771d is described below

commit 2c5c9b771dc0f477f6178be787197df221edbedb
Author: Benoit TELLIER <[email protected]>
AuthorDate: Tue Feb 13 10:51:58 2024 +0100

    JAMES-3775 Pass SSL information to RspamD scanner mailet
---
 mailet/api/src/main/java/org/apache/mailet/Mail.java         |  2 ++
 .../james/smtpserver/AddDefaultAttributesMessageHook.java    |  5 +++++
 .../org/apache/james/rspamd/client/RspamdHttpClient.java     | 12 ++++++++++++
 3 files changed, 19 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 2b1ce09472..93527b8110 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,8 @@ 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 SSL_PROTOCOL = 
AttributeName.of("org.apache.james.ssl.protocol");
+    AttributeName SSL_CIPHER = AttributeName.of("org.apache.james.ssl.cipher");
     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/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 5b31c518d2..760aea4cdc 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
@@ -49,6 +49,11 @@ public class AddDefaultAttributesMessageHook implements 
JamesMessageHook {
             session.getAttachment(SMTPSession.CURRENT_HELO_NAME, 
ProtocolSession.State.Connection)
                 .ifPresent(helo ->  mail.setAttribute(new 
Attribute(Mail.SMTP_HELO, AttributeValue.of(helo))));
 
+            session.getSSLSession().ifPresent(sslSession -> {
+                mail.setAttribute(new Attribute(Mail.SSL_PROTOCOL, 
AttributeValue.of(sslSession.getProtocol())));
+                mail.setAttribute(new Attribute(Mail.SSL_CIPHER, 
AttributeValue.of(sslSession.getCipherSuite())));
+            });
+
             if (session.getUsername() != null) {
                 mail.setAttribute(new Attribute(Mail.SMTP_AUTH_USER, 
AttributeValue.of(session.getUsername().asString())));
             }
diff --git 
a/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java
 
b/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java
index 5a256e9e68..1b78aa8225 100644
--- 
a/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java
+++ 
b/third-party/rspamd/src/main/java/org/apache/james/rspamd/client/RspamdHttpClient.java
@@ -184,6 +184,18 @@ public class RspamdHttpClient {
             .filter(String.class::isInstance)
             .map(String.class::cast)
             .ifPresent(user -> headers.add("User", user));
+
+        // SSL details
+        mail.getAttribute(Mail.SSL_PROTOCOL)
+            .map(attr -> attr.getValue().value())
+            .filter(String.class::isInstance)
+            .map(String.class::cast)
+            .ifPresent(tlsVersion -> headers.add("TLS-Version", tlsVersion));
+        mail.getAttribute(Mail.SSL_CIPHER)
+            .map(attr -> attr.getValue().value())
+            .filter(String.class::isInstance)
+            .map(String.class::cast)
+            .ifPresent(cipher -> headers.add("TLS-Cipher", cipher));
     }
 
     private HttpClient buildReactorNettyHttpClient(RspamdClientConfiguration 
configuration) {


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

Reply via email to