Я хочу перенести веб-приложение с Windows Server 2003 на Windows Server 2008 R2. Все работает нормально, кроме отправки писем из приложения.
Если я настраиваю приложение для использования smtp-сервера на «localhost», оно работает, но при изменении его на «настоящее» имя хоста (например, mail.example.org) почта не отправляется. В сообщении об ошибке говорится, что удаленному серверу требуется безопасное соединение или проверка подлинности smtp. Но поскольку он работает при использовании "localhost" вместо имени хоста, я сомневаюсь, что это проблема.
Также вряд ли проблема с почтовым сервером, с другим тоже пробовал.
Мне кажется, что брандмауэр блокирует исходящее соединение с почтовым сервером. Я попытался открыть порт 25, но все равно не вышло. Может, я просто ошибся.
Обновить: Чтобы прояснить мою настройку:
Видимо я немного сбился с пути. Похоже, он работает при подключении к локальному почтовому серверу с именем хоста «localhost» или «mail.somedomain.com» (в то время как somedomain.com настроен на моем почтовом сервере). Но при использовании имени хоста внешнего почтового сервера («mail.externaldomain.com») кажется, что он пытается снова подключиться к локальному серверу, хотя этот домен не настроен на почтовом сервере. Спасибо Эвану Андерсону за совет по использованию telnet - почему я сам об этом не подумал? ... :-)
Обратите внимание, что веб-сайт www.externaldomain.com размещен на моем сервере, но записи DNS обслуживаются другим хостинг-провайдером. "externaldomain.com" - единственная запись, которая указывает на мой сервер, все остальные записи (MX, поддомены) указывают на другой сервер.
Итак, я думаю, что вопрос теперь в том, как мне подключить мой сервер к внешнему почтовому серверу. Нужно ли мне настраивать это на моем почтовом сервере или это сервер Windows?
Если бы это был брандмауэр, вы бы не получали сообщение об ошибке. Делается попытка подключения, просто не удалась. Как был настроен старый сервер W2K3 для отправки электронной почты на почтовый сервер? Был ли сервер W2K3 в списке разрешенных для ретрансляции на почтовом сервере? Если это так, вам также необходимо добавить сервер W2K8. Проверьте конфигурацию сервера W2K3 на предмет настроек аутентификации и т. Д. И установите соответствующие настройки на сервере W2K8.
Обнюхивайте трафик (с помощью Wireshark или Монитор сети Microsoft) и посмотрите, что происходит на самом деле. Вероятно, вы можете понять, выполняется ли TCP-соединение с почтовым сервером с помощью netstat -a -n 1 | find ":25"
запускается в окне на вашем сервере, пока вы пытаетесь отправить электронное письмо, но я бы пошел по маршруту сниффера и положил его в постель.
Вполне возможно, что SMTP-сервер делает нужна аутентификация. Вы должны запустить SMTP-транзакцию с TELNET «вручную», чтобы увидеть, что происходит. (Вы действительно должны знать, как делать SMTP транспорт через TELNET ...). Выполнение этого с вашего сервера даст дополнительное преимущество в виде доказательства того, что брандмауэр Windows также не блокирует попытки исходящего SMTP-соединения.
Посмотрите на трафик на проводе и докопайтесь до сути проблемы, а не выковыривая ее палкой.
Я наконец решил проблему ... Ни брандмауэр, ни IIS, ни почтовый сервер не вызвали ошибку. В DNS моих хостинг-провайдеров было несколько записей superfluos. Это привело к тому, что приложение пыталось подключиться к локальному почтовому серверу вместо удаленного. После удаления неправильных записей DNS все работало правильно.
Проблема заключалась в том, что записи DNS для моего домена поддерживались другим провайдером хостинга, но поскольку у моих провайдеров DNS также были записями для этого домена, они имели приоритет для моего веб-сервера.
Поэтому, если вы сталкиваетесь с подобными проблемами, всегда думайте о том, чтобы проверить связь с удаленным хостом, который, кажется, не работает. И не забудьте очистить кеш DNS серверов после исправления записей DNS (введите «ipconfig / flushdns» в командной строке).