我正在编写 IMAP 服务器,但遇到一个问题:电子邮件来自哪里?
我一直认为事件的基本过程是这样的:
- 发件人客户端使用 SMTP 协议向 SMTP 服务器(主机 A)发送电子邮件;
- SMTP 服务器(主机 A)查找电子邮件的目的地,并使用 SMTP 协议与 SMTP 服务器(主机 B)通信;
- SMTP 服务器(主机 B)然后接受电子邮件,并与 IMAP 服务器(主机 B)通信以神奇地(?)将电子邮件发送到该服务器;
- 接收者客户端使用 IMAP 协议向 IMAP 服务器(主机 B)请求新的电子邮件。
这让我想知道:电子邮件是如何从接受 SMTP 服务器到达服务 IMAP 服务器的?他们有一个协议吗?他们只是将其放入目录中吗?
我自己试图找到答案...
我已经看到/var/mail
目录的用法 - 每个用户一个文件 - 这似乎并不适合大型用户群。当两个进程同时从中读取/写入时,它不会也引起问题吗?
我还看到 Postfixmain.cf
文件可能包含mailbox_transport = lmtp:unix:/var/imap/socket/lmtp
,它看起来像是用于使用 unix 套接字与 IMAP 服务器通信的 LMTP 协议。这将表明 IMAP 服务器也“说”LMTP?
是否使用了其他方法?还是其他协议?