Настройка SMTP под IIS 7 на Windows Server 2008 - PullRequest
16 голосов
/ 22 октября 2008

Сайт начал свою жизнь изначально под IIS 6, и сайт прекрасно работал там. Теперь после перемещения на новый сервер под управлением W2K8S все, кроме доставки почты с веб-сайта, теперь отлично работает под IIS 7.

Проведены краткие исследования в Интернете, чтобы выяснить, есть ли у кого-нибудь хорошее разрешение, но безрезультатно ... Даже проблеск надежды на собственном сайте поддержки Microsoft.

Вот шаги, предпринятые до сих пор на новой коробке W2K8S:

  • Добавлена ​​функция для SMTP в диспетчере сервера
  • Включение электронной почты SMTP для самого сайта в диспетчере IIS 7 для доставки электронной почты на локальный узел SMTP-сервера, безуспешно
  • Включение электронной почты SMTP для корневого сайта в диспетчере IIS 7 (не уверен, нужно ли это включать для включения сайтов) для доставки электронной почты на локальный узел SMTP-сервера, безуспешно

После сбоя этих базовых настроек я хотел быть уверенным, что действительно могу разговаривать с / на сервер на порту 25. И я могу успешно телнетить с / на рассматриваемый сервер, чтобы тестовая электронная почта на порту 25 получила HELO и т. д. Поэтому я не верю, что это проблема конфигурации брандмауэра.

Тест установки IIS 7 был выполнен как с анонимной аутентификацией, так и с аутентификацией Windows - в любом случае, не повезло.

Проверенный вручную файл Web Config, и он отражает правильную запись для сервера, чтобы использовать localhost.

Прочтите руководство и там тоже не повезло ...: - /

Ответы [ 8 ]

2 голосов
/ 13 января 2009

Я столкнулся с той же проблемой.

наткнулся на эту ссылку http://www.frontpagewebmaster.com/m-215289/tm.htm

и я смог решить проблему. К последнему сообщению этой ссылки.

В моем случае я решаю проблему, предоставляя права пользователю «NETWORK SERVICE» на папку «Pickup».

Надеюсь, это поможет ...

1 голос
/ 16 января 2013

Я заметил, что событие с кодом 4006 ссылается на ip контроллера домена вместо ip почтового сервера. Я использовал инструмент администрирования iis 6 для настройки smarthost, указывающего на почтовый сервер и вуаля! проблема была решена.

1 голос
/ 04 января 2013

У меня была точно такая же проблема, как описано в этом старом вопросе. Наконец я нашел решение для этого. В моем случае операционная система W2008 R2 с IIS 7.5, но я думаю, что это не имеет значения.

Основная проблема заключается в том, что служба SMTP в W2008 R2 представляется устаревшей частью IIS. Он устанавливается вместе со средствами администрирования IIS 6.0 рядом с сервером IIS 7.X. Это вызывает две производные проблемы:

IIS 7.X ничего не знает о службе SMTP. Если вы настроите SMTP в ASP.NET для использования PickupDirectoryFromIis, это приведет к исключению. Поэтому вы не можете использовать эту конфигурацию SMTP :

<smtp deliveryMethod="PickupDirectoryFromIis" />

Но можно настроить SMTP с помощью SpecifiedPickupDirectory, Вы можете использовать эту конфигурацию :

<smtp deliveryMethod="SpecifiedPickupDirectory">
    <specifiedPickupDirectory pickupDirectoryLocation="C:\inetpub\mailroot\Pickup"  />
</smtp>

Если вы настроите каталог раскладки таким образом, вы можете столкнуться со вторым типом проблемы: IIS6 и IIS7.X имеют разные системы безопасности. IIS 7.X представляет интегрированную защиту с идентификаторами пула приложений. IIS 6.0 и его служба SMTP не знают об этом. Поэтому вы должны предоставить разрешения на запись для IIS_IUSRS в папку раскладки. В моей конфигурации папка раскладки - C: \ inetpub \ mailroot \ pickup.

1 голос
/ 24 марта 2011

ОК, к сообщению, в котором говорилось "дать NETWORK USER права на запись в папку раскладки" наконец-то работает. То, что я сделал, было:

  1. Вам необходимо использовать «умный хост» , если вы не используете сервер обмена. Я использую учетную запись Gmail, Gmail позволяет пересылку SMTP.

  2. Вы можете использовать проверку подлинности Windows для обеспечения безопасности на SMTP-сервере и настройки конфигурации IIS7.

  3. Первый шаг, установите метод доставки = "сеть" на своей веб-странице и настройте интеллектуальный хост независимо от SMTP-сервера.

    SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false; // use your smart host login client.Credentials = new NetworkCredential("xxxxx@gmail.com", "password");
    client.EnableSsl = true;
    

    Это отправит электронное письмо напрямую и обойдёт ваш SMTP-сервер.

  4. Второй шаг, когда у вас все получится, напишите пример приложения для Windows, чтобы использовать ваш SMTP-сервер независимо от вашей веб-страницы, и сделайте так, чтобы он работал.

    SmtpClient client = new SmtpClient("your server ip", 25);
    client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
    client.EnableSsl = false; // you can't use ssl with a pickup folder
    client.UseDefaultCredentials = true; // use windows credentials
    

    Это позволит обойти вашу веб-страницу и убедиться, что ваш SMTP-сервер настроен правильно.

  5. Наконец, приведите свою веб-страницу в рабочее состояние, настроив общий доступ к папке раскладки, чтобы разрешить запись в NETWORK_SERVICE. Перенесите информацию для входа из шага 3 в настройки SMTP, установите для аутентификации встроенную защиту и используйте код шага 4 для своей веб-страницы.

0 голосов
/ 13 августа 2009

Я сталкивался с этим постом при исследовании запуска SMTP в моем приложении ASP.Net, которое мы переносим с IIS6 на IIS7. Я обнаружил, что нам вообще не нужно было настраивать SMTP-СЕРВЕР - достаточно было просто настроить SMTP-электронную почту - с дополнительным преимуществом отсутствия проблем с безопасностью SMTP-ретрансляции через веб-сервер!

так что если вам не нужен ваш веб-сервер для фактической маршрутизации SMTP, вам вообще не нужно настраивать сервер в IIS7.

0 голосов
/ 14 апреля 2009

Это, случайно, старое "классическое" приложение ASP, полагающееся на CDONTS при отправке почты?

Если так, возможно, будет полезна одна из этих ссылок ?

Отредактировано: я ответил до того, как заметил примечание к исходному сообщению. Игнорирование ...

0 голосов
/ 31 марта 2009

Вы проверили, принимает ли служба SMTP почту для ретрансляции с локального хоста? Для этого выполните telnet с рассматриваемой машины на локальный SMTP-сервер и используйте SMTP-команды для отправки тестового сообщения. Служба SMTP очень требовательна к форматированию команд, поэтому вам нужно быть осторожным при вводе команд (т. Е. Не использовать backspace для исправления опечаток).

0 голосов
/ 26 октября 2008

Я не уверен, что этот диагностический инструмент может дать больше информации,

http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1308

Этот инструмент для x86.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...