为了账号安全,请及时绑定邮箱和手机立即绑定

是否有任何用PHP或Go编写的SMTP服务器?

是否有任何用PHP或Go编写的SMTP服务器?

Go
喵喔喔 2021-05-12 09:45:19
我不是说SMTP / IMAP客户端,而是要可以同时收发电子邮件的SMTP服务器。有很多只监听SMTP连接的部分PHP和Go SMTP服务器的示例-那里没有显示如何发送邮件的示例吗?我对学习简单邮件传输协议的后半部分真的很感兴趣。我知道有很多与标准服务器不同的不良服务器-但我想学习如何从头到尾实现整个协议。
查看完整描述

3 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

我认为您误解了SMTP应该如何工作。这是一个简化的版本:

  1. 邮件用户代理(MUA)通过将邮件发送到邮件提交代理(MSA)来排队等待传递的邮件。

  2. MSA通过SMTP连接到邮件传输代理(“ smtp服务器”)。

  3. 然后,MTA使用DNS查找收件人域的MX记录。然后,它将联系收件人的MX服务器作为SMTP客户端

  4. MX服务器接受信封。然后将其转发到邮件传递代理(MDA)。

  5. 然后,MDA将信封放在某些邮件存储中,某些IMAP或POP3服务器在其中读取邮件。然后,MUA连接到这些服务器以检索消息。

整个过程使用三个主要命令。MAILRCPTDATA

  • MAIL =信封信息,退回地址等。

  • RCTP =收件人。

  • DATA =有效负载。

SMTP服务器响应-实际上类似于HTTP,带有错误代码,并基于此错误,MTA知道如何处理信封(回弹,因此发送适当的答复等)。

在此过程中,没有诸如“检索电子邮件”之类的东西(略ETRN过)。因为SMTP纯粹是用于电子邮件传输而不是检索。


查看完整回答
反对 回复 2021-05-17
?
慕森王

TA贡献1777条经验 获得超3个赞

我发现了一个用PHP编写的完整SMTP服务器-甚至包括一个讨厌的开放中继。

$ sudo php php-smtp.php [ip-address] [port]


查看完整回答
反对 回复 2021-05-17
?
慕后森

TA贡献1802条经验 获得超5个赞

没有SMTP的“后半部分”,只有协议。如果您的MUA直接通过TCP与邮件服务器进行交互(而不是使用诸如大多数Unix上的/ usr / bin / sendmail二进制文件之类的帮助程序),则它将使用SMTP协议。在传递邮件时,MTA使用相同的协议与其他MTA进行通信。根据情况,它可能会使用更多的可用动词集。

查看MTA的PHP或Go实现的代码将向您展示一个人/团队如何实现SMTP协议。


查看完整回答
反对 回复 2021-05-17
  • 3 回答
  • 0 关注
  • 267 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信