Merge pull request #3790 from modoboa/fix/alias-target-disallow-all-externals

Fixed wrong logic to cover disallow all external domains use case.
This commit is contained in:
Antoine Nguyen
2025-11-12 15:31:55 +01:00
committed by GitHub
3 changed files with 13 additions and 21 deletions
@@ -1,20 +0,0 @@
<template>
<v-form ref="vFormRef">
<v-switch
v-model="model.bypass_virus_checks"
:label="$gettext('Bypass virus checks')"
/>
</v-form>
</template>
<script setup>
import { ref } from 'vue'
const model = defineModel()
const vFormRef = ref()
defineExpose({
vFormRef,
})
</script>
+1 -1
View File
@@ -105,7 +105,7 @@ def is_alias_target_allowed(domain: str) -> bool:
return False
else:
allowed_domains = params.get("alias_target_allow_list")
if allowed_domains and domain not in convert_to_list(allowed_domains):
if not allowed_domains or domain not in convert_to_list(allowed_domains):
return False
return True
+12
View File
@@ -28,6 +28,18 @@ class AliasTargetSettingsTestCase(ModoAPITestCase):
self.assertEqual(resp.status_code, 400)
self.assertEqual(resp.json()["error"], "Target domain not allowed: bad.com")
def test_block_external_domains(self):
self.set_global_parameter("alias_can_target_any_domain", False, app="admin")
# Now try an external domain, should fail
values = {
"address": "list4@test.com",
"recipients": ["user@bad.com"],
"enabled": True,
}
resp = self.client.post(reverse("v2:alias-list"), values, format="json")
self.assertEqual(resp.status_code, 400)
self.assertEqual(resp.json()["error"], "Target domain not allowed: bad.com")
def test_allow_only_list_when_any_disallowed(self):
# alias_can_target_any_domain = False and allow list contains domain
self.set_global_parameter("alias_can_target_any_domain", False, app="admin")