【问题标题】:How does smtp server send messagessmtp服务器如何发送消息
【发布时间】:2014-03-11 08:27:27
【问题描述】:

我可以通过一些 smtp 服务器将消息发送到另一个邮箱。但我想知道是否可以避免连接到SMTP 服务器并与接收者邮箱所在的服务器进行通信。 例如:我想将消息从yahoo 邮箱发送到谷歌邮箱。我正在连接到yahoo smtp 服务器。现在一些smtp-server 命令如下:

EHLO myname
auth login
mail from: test@yahoo.com
rcpt to: test@google.com
data
This is a test message
.

在此命令之后yahoo smtp sevrver 神奇地将我的消息发送到google 邮箱。但我想知道 smtp 服务器如何发送此消息?如何使用phptiny-smtp-server 来实现?

【问题讨论】:

    标签: php email smtp server-side


    【解决方案1】:

    将通过询问域的 MX 记录来使用 DNS 查找负责域的邮件服务器:

    $ dig mx google.com
    ...
    google.com.             19      IN      MX      10 aspmx.l.google.com.
    google.com.             19      IN      MX      20 alt1.aspmx.l.google.com.
    google.com.             19      IN      MX      30 alt2.aspmx.l.google.com.
    google.com.             19      IN      MX      40 alt3.aspmx.l.google.com.
    google.com.             19      IN      MX      50 alt4.aspmx.l.google.com.
    ...
    

    因此,您可以尝试进行这样的 MX 查找,然后直接与服务器对话。

    但是,由于当今的垃圾邮件众多,大多数大型提供商都不接受来自任何人的邮件,例如如果您想从self@google.com 向someone@google.com 发送邮件,您可能需要授权自己,如果您从self@google.com 向someone@yahoo.com 发送邮件,雅虎的邮件服务器可能会查找google.com 的 SPF 记录并检查您是否在允许的发件人 IP 列表中。

    总而言之:最简单最可靠的方法是使用您的邮件提供商提供给您的邮件服务器,让他们处理所有细节。

    【讨论】:

      【解决方案2】:

      没有什么“神奇”的; Yahoo 的服务器与 Google 的 SMTP 服务器执行类似的对话。如果中间没有很多垃圾邮件(主要是端口阻塞),您可以自己直接连接到 Google 的 SMTP 服务器,但是现在,您必须通过自己的 ISP 进行中继。曾几何时,直接到 MX 的 SMTP 是常态。

      更“神奇”的部分是各个 SMTP 服务器如何将邮件发送到本地邮件存储中。这不是标准化的,但典型的设置包括直接发送到本地 mbox 文件(附加到您阅读邮件的 Unix 服务器上的 /var/spool/you),或存储在 POP 或 IMAP 服务器的消息存储中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 2013-10-06
        • 1970-01-01
        • 1970-01-01
        • 2020-11-25
        • 1970-01-01
        相关资源
        最近更新 更多