This is an automated email from the ASF dual-hosted git repository.
quantranhong1999 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 575363b27f [FIX] SMTP: Accept MAC as HELO parameter
575363b27f is described below
commit 575363b27fff77d84ad57e3b4454dcb16d0b9d38
Author: Benoit TELLIER <[email protected]>
AuthorDate: Wed Sep 9 15:16:12 2026 +0200
[FIX] SMTP: Accept MAC as HELO parameter
---
.../james/protocols/smtp/core/esmtp/EhloCmdHandler.java | 11 +++++++----
.../james/protocols/smtp/core/esmtp/EhloCmdHandlerTest.java | 6 ++++++
2 files changed, 13 insertions(+), 4 deletions(-)
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 8dca4f313f..4ec0c48e3f 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
@@ -65,6 +65,7 @@ public class EhloCmdHandler extends
AbstractHookableCmdHandler<HeloHook> impleme
.or(CharMatcher.inRange('A', 'Z'))
.or(CharMatcher.inRange('0', '9'));
private static final CharMatcher LABEL_CHAR_MATCHER =
ALPHANUMERIC_MATCHER.or(CharMatcher.is('-'));
+ private static final CharMatcher OPAQUE_IDENTIFIER_MATCHER =
ALPHANUMERIC_MATCHER.or(CharMatcher.is(':'));
private static final Splitter LABEL_SPLITTER = Splitter.on('.');
private static final int MAX_HOSTNAME_LENGTH = 253;
private static final int MAX_LABEL_LENGTH = 63;
@@ -119,7 +120,7 @@ public class EhloCmdHandler extends
AbstractHookableCmdHandler<HeloHook> impleme
// We keep Guava as a fast path and fall back to our own RFC 5321
validator.
|| InternetDomainName.isValid(hostname)
|| emClientCompatibility(hostname)
- || isAlphanumeric(hostname)
+ || isOpaqueIdentifier(hostname)
|| isRfc5321Hostname(hostname);
}
@@ -144,9 +145,11 @@ public class EhloCmdHandler extends
AbstractHookableCmdHandler<HeloHook> impleme
return LABEL_CHAR_MATCHER.matchesAllOf(label);
}
- // CF JAMES-4046
https://issues.apache.org/jira/projects/JAMES/issues/JAMES-4066
- private boolean isAlphanumeric(String hostname) {
- return !hostname.isEmpty() &&
ALPHANUMERIC_MATCHER.matchesAllOf(hostname);
+ // Some clients uses hostname (CF JAMES-4066) or MAC address, neither of
which is a domain nor an
+ // address-literal.
+ private boolean isOpaqueIdentifier(String hostname) {
+ return ALPHANUMERIC_MATCHER.matchesAnyOf(hostname)
+ && OPAQUE_IDENTIFIER_MATCHER.matchesAllOf(hostname);
}
// CF JAMES-4040 IPv6v4-full https://datatracker.ietf.org/doc/html/rfc5321
diff --git
a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandlerTest.java
b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandlerTest.java
index 11752db707..8f58376044 100644
---
a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandlerTest.java
+++
b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandlerTest.java
@@ -42,6 +42,9 @@ class EhloCmdHandlerTest {
// Pure alphanumeric (single label, no dot)
"localhost",
"mailserver",
+ // Devices announcing themselves with their MAC address
+ "A2:9B:D4:8A:AA:47",
+ "a29bd48aaa47",
// IPv4
"192.168.1.1",
"10.0.0.1",
@@ -67,6 +70,9 @@ class EhloCmdHandlerTest {
// Invalid characters
"exam ple.com",
"example.com!",
+ // Separators only
+ ":",
+ ":::::",
})
void isValidShouldReject(String argument) {
assertThat(handler.isValid(argument)).isFalse();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]