如何使用 C# 实现 IMAP 协议(​​服务器端)

How to implement IMAP Protocol (Server side) using C#

我正在尝试编写一个服务,为用户提供一个子域作为邮箱。
所以我需要自己实现IMAP服务器。
我注意到 mimekit/mailkit 可能对我有帮助。 (至少他们可以帮我测试我的服务器。)
可以使用 mimekit/mailkit 实现最小的 IMAP 协议(​​服务器端)吗?

Is it possible to implement a minimum IMAP Server using mimekit/mailkit?

简答:否!

The main goal of this project is to provide the .NET world with robust, fully featured and RFC-compliant SMTP, POP3, and IMAP client implementations.

您应该注意邮件服务器(保存您的电子邮件,对外界可见并且通常是 24/7 实时)和主要用于从中获取邮件的邮件客户端之间的巨大差异服务器。

我会说 MimeKit 肯定会有所帮助,因为编写 IMAP 服务器(甚至 POP3 或 SMTP 服务器)的重要部分是您将在某个时候需要处理解析消息 and/or headers 而 MimeKit 是一个完美的解决方案。

MailKit 的 部分 可能有助于实现 IMAP 服务器。例如,您的 IMAP 服务器项目的 re-using UniqueId(及相关)class 可能会有用。同样,如果您最终实施 THREAD 扩展,MessageThreader class 将是无价的。

ImapEncodingclass当然可以重复使用。

可能能够至少部分re-useImapStream(和ImapToken)class作为您的分词器对于 IMAP 服务器,但我不是 100% 确定这一点,因为我从来没有从那个角度看过它,那里可能存在细微差别,但你可以将它作为一个合理的起点。

ImapUtils.FormatInternalDate() 很适合 re-use...

如果您最终支持 QUOTA and/or,您也许还可以重用很多 FolderQuotaAccessControl classes ACL IMAP 扩展(不是那些 classes 做的很多)。

我敢肯定还有其他各种零碎的东西会对 MailKit 中的 re-use 有所帮助,但是您将无法轻松地将 ImapClient class例如 ImapServer class。

然后,当然,正如您在 post 中提到的,您始终可以使用 MailKit 作为测试 IMAP 服务器实现以确保一切正常的好方法。

希望对您的问题有帮助。