我不是说SMTP / IMAP客户端,而是要可以同时收发电子邮件的SMTP服务器。有很多只监听SMTP连接的部分PHP和Go SMTP服务器的示例-那里没有显示如何发送邮件的示例吗?我对学习简单邮件传输协议的后半部分真的很感兴趣。我知道有很多与标准服务器不同的不良服务器-但我想学习如何从头到尾实现整个协议。
3 回答
Helenr
TA贡献1780条经验 获得超4个赞
我认为您误解了SMTP应该如何工作。这是一个简化的版本:
邮件用户代理(MUA)通过将邮件发送到邮件提交代理(MSA)来排队等待传递的邮件。
MSA通过SMTP连接到邮件传输代理(“ smtp服务器”)。
然后,MTA使用DNS查找收件人域的MX记录。然后,它将联系收件人的MX服务器作为SMTP客户端。
MX服务器接受信封。然后将其转发到邮件传递代理(MDA)。
然后,MDA将信封放在某些邮件存储中,某些IMAP或POP3服务器在其中读取邮件。然后,MUA连接到这些服务器以检索消息。
整个过程使用三个主要命令。MAIL
,RCPT
和DATA
。
MAIL
=信封信息,退回地址等。RCTP
=收件人。DATA
=有效负载。
SMTP服务器响应-实际上类似于HTTP,带有错误代码,并基于此错误,MTA知道如何处理信封(回弹,因此发送适当的答复等)。
在此过程中,没有诸如“检索电子邮件”之类的东西(略ETRN
过)。因为SMTP纯粹是用于电子邮件传输而不是检索。
慕后森
TA贡献1802条经验 获得超5个赞
没有SMTP的“后半部分”,只有协议。如果您的MUA直接通过TCP与邮件服务器进行交互(而不是使用诸如大多数Unix上的/ usr / bin / sendmail二进制文件之类的帮助程序),则它将使用SMTP协议。在传递邮件时,MTA使用相同的协议与其他MTA进行通信。根据情况,它可能会使用更多的可用动词集。
查看MTA的PHP或Go实现的代码将向您展示一个人/团队如何实现SMTP协议。
- 3 回答
- 0 关注
- 267 浏览
添加回答
举报
0/150
提交
取消