MTA究竟做了什么?

Ali*_*xel 15 email service smtp protocols mta

这个问题让我思考,现在我意识到我对MTA的内部结构一无所知.

MTA究竟做了什么?SMTP协议之后的所有内容对我来说都是黑暗魔法.假设我想编写一个简约的MTA(或MDA)来发送电子邮件,我需要学习/做什么?

编辑:我实际上并没有计划编写MTA,我只是想了解它在内部是如何工作的.

Edw*_*uck 12

---以某种方式注意到你在谈论可能写一个MTA后编辑---

要编写MTA,您需要打开服务器套接字.当有人连接时,您需要在该套接字上发送和接收符合SMTP协议的文本(ascii)数据.SMTP很健谈,所以你可以期待几轮沟通.

初始通信通常会告诉您是否支持SMTP或是否支持ESMTP.第二轮(可选)通信是确定安全性/加密/功能支持.最终,"客户端"将要求向特定地址/地址集发送消息.完成后,服务器将指示它已准备好获取电子邮件的正文.当邮件正文(及其附件)已全部传输完毕后,MTA会告诉您收到邮件正常.在那个时间点,MTA将充当通过DNS MX记录发现的其他MTA的客户端,以使您的电子邮件更接近其目标MTA,该目标MTA将其复制到某人的收件箱中.

因此需要MTA,因为客户端的邮件传递相当于将实体信件交给邮局.邮局负责邮局间路由(与MTA到MTA传输相似).然后,目的地邮局负责将信件递送到邮政信箱或家庭住址(与一个人的计算机收件箱相似).

他们不把它叫做E- 邮件白白.

---原始帖子如下:MTA将接受邮件消息,看它是否可以转发或传递,如果可以转发或传递则回复,然后如果它可以转发或转发它.

消息如何靠近它的最终目的地通常与DNS有点关系.DNS中的MX(邮件交换)记录表示对特定电子邮件域名负责(或至少更靠近负责服务器)的服务器.如果不了解DNS的工作原理,就无法完全理解邮件消息如何靠近目的地.

MTA通常查看传递地址,并将其配置为电子邮件地址的邮件域的"终点",或者知道服务器XYZ距离电子邮件地址的邮件域更近一跳.如果它是端点,它会将消息从线路复制到某人的收件箱中.如果它正在中继,它会将消息"转发"到下一个MTA.