对SMTP/IIS和通过ASP发送的电子邮件的实际情况感到困惑

对SMTP/IIS和通过ASP发送的电子邮件的实际情况感到困惑,iis,asp-classic,smtp,gmail,Iis,Asp Classic,Smtp,Gmail,我有一台运行经典ASP站点的windows 2003/IIS 6.5计算机 网站本身发送电子邮件(“忘记密码”等),我也在机器上运行脚本发送电子邮件时事通讯 我在发送。。。但我对电子邮件的实际工作原理感到困惑 当我从我的网站发送邮件时,SMTP服务器(IIS)是否曾经与我的电子邮件提供商(gmail for business)通信(我不提供任何登录信息)?我的iissmtp服务器是否会突然发送电子邮件(可能会对目标进行MX查找?)?是DNS记录中的SPF记录允许这样做吗 我刚刚重建了我们的服务器

我有一台运行经典ASP站点的windows 2003/IIS 6.5计算机

网站本身发送电子邮件(“忘记密码”等),我也在机器上运行脚本发送电子邮件时事通讯

我在发送。。。但我对电子邮件的实际工作原理感到困惑

当我从我的网站发送邮件时,SMTP服务器(IIS)是否曾经与我的电子邮件提供商(gmail for business)通信(我不提供任何登录信息)?我的iissmtp服务器是否会突然发送电子邮件(可能会对目标进行MX查找?)?是DNS记录中的SPF记录允许这样做吗

我刚刚重建了我们的服务器(灾难发生后),并将我们的电子邮件移动到gmail。。。所以,我现在正在设置这一切。。。我可以阅读所有的“操作”文章,但除非我理解一些简单的概念,否则我不会真正知道我在做什么


谢谢

向某人发送邮件时,会涉及两个SMTP服务器

  • 您自己的SMTP服务器(发件人)
  • 收件人SMTP服务器(收件人)
基本上,当您从mailclient发送邮件时,mailclient会将邮件发送到您自己的SMTP服务器,然后SMTP服务器会将邮件发送到收件人SMTP服务器。之所以会出现这种情况(hop),是因为服务器可能会停机/变慢/etc,而您自己的服务器现在的责任是尝试在48小时内(通常)发送邮件

要了解收件人拥有的SMTP服务器,发件人SMTP将查找收件人域的MX记录:

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将根据优先级选择一个(有效的)。然后将邮件发送到该服务器

并且(如果不使用网络邮件),收件人mailclient可以使用例如POP3或IMAP协议下载该邮件

现在,当您从ASP.NET发送邮件时,发件人SMTP服务器通常是本地IIS SMTP服务,而不是您所在域的常用SMTP服务器(您自己用来发送邮件的服务器;在您的Gmail实例中)

SPF记录是添加到DNS的记录,用于指定允许哪些SMTP服务器从您的域发送邮件。通常,如果指定它们,则接收方SMTP服务器将强制发件人SMTP服务器列在发件人地址中域的SPF记录中。但是,如果您没有指定它们,邮件通常是允许的,其他垃圾邮件文件管理器也会介入


无论如何,希望这有助于澄清问题…

开箱即用,IIS 6将使用内置SMTP服务器发送,经典ASP通常默认使用拾取目录
x:\inetpub\mailroot\pickup\
。ASP在此处创建电子邮件文件,当SMTP服务检测到该文件时,将移动邮件进行处理。如果您停止“简单邮件传输协议”服务,您应该会看到文件在这里备份,再次启动它将使它们全部消失

SMTP虚拟服务器将出现在IIS管理中,从那里您可以将其设置为使用您的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文件夹中的“队列”和“死信”文件夹,即使唯一的操作是清除它们。

如果您发送测试电子邮件,它说它来自哪里?收到:来自ebsq01(I.redact.the.Name.[71.and.the.IP])通过mx.google.com,ESMTP id为hi7si3164292qab.71.2011.10.08.17.55.28;Sat,2011年10月8日17:55:29-0700(PDT)收到SPF:neutral(google.com:71.And.The.IP)的域名既不允许也不拒绝bill@ebsqart.com)客户端ip=71.0和.The.ip;认证结果:mx.google.com;spf=neutral(google.com:71.And.The.IP)的域既不允许也不拒绝bill@ebsqart.com)smtp.mail=bill@ebsqart.com接收:由ebsq01和Microsoft SMTPSVC(6.0.3790.3959)从ebsq01([127.0.0.1])接收;检查……是个好主意。。。我修改了我的ip地址(我想!)。我看到谷歌采取了中立的态度?我已经向comcast地址发送了两个类似的测试。。。它们保留在SMTP的队列文件夹中。当我发送到一个gmail地址(我的域名或者仅仅是gmail)时,信息会快速传递。我将研究队列文件夹的含义。非常有用。我担心的一部分是gmail的商业限制发送到2k或4k收件人(每个帐户)。知道当我从我的服务器发送邮件时(基本上绕过gmail),它会尝试直接发送到目标。(因此,我的收件人限制可能不适用)。谢谢我喜欢通过gmail发送邮件的想法,因为它最有可能联系到收件人——我使用gmail发送邮件的问题是,他们限制了你每天可以发送的邮件量(2000/天)。我每天给8000名订阅者发送一封电子邮件(“当日艺术”)。。。就目前情况而言,除了需要为我的smtp服务器设置反向DNS条目(许多域拒绝邮件,除非我找到这样的记录),我的工作正常。但是-反应很有用-谢谢@BillGillingham您几乎可以肯定最好使用web服务器发送这些电子邮件。这是标准做法,只要设置好RDN和SPF,您就可以离开了。我也可以推荐hMail,如果你想稍微高于内置的SMTP内容,但库存的适合你的卷。