public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Commit
Fix #2752: Domain recipient for address rewrite
(cherry picked from commit 40f6d691d8774d6f813153974f8fe462a8db9ab3)
f15ee39b
data/web/inc/functions.address_rewriting.inc.php | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
Diff
diff --git a/data/web/inc/functions.address_rewriting.inc.php b/data/web/inc/functions.address_rewriting.inc.php
index 140ae476..87b88278 100644
--- a/data/web/inc/functions.address_rewriting.inc.php
+++ b/data/web/inc/functions.address_rewriting.inc.php
@@ -285,7 +285,13 @@ function recipient_map($_action, $_data = null, $attr = null) {
);
return false;
}
- if (!filter_var($new_dest, FILTER_VALIDATE_EMAIL)) {
+ if (is_valid_domain_name($new_dest)) {
+ $new_dest_sane = '@' . idn_to_ascii($new_dest, 0, INTL_IDNA_VARIANT_UTS46);
+ }
+ elseif (filter_var($new_dest, FILTER_VALIDATE_EMAIL)) {
+ $new_dest_sane = $new_dest;
+ }
+ else {
$_SESSION['return'][] = array(
'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_data, $_attr),
@@ -308,7 +314,7 @@ function recipient_map($_action, $_data = null, $attr = null) {
(:old_dest, :new_dest, :active)");
$stmt->execute(array(
':old_dest' => $old_dest_sane,
- ':new_dest' => $new_dest,
+ ':new_dest' => $new_dest_sane,
':active' => $active
));
$_SESSION['return'][] = array(
@@ -351,7 +357,13 @@ function recipient_map($_action, $_data = null, $attr = null) {
);
continue;
}
- if (!filter_var($new_dest, FILTER_VALIDATE_EMAIL)) {
+ if (is_valid_domain_name($new_dest)) {
+ $new_dest_sane = '@' . idn_to_ascii($new_dest, 0, INTL_IDNA_VARIANT_UTS46);
+ }
+ elseif (filter_var($new_dest, FILTER_VALIDATE_EMAIL)) {
+ $new_dest_sane = $new_dest;
+ }
+ else {
$_SESSION['return'][] = array(
'type' => 'danger',
'log' => array(__FUNCTION__, $_action, $_data, $_attr),
@@ -378,7 +390,7 @@ function recipient_map($_action, $_data = null, $attr = null) {
WHERE `id`= :id");
$stmt->execute(array(
':old_dest' => $old_dest_sane,
- ':new_dest' => $new_dest,
+ ':new_dest' => $new_dest_sane,
':active' => $active,
':id' => $id
));