Запутался в SMTP / IIS и в том, что на самом деле происходит с электронными письмами, отправленными через ASP - PullRequest
0 голосов
/ 09 октября 2011

У меня машина с Windows 2003 / IIS 6.5, на которой работает классический сайт ASP.

Сам сайт отправляет электронные письма («забыл пароль» и т. Д.), И я также запускаю на компьютере сценарии для отправки электронных бюллетеней.

У меня нет особых проблем с отправкой ... но я не совсем понимаю, как на самом деле работает электронная почта.

Общается ли когда-нибудь SMTP-сервер (IIS) с моим поставщиком электронной почты (gmail)?для бизнеса) когда я отправляю с моего сайта (я не предоставляю никакой информации для входа)?Мой SMTP-сервер IIS просто рассылает электронные письма (возможно, выполняет поиск MX для цели?)?Это позволяет запись SPF в записях DNS?

Я просто перестроил наш сервер (после аварии) и переместил нашу электронную почту в gmail ... так что я сейчас все это настраиваю ... ЯЯ могу прочитать все статьи с инструкциями, но если я не пойму несколько простых понятий, я не пойму, что я делаю.

Спасибо!

Ответы [ 2 ]

1 голос
/ 09 октября 2011

При отправке почты кому-то задействованы два SMTP-сервера.

  • Ваш собственный SMTP-сервер (отправитель)
  • SMTP-сервер получателя (получатель)

Обычно, когда вы отправляете почту от своего почтового клиента, ваш почтовый клиент отправляет почту на ваш собственный SMTP-сервер, который затем отправляет почту на SMTP-сервер получателей.Причина этого (прыжок) в том, что серверы могут быть неработающими / медленными / и т. Д., И теперь ответственность вашего собственного сервера состоит в том, чтобы попытаться доставить почту (обычно) в течение 48 часов.

Чтобы выяснить, какой SMTP-сервер имеется у получателя, SMTP-записи ищутся SMTP-отправителем для домена получателя:

C:\> nslookup -type=mx hotmail.com
Server:  dns.server.com
Address:  183.255.245.11

Non-authoritative answer:
hotmail.com     MX preference = 5, mail exchanger = mx1.hotmail.com
hotmail.com     MX preference = 5, mail exchanger = mx2.hotmail.com
hotmail.com     MX preference = 5, mail exchanger = mx3.hotmail.com
hotmail.com     MX preference = 5, mail exchanger = mx4.hotmail.com

Как видите, несколько SMTPсерверы могут быть указаны для домена (для избыточности), а SMTP-отправитель выберет один на основе приоритета (тот, который работает).Почта затем отправляется на этот сервер.

И (если не используется веб-почта) почтовый клиент-получатель может загрузить эту почту, используя, например, протоколы POP3 или IMAP.

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

SPF-записи - это записи, добавленные в ваш DNS, чтобы указать, каким SMTP-серверам разрешено отправлять почту с вашего домена.Обычно, если вы укажете их, SMTP-серверы получателя заставляют SMTP-сервер отправителя указываться в записи SPF для домена в адресе отправителя.Однако, если вы не укажете их, в любом случае, почта обычно разрешается, и другие SPAM-файлеры включаются.

В любом случае, надеюсь, это поможет прояснить ситуацию ...

0 голосов
/ 10 октября 2011

Из коробки IIS 6 отправляет с использованием встроенного SMTP-сервера, классический ASP обычно по умолчанию использует каталог раскладки x:\inetpub\mailroot\pickup\. ASP создает файл электронной почты здесь, и когда служба SMTP обнаруживает его, почта перемещается для обработки. Если вы остановите службу «Простой протокол пересылки почты», вы должны увидеть, что здесь происходит резервное копирование файлов, при повторном запуске все они исчезнут.

Виртуальный сервер SMTP появится в IIS Management, и оттуда вы можете настроить его на использование своей учетной записи Google в качестве сервера пересылки, или, что еще лучше, вы должны настроить почтовую функцию, чтобы использовать SMTP для Google вместо локальной. Предполагая, что вы используете CDOSYS, используйте следующий код, чтобы указать почтовый сервер и данные для входа:

Dim ObjSendMail
Set ObjSendMail = CreateObject("CDO.Message") 

'This section provides the configuration information for the remote SMTP server.

ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'Send the message using the network (SMTP over the network).
ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="mail.yoursite.com"
ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False 'Use SSL for the connection (True or False)
ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

' If your server requires outgoing authentication uncomment the lines bleow and use a valid email address and password.
'ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'basic (clear-text) authentication
'ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") ="somemail@yourserver.com"
'ObjSendMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") ="yourpassword"

ObjSendMail.Configuration.Fields.Update

'End remote SMTP server configuration section==

ObjSendMail.To = "someone@someone.net"
ObjSendMail.Subject = "this is the subject"
ObjSendMail.From = "someone@someone.net"

' we are sending a text email.. simply switch the comments around to send an html email instead
'ObjSendMail.HTMLBody = "this is the body"
ObjSendMail.TextBody = "this is the body"

ObjSendMail.Send

Set ObjSendMail = Nothing 

Источник

Вам следует время от времени отслеживать папку mailroot для папок 'queue' и 'badmail', даже если единственным действием является их очистка.

...