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

Arsnael 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 ad5725004c [FIX] Cross domain RRT was listing non existing addresses 
when cross domain
ad5725004c is described below

commit ad5725004c624556859f5f333f420b1631933c43
Author: Benoit TELLIER <[email protected]>
AuthorDate: Fri Jun 26 22:33:28 2026 +0200

    [FIX] Cross domain RRT was listing non existing addresses when cross domain
---
 .../apache/james/rrt/lib/AliasReverseResolverContract.java   | 12 ++++++++++--
 .../java/org/apache/james/rrt/lib/CanSendFromContract.java   | 12 ++++++++++--
 .../org/apache/james/rrt/lib/AliasReverseResolverImpl.java   |  2 +-
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git 
a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverContract.java
 
b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverContract.java
index 35042563b2..8bd9209e8e 100644
--- 
a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverContract.java
+++ 
b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/AliasReverseResolverContract.java
@@ -114,10 +114,18 @@ public interface AliasReverseResolverContract {
         redirectDomain(OTHER_DOMAIN).to(DOMAIN);
         redirectUser(userAliasOtherDomain).to(USER);
 
-        Username userAliasMainDomain = USER_ALIAS.withOtherDomain(DOMAIN);
         Username userOtherDomain = USER.withOtherDomain(OTHER_DOMAIN);
         
assertThat(Flux.from(aliasReverseResolver().listAddresses(USER)).toStream())
-            .containsExactlyInAnyOrder(USER.asMailAddress(), 
userAliasOtherDomain.asMailAddress(), userAliasMainDomain.asMailAddress(), 
userOtherDomain.asMailAddress());
+            .containsExactlyInAnyOrder(USER.asMailAddress(), 
userAliasOtherDomain.asMailAddress(), userOtherDomain.asMailAddress());
+    }
+
+    @Test
+    default void 
listAddressesShouldNotStampAliasLocalPartOntoUserDomainWhenNoDomainAlias() 
throws Exception {
+        Username userAliasOtherDomain = 
USER_ALIAS.withOtherDomain(OTHER_DOMAIN);
+        redirectUser(userAliasOtherDomain).to(USER);
+
+        
assertThat(Flux.from(aliasReverseResolver().listAddresses(USER)).toStream())
+            .containsExactlyInAnyOrder(USER.asMailAddress(), 
userAliasOtherDomain.asMailAddress());
     }
 
     @Test
diff --git 
a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
 
b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
index 1127efd7d8..c37d5bcf30 100644
--- 
a/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
+++ 
b/server/data/data-api/src/test/java/org/apache/james/rrt/lib/CanSendFromContract.java
@@ -221,10 +221,18 @@ public interface CanSendFromContract {
         redirectDomain(OTHER_DOMAIN).to(DOMAIN).asAlias();
         redirectUser(userAliasOtherDomain).to(USER);
 
-        Username userAliasMainDomain = USER_ALIAS.withOtherDomain(DOMAIN);
         Username userOtherDomain = USER.withOtherDomain(OTHER_DOMAIN);
         
assertThat(Flux.from(canSendFrom().allValidFromAddressesForUser(USER)).toStream())
-            .containsExactlyInAnyOrder(USER.asMailAddress(), 
userAliasOtherDomain.asMailAddress(), userAliasMainDomain.asMailAddress(), 
userOtherDomain.asMailAddress());
+            .containsExactlyInAnyOrder(USER.asMailAddress(), 
userAliasOtherDomain.asMailAddress(), userOtherDomain.asMailAddress());
+    }
+
+    @Test
+    default void 
allValidFromAddressesShouldNotStampAliasLocalPartOntoUserDomainWhenNoDomainAlias()
 throws Exception {
+        Username userAliasOtherDomain = 
USER_ALIAS.withOtherDomain(OTHER_DOMAIN);
+        redirectUser(userAliasOtherDomain).to(USER);
+
+        
assertThat(Flux.from(canSendFrom().allValidFromAddressesForUser(USER)).toStream())
+            .containsExactlyInAnyOrder(USER.asMailAddress(), 
userAliasOtherDomain.asMailAddress());
     }
 
     @Test
diff --git 
a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java
 
b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java
index 6829097b7c..d9990f82af 100644
--- 
a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java
+++ 
b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AliasReverseResolverImpl.java
@@ -52,7 +52,7 @@ public class AliasReverseResolverImpl implements 
AliasReverseResolver {
         CanSendFromImpl.DomainFetcher domains = domainFetcher();
 
         return relatedAliases(user)
-            .flatMap(allowedUser -> user.getDomainPart()
+            .flatMap(allowedUser -> allowedUser.getDomainPart()
                 .map(domain -> Flux.concat(
                     Flux.just(allowedUser),
                     domains.fetch(domain).map(allowedUser::withOtherDomain)))


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

Reply via email to