email - MTA 到底做什么的?

标签 email service smtp protocols mta

这个question这引起了我的思考,现在我意识到我对 MTA 的内部结构一无所知。

MTA 到底是做什么的? SMTP 协议(protocol)之后的一切对我来说都像是黑魔法。假设我想编写一个简约的 MTA(或 MDA )只是为了发送电子邮件,我需要学习/做什么?

编辑:我实际上并不打算编写 MTA,我只是想了解它的内部工作原理。

最佳答案

--- 在不知何故注意到你谈到可能编写 MTA 后进行编辑 ---

要编写 MTA,您需要打开服务器套接字。当有人连接时,您需要按照 SMTP 协议(protocol)在该套接字上发送和接收文本 (ascii) 数据。 SMTP 非常健谈,因此您可以期待几轮通信。

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

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

他们称其为电子邮件邮件可不是无缘无故的。

--- 原帖如下 --- MTA 将接受邮件消息,查看是否可以转发或投递,如果可以转发或投递则做出响应,如果表明可以转发或投递,则转发或投递。

消息如何接近最终目的地通常与 DNS 有一定关系。 DNS 中的 MX(邮件交换)记录指示负责(或至少更接近负责服务器)特定电子邮件域名的服务器。如果不了解 DNS 的工作原理,就不可能完全了解邮件消息如何接近其目的地。

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

关于email - MTA 到底做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5023590/

相关文章:

windows-phone-7 - 有没有办法让 WP7 Mail 与 GMail 对话一起使用?

java邮件smtp连接问题

validation - grails 验证电子邮件自定义消息

javascript - 使用 Javascript 发送电子邮件

c# - SMTP 服务器需要安全连接或客户端未通过身份验证。如果在 godaddy 上上传

android - 我可以在 Activity 和服务之间共享 ViewModel 吗?

使用 Spock 进行测试时,Grails 无法将服务注入(inject)域

java - 操作系统(特别是 Android 的)进程

java - Gmail smtp、Blackberry、BB、socketConnection,以编程方式通过 gmail smtp 发送电子邮件

swift - 从 Sprite Kit 中关闭邮件 View Controller