我可以通过某个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服务器会神奇地将我的邮件发送到google邮箱。但我想知道smtp服务器是如何发送此消息的?如何使用php实现tiny-smtp-server
发布于 2014-03-12 05:13:25
通过请求域的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记录,并检查您是否在允许的发件人if列表中。
总而言之:最简单、最可靠的方法是使用邮件提供商提供的邮件服务器,让他们处理所有细节。
发布于 2014-03-12 05:26:00
没有什么是“神奇的”;Yahoo的服务器与Google的SMTP服务器执行类似的对话。如果两者之间没有太多的垃圾邮件(主要是端口阻塞),你可以自己直接连接到Google的SMTP服务器,但现在,你必须通过自己的ISP进行中继。曾几何时,直接到MX的SMTP是标准。
更“神奇”的部分是单个SMTP服务器如何传递到本地邮件存储中。这不是标准化的,但典型的设置包括直接传送到本地mbox文件(附加到您读取邮件的Unix服务器上的/var/spool/you ),或者存储在POP或IMAP服务器的消息存储中。
https://stackoverflow.com/questions/22320119
复制相似问题