diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php index 1b396686740bc026b11204d09697debff3cd1a45..629da2fb0e21ad9ecc9dc92f99e29f1665d908c7 100644 --- a/interface/lib/classes/functions.inc.php +++ b/interface/lib/classes/functions.inc.php @@ -334,6 +334,14 @@ class functions { $domain = substr($domain, strrpos($domain, '@') + 1); } + // idn_to_* chokes on leading dots, but we need them for amavis, so remove it for later + if(substr($domain, 0, 1) === '.') { + $leading_dot = true; + $domain = substr($domain, 1); + } else { + $leading_dot = false; + } + if($encode == true) { if(function_exists('idn_to_ascii')) { if(defined('IDNA_NONTRANSITIONAL_TO_ASCII') && defined('INTL_IDNA_VARIANT_UTS46') && constant('IDNA_NONTRANSITIONAL_TO_ASCII')) { @@ -378,6 +386,10 @@ class functions { } } + if($leading_dot == true) { + $domain = '.' . $domain; + } + if($user_part !== false) return $user_part . '@' . $domain; else return $domain; }