【问题标题】:Understanding MX records with C#使用 C# 了解 MX 记录
【发布时间】:2010-11-30 21:10:45
【问题描述】:

为了实现它,我可能对邮件传输的工作原理有一点了解。

我想实现一个 SMTP 服务器,它接收来自客户端的电子邮件,然后查找域的收件人 MX 记录以便将其传递到那里。

我不完全明白接下来会发生什么,它是否通过 IP 连接到该域?去哪个港口?

我正在查看的示例是 Gmail,它的 MX 服务器是 gmail-smtp-in.l.google.com,我的程序是否需要在哪个端口上连接到该域?

谢谢

【问题讨论】:

    标签: c# smtp mx-record


    【解决方案1】:

    阅读: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 用于减少垃圾邮件的目的..

    【讨论】:

    • 好的。但是邮件服务器登录到 gmail 服务器传输消息和使用 gmail 作为其 smtp 服务器需要用 gmail 标识自己的用户之间有什么区别(当然以 gmail 为例)。
    • 区别在于MTA和MUA(邮件传输代理和邮件用户代理)。如果您是邮件服务器,那么您就是 MTA,因此您正在连接到他们的邮件交换器,您与 google 没有现有关系(IE 不是用户)您正在向他们发送电子邮件。如果您的所有客户都在通过 google 发送电子邮件,则您不使用 MX,而是使用 SMTP 中继用户(通常在端口 587 以及 SMTP AUTH 和 TLS 上)
    • 所以,如果我的理解是正确的,如果我将消息传送到交换服务器,收件人不在 gmail 域上,它将被拒绝?
    • 正确,如果您连接到 gmail 的 MX 服务器并尝试发送给非本地收件人,它将拒绝中继尝试。如果您在他们的中继服务器上连接到 gmail 并使用您的 gmail 帐户进行身份验证,它将为您中继邮件,但此时您是 MUA,而不是 MTA。 IE 客户端与服务器。
    • 太棒了,正是我缺少的部分!所以如果我想实现一个 smtp 服务器,我需要启动两个不同的服务器,以便其中一个成为 mx 服务器?
    【解决方案2】:

    SMTP 在端口 25 上运行。CodeProject article 显示了一个使用 C# 发送/接收邮件的简单本地示例。

    【讨论】:

      猜你喜欢
      • 2011-05-16
      • 2010-12-13
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多