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

本文关键字:服务器端 协议 IMAP 何使用 实现 | 更新日期: 2023-09-27 18:07:21

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

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

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

MailKit的部分可能有助于实现IMAP服务器。例如,在IMAP服务器项目中重用UniqueId(及相关)类可能会很有用。同样,如果您最终实现了THREAD扩展,那么MessageThreader类将是无价的。

ImapEncoding类肯定是可重用的。

可能能够至少部分地重用ImapStream(和ImapToken)类作为IMAP服务器的标记器,但我不能100%确定,因为我从未从这个角度看待它,并且那里可能存在细微的差异,但您可能可以将其用作合理的起点。

ImapUtils.FormatInternalDate()将是重用的好候选…

如果您最终支持QUOTA和/或ACL IMAP扩展,您可能也可以重用许多FolderQuotaAccessControl类(并不是说这些类做得很多)。

我相信还有其他各种各样的比特&例如,您将无法轻松地将ImapClient类转换为ImapServer类。

然后,当然,正如你在你的帖子中提到的,你总是可以使用MailKit作为测试IMAP服务器实现的好方法,以确保一切正常。

是否有可能实现一个最小的IMAP服务器使用mimekit/mailkit?

简短的回答:不!

这个项目的主要目标是为。net世界提供健壮的、功能齐全的、rfc兼容的SMTP、POP3和IMAP客户端实现。

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