none
Exchange Server 2013 как SMTP сервер с аутентификацией RRS feed

  • Вопрос

  • Всем привет.

    Задача такая.

    Есть Exchange Server 2013 + Edge + TMG, все работает отлично. Появилась задача открыть эксч наружу в качестве SMTP сервера для использования его как сервера отправки почты из стороннего программного обеспечения, находящегося вне компании с авторизацией.

    Было уже испробовано множество описанных способов типа: 

    http://geekswithblogs.net/ksellenrode/archive/2014/05/03/156170.aspx

    https://social.technet.microsoft.com/Forums/lync/en-US/1c721f0d-25f1-4228-a363-3f524830f380/how-to-open-smtp-for-authenticated-relay?forum=exchangesvrsecuremessaging

    https://social.technet.microsoft.com/Forums/lync/en-US/2562856a-7a22-4c86-b6de-837d4e071ceb/exchange-2013-create-an-smtp-relay-to-allow-sending-emails-to-other-domains-from-web-application?forum=exchangesvrclients

    Ни по одному из способов не вышло сделать отправку писем с аутентификацией, если анонимное подключение, то все работает, но так не годится понятное дело.

    Что было сделано: Создан ReceiveConnector на порт 587 с параметрами:

    Transport Layer Security (TLS)

    Basic authentication

    Offer basic authentication only after starting TLS

    Integrated Windows authentication

    Exchange users

    на TMG проброшен порт 587 на сервер эксча (не эджа)

    При попытке отправить письмо с аутентификацией получаем ошибку:

    Send-MailMessage -SmtpServer mail.domain.ru -Credential $credential -From 'info@domain.ru' -To 'xxx@mail.ru' -Subject 'Test email' -Port 587 -UseSsl


    Удаленный сертификат недействителен согласно результатам проверки подлинности.

    Если без -UseSsl, то:

    Серверу SMTP требовалось защищенное соединение, или подлинность клиента не была установлена. Отклик сервера: 5.7.1 Client was not authenticated

    И так при любых манипуляциях из вышеуказанных постов.

    Есть мысли на этот счет?



    13 июля 2018 г. 21:27

Ответы

  • При попытке отправить письмо с аутентификацией получаем ошибку:

    Send-MailMessage -SmtpServer mail.domain.ru -Credential $credential -From 'info@domain.ru' -To 'xxx@mail.ru' -Subject 'Test email' -Port 587 -UseSsl


    Удаленный сертификат недействителен согласно результатам проверки подлинности.


    Здесь возможны 2 варианта решения

    1. Посмотрите (например, пользуясь Get-ExchangeCertificate и, затем, оснасткой Сертификаты в mmc, нацеленной на хранилище компьютера сервера Exchange), какой сертификат используется и кем он выдан, и добавьте корневой сертификат цепочки ЦС (или, если сертификат самоподписанный - сам сертификат, без ключа)  в список корневых сертифкатов, которым доверяет посылающая программа; или

    2. Отключите проверку подлинности сертификата

    Как делается то или другое - зависит от посылающей программы. Для Send-MailMessage (как и для любой программы, использующей Windows CryptoAPI) вариант 1 делается добавлением сертификата в харнилище доверенных корневых центров сертификации компьютера или пользователя, под которым работает программа. Вариант 2 для Send-MailMessage не предусмотрен, но в вашей программе он может быть (и даже - может быть единственно возможным :-) )


    Слава России!

    14 июля 2018 г. 6:59
  • Применяется тот соединитель, к которому происходит обращение. Выбор порта 587 на MBX как места назначения при отправке вполне разумен - именно на этом порту работает стандартный соединитель для клиентских подключений, создаваемый при установке по умолчанию.

    Но ничто не мешает создать другой соединитель - на нужном порту и с нужными настройками безопасности. Только надо иметь в виду, что передавать пароль открытым текстом (базовая проверка подлинности без использования SSL или команды STARTTLS в сессии SMTP) - весьма небезопасно.


    Слава России!


    14 июля 2018 г. 7:26

Все ответы

  • Уверены, что на 587 именно новый коннектор почту принимает? Попробуйте другой порт использовать, а не стандартный 587. Ограничьте список отправителей на коннекторе. Попробуйте также через telnet отправить письмо. 
    14 июля 2018 г. 6:40
  • При попытке отправить письмо с аутентификацией получаем ошибку:

    Send-MailMessage -SmtpServer mail.domain.ru -Credential $credential -From 'info@domain.ru' -To 'xxx@mail.ru' -Subject 'Test email' -Port 587 -UseSsl


    Удаленный сертификат недействителен согласно результатам проверки подлинности.


    Здесь возможны 2 варианта решения

    1. Посмотрите (например, пользуясь Get-ExchangeCertificate и, затем, оснасткой Сертификаты в mmc, нацеленной на хранилище компьютера сервера Exchange), какой сертификат используется и кем он выдан, и добавьте корневой сертификат цепочки ЦС (или, если сертификат самоподписанный - сам сертификат, без ключа)  в список корневых сертифкатов, которым доверяет посылающая программа; или

    2. Отключите проверку подлинности сертификата

    Как делается то или другое - зависит от посылающей программы. Для Send-MailMessage (как и для любой программы, использующей Windows CryptoAPI) вариант 1 делается добавлением сертификата в харнилище доверенных корневых центров сертификации компьютера или пользователя, под которым работает программа. Вариант 2 для Send-MailMessage не предусмотрен, но в вашей программе он может быть (и даже - может быть единственно возможным :-) )


    Слава России!

    14 июля 2018 г. 6:59
  • Я бы отрыл логи и посмотрел полную smtp-сессию. Alexey Klimenko правильно заметил, что может применяться совсем другой соединитель.

    14 июля 2018 г. 7:06
  • Применяется тот соединитель, к которому происходит обращение. Выбор порта 587 на MBX как места назначения при отправке вполне разумен - именно на этом порту работает стандартный соединитель для клиентских подключений, создаваемый при установке по умолчанию.

    Но ничто не мешает создать другой соединитель - на нужном порту и с нужными настройками безопасности. Только надо иметь в виду, что передавать пароль открытым текстом (базовая проверка подлинности без использования SSL или команды STARTTLS в сессии SMTP) - весьма небезопасно.


    Слава России!


    14 июля 2018 г. 7:26