smtp服务器如何发送消息

时间:2014-03-11 08:27:28

标签: php email smtp server-side

我可以通过某个smtp服务器将邮件发送到另一个邮箱。但我想知道是否可以避免与SMTP服务器的连接,并与收件人邮箱所在的服务器通信。 例如:我想将邮件从yahoo邮箱发送到Google邮箱。我正在连接到yahoo smtp服务器。现在有一些smtp - 服务器命令,如下所示:

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服务器如何发送此消息?如何使用php tiny-smtp-server来实现?

2 个答案:

答案 0 :(得分:0)

通过询问域名的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查找,然后直接与服务器通信。

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

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

答案 1 :(得分:0)

没有什么"魔法&#34 ;;雅虎的服务器与谷歌的SMTP服务器进行类似的对话。如果两者之间没有大量的垃圾邮件争夺(主要是端口拦截),您可以自己直接连接到Google的SMTP服务器,但是现在,您必须通过自己的ISP进行中继。曾几何时,直接使用MX SMTP是常态。

稍微多一点的部分"魔法"单个SMTP服务器如何传递到本地邮件存储。这不是标准化的,但典型的设置包括直接传递到本地mbox文件(在您读取邮件的Unix服务器上附加到/var/spool/you),或存储在POP或IMAP服务器中#& 39; s消息存储。