diff --git a/plugins/auto-domain-grab/index.php b/plugins/auto-domain-grab/index.php index b4bfc57631..a2174926d2 100644 --- a/plugins/auto-domain-grab/index.php +++ b/plugins/auto-domain-grab/index.php @@ -23,7 +23,7 @@ public function Init() } /** - * This function detects the IMAP Host, and if it is set to "auto", replaces it with the email domain. + * This function detects the IMAP Host, and if it is set to "auto", replaces it with the MX or email domain. * * @param \RainLoop\Model\Account $oAccount * @param array $aImapCredentials @@ -36,13 +36,21 @@ public function FilterImapCredentials($oAccount, &$aImapCredentials) if (!empty($aImapCredentials['Host']) && 'auto' === $aImapCredentials['Host']) { $domain = substr(strrchr($oAccount->Email(), "@"), 1); - $aImapCredentials['Host'] = $this->imap_prefix.$domain; + $mxhosts = array(); + if(getmxrr($domain, $mxhosts) && sizeof($mxhosts) > 0) + { + $aImapCredentials['Host'] = $mxhosts[0]; + } + else + { + $aImapCredentials['Host'] = $this->imap_prefix.$domain; + } } } } /** - * This function detects the SMTP Host, and if it is set to "auto", replaces it with the email domain. + * This function detects the SMTP Host, and if it is set to "auto", replaces it with the MX or email domain. * * @param \RainLoop\Model\Account $oAccount * @param array $aSmtpCredentials @@ -55,7 +63,15 @@ public function FilterSmtpCredentials($oAccount, &$aSmtpCredentials) if (!empty($aSmtpCredentials['Host']) && 'auto' === $aSmtpCredentials['Host']) { $domain = substr(strrchr($oAccount->Email(), "@"), 1); - $aSmtpCredentials['Host'] = $this->smtp_prefix.$domain; + $mxhosts = array(); + if(getmxrr($domain, $mxhosts) && sizeof($mxhosts) > 0) + { + $aSmtpCredentials['Host'] = $mxhosts[0]; + } + else + { + $aSmtpCredentials['Host'] = $this->smtp_prefix.$domain; + } } } }