Есть ли способ использовать функцию автообнаружения без Exchange?
Метод автообнаружения, используемый Exchange, выглядит великолепно. Однако у меня нет Exchange.
Похоже, что при настройке почтовой учетной записи устройство / почтовый клиент ищет файл autodiscover.xml.
Есть ли способ создать такой файл самостоятельно и обслуживать его на обычном сервере Linux, указывая на обычный почтовый сервер Linux?
5 ответов
Сначала вам нужно будет указать Outlook, куда идти. Используйте запись SRV в DNS, которая указывает на сервер, содержащий ваш файл Autodiscover.xml:
_autodiscover._tcp.mydomain.com. 3600 IN SRV 10 10 443 my-web-server.mydomain.com.
Используйте скрипт PHP здесь: http://virer.net/info/ol-autodiscover/index.html чтобы вернуть клиенту файл Autodiscover.xml. В него встроен PHP, поэтому вы можете возвращать разные значения в зависимости от адреса электронной почты, введенного в Outlook. (Полезно, если вы хотите использовать один файл автообнаружения, чтобы возвращать результаты для нескольких доменов / клиентов, используя один скрипт конфигурации).
После того, как этот скрипт окажется на вашем веб-сервере и заработает, убедитесь, что вы включили HTTPS с действительным сертификатом, чтобы Outlook не выдавал ошибок при попытке его загрузки.
Только что закончил настройку автообнаружения на моем сервере Linux. Теперь почта настраивается автоматически практически во всех возможных клиентах.
Вот простое решение для настройки автообнаружения с настройками POP3/IMAP;
DNS:
_autodiscover._tcp.yourdomain.com. 3600 IN SRV 10 10 443 mail.yourmx.com.
PHP (autodiscover.php):
<?php
preg_match("/\<EMailAddress\>(.*?)\<\/EMailAddress\>/", $data, $matches);
//set Content-Type
header("Content-Type: application/xml");
?>
<?php echo '<?xml version="1.0" encoding="utf-8" ?>'; ?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
<Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
<Account>
<AccountType>email</AccountType>
<Action>settings</Action>
<Protocol>
<Type>POP3</Type>
<Server>mail.yourmx.com</Server>
<Port>995</Port>
<LoginName><?php echo $matches[1]; ?></LoginName>
<DomainRequired>off</DomainRequired>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
<DomainRequired>off</DomainRequired>
</Protocol>
<Protocol>
<Type>IMAP</Type>
<Server>mail.yourmx.com</Server>
<Port>993</Port>
<DomainRequired>off</DomainRequired>
<LoginName><?php echo $matches[1]; ?></LoginName>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
</Protocol>
<Protocol>
<Type>SMTP</Type>
<Server>mail.yourmx.com</Server>
<Port>465</Port>
<DomainRequired>off</DomainRequired>
<LoginName><?php echo $matches[1]; ?></LoginName>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
<UsePOPAuth>on</UsePOPAuth>
<SMTPLast>off</SMTPLast>
</Protocol>
</Account>
</Response>
</Autodiscover>
.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ autodiscover.php [NC,L]
NB! Не забудьте получить подписанный сертификат SSL.
На самом деле, если ваши клиенты Outlook (я предполагаю, что, поскольку вы сказали, что они ищут autodiscover.xml), вы хотите использовать Guessmart для автоконфигурации, если вы используете POP/IMAP и SMTP. Guessmart - это, в основном, Outlook, использующий ваш адрес электронной почты и пароль, чтобы пробовать разные имена хостов, используя общие порты POP/IMAP/SMTP, пока не найдет тот, в который сможет успешно войти. Это тот же пользовательский интерфейс в Outlook, что и Autodiscover, но предназначенный для серверов, отличных от Exchange.
Вы можете проверить все это в Outlook, щелкнув правой кнопкой мыши на значке уведомлений в трее Outlook и выбрав "Проверить автоконфигурацию электронной почты". Снимите флажок Автообнаружение и протестируйте Guessmart, чтобы увидеть, как работает Outlook.
Я обновил решение Frode Saetre для работы на моем сервере.
DNS: (без изменений)
_autodiscover._tcp.yourdomain.com. 3600 IN SRV 10 10 443 mail.yourmx.com.
PHP (autodiscover.php): (обновлено)
<?php
$postData = file_get_contents('php://input'); //Autodiscover requests are HTTP posts with XML content
$xml = simplexml_load_string($postData);
$user = $xml->Request->EMailAddress; //copy the email address from the request into a variable
//set Content-Type
header("Content-Type: application/xml");
?>
<?php echo '<?xml version="1.0" encoding="utf-8" ?>'; ?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
<Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
<Account>
<AccountType>email</AccountType>
<Action>settings</Action>
<Protocol>
<Type>POP3</Type>
<Server>mail.yourmx.com</Server>
<Port>995</Port>
<LoginName><?php echo $user; ?></LoginName>
<DomainRequired>off</DomainRequired>
<SPA>off</SPA>
<SSL>on</SSL>
<AuthRequired>on</AuthRequired>
<DomainRequired>on</DomainRequired>
</Protocol>
<Protocol>
<Type>IMAP</Type>
<Server>mail.yourmx.com</Server>
<Port>993</Port>
<DomainRequired>on</DomainRequired>
<LoginName><?php echo $user; ?></LoginName>
<SPA>off</SPA>
<SSL>on</SSL>
<Encryption>Auto</Encryption>
<AuthRequired>on</AuthRequired>
</Protocol>
<Protocol>
<Type>SMTP</Type>
<Server>mail.yourmx.com</Server>
<Port>587</Port>
<DomainRequired>on</DomainRequired>
<LoginName><?php echo $user; ?></LoginName>
<SPA>off</SPA>
<Encryption>Auto</Encryption> <!-- if your server requires encrypotion other than SSL -->
<AuthRequired>on</AuthRequired>
<UsePOPAuth>on</UsePOPAuth>
<SMTPLast>off</SMTPLast>
</Protocol>
</Account>
</Response>
</Autodiscover>
.htaccess (без изменений)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ autodiscover.php [NC,L]
Нет, автообнаружение является специфическим для Exchange, вы не сможете работать вне этой среды.
Это не просто файл.xml, в нем есть много вещей, когда дело доходит до автообнаружения.
Чтобы дать вам краткий обзор, прочитайте эту статью, и вы получите лучшее представление об этом.