当前位置: 首页 > 知识库问答 >
问题:

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

公羊灿
2023-03-14

我不是指SMTP/IMAP客户端,我指的是一个可以接收和发送电子邮件的工作SMTP服务器

有很多只监听SMTP连接的部分PHP和Go SMTP服务器的例子——难道没有任何例子说明如何发送邮件吗?

我对学习简单邮件传输协议的后半部分非常感兴趣。我知道有很多糟糕的服务器与标准不同,但我想了解整个协议从头到尾是如何实现的。

共有3个答案

商夜洛
2023-03-14

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

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

曾昂然
2023-03-14

我发现一个完整的SMTP服务器是用PHP编写的,甚至包括一个令人讨厌的开放式中继。

$ sudo php php-smtp.php [ip-address] [port]
文建业
2023-03-14

我想你误解了SMTP的工作原理。以下是一个简化版本:

>

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

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

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

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

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

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

    • 邮件=信封信息、跳出地址等

    SMTP服务器会做出响应——实际上很像HTTP,有错误代码,基于此,MTA知道如何处理信封(它是一个反弹,所以发送适当的回复,等等)。)

    在这个过程中,没有“检索电子邮件”这样的事情(稍微忽略ETRN);因为SMTP仅用于电子邮件传输,而不是检索。

  •  类似资料:
    • 问题内容: 如果存在一个以上的实现,哪个/更好的维护? 专门用于OAuth 2.0草案12。 问题答案: 来自OAuth Wiki ,似乎有一个名为oauth2-php的 PHP实现,它支持IETF v9草案。由于OAuth2仍是草案,因此可能很难找到更多实现。

    • SMTP是Simple Mail Transfer Protocol的首字母缩写。 它是跨Internet协议(IP)网络的电子邮件(电子邮件)传输的Internet标准。 SMTP使用TCP端口25.由SSL保护的SMTP连接以速记SMTPS为人所知,尽管SMTPS本身不是协议。 JavaMail API具有包com.sun.mail.smtp ,它作为SMTP协议提供程序来访问SMTP服务器。

    • 在之前的所有章节中,我们使用JangoSMPT服务器发送电子邮件。 在本章中,我们将了解Gmail提供的SMPT服务器。 Gmail(以及其他)免费提供其公共SMTP服务器。 Gmail SMTP服务器详细信息可在here找到。 正如您在详细信息中看到的,我们可以使用TLS或SSL连接通过Gmail SMTP服务器发送电子邮件。 使用Gmail SMTP服务器发送电子邮件的过程与发送电子邮件一章中

    • 问题内容: 我正在尝试编写AngularJS客户端专用应用程序。 我以为我也许可以通过在地址栏中输入以下内容从chrome加载它:file:/// C:/path/to/project//index.html我也尝试过用 –allow-file标志调用chrome从文件访问 不幸的是,什么都没有发生-只是选项卡名称上的繁忙标志正在起作用。 为什么不加载我的应用程序? 我正在使用以下代码: inde

    • 问题内容: 尽管这可能是Java Web Services的副本,但我想知道从哪里开始和继续。过去,我花了很多时间来找到从哪里开始,但我却没有。阅读有关Web服务的页面时,有很多术语和混乱(至少对我来说是如此!)。有很多术语- 例如Web Service和其他我不知道的术语。该用户组可以合并并提供易于理解和遵循的Java Web Services的高级概述吗?我感谢您的好意,并感谢您的帮助。 问题