【发布时间】:2010-11-30 21:10:45
【问题描述】:
为了实现它,我可能对邮件传输的工作原理有一点了解。
我想实现一个 SMTP 服务器,它接收来自客户端的电子邮件,然后查找域的收件人 MX 记录以便将其传递到那里。
我不完全明白接下来会发生什么,它是否通过 IP 连接到该域?去哪个港口?
我正在查看的示例是 Gmail,它的 MX 服务器是 gmail-smtp-in.l.google.com,我的程序是否需要在哪个端口上连接到该域?
谢谢
【问题讨论】:
为了实现它,我可能对邮件传输的工作原理有一点了解。
我想实现一个 SMTP 服务器,它接收来自客户端的电子邮件,然后查找域的收件人 MX 记录以便将其传递到那里。
我不完全明白接下来会发生什么,它是否通过 IP 连接到该域?去哪个港口?
我正在查看的示例是 Gmail,它的 MX 服务器是 gmail-smtp-in.l.google.com,我的程序是否需要在哪个端口上连接到该域?
谢谢
【问题讨论】:
阅读:http://www.ietf.org/rfc/rfc5321.txt
简答:
发送电子邮件时。查找相关域名的 mx 记录。
如果域存在 MX,请尝试通过端口 25 连接到它们,并按照上述 RFC 向您发送邮件。您按照列出的优先顺序连接到它们。较低的数字具有较高的偏好。如果存在等价 MX,您可以随意选择一个。如果那个人没有回答,请在链中更高之前尝试相同的 Weight MX。如果没有 mxs 应答,则排队邮件并重试..
如果不存在 MX,请尝试在众所周知的 25 端口 (SMTP) 上传递到“A”记录。
但实际上,阅读 RFC 并熟悉它们,会有很大帮助。
而且有点相关。如果您正在实施用于 Internet 的 SMTP 服务器,请确保您能够在提交端口 (587) 以及标准端口 25 上接受经过 SMTP 身份验证的电子邮件。由于许多网络在端口上有出站块25 用于减少垃圾邮件的目的..
【讨论】:
SMTP 在端口 25 上运行。CodeProject article 显示了一个使用 C# 发送/接收邮件的简单本地示例。
【讨论】: