我读到过 LMTP 用于管理本地消息,不需要队列。我不明白具体涉及哪些协议,如果我错了,请纠正我:
假设一台机器有两台服务器,Postfix 和 Dovecot,那么:
- MTA 是否使用 LMTP 与 MDA 通信?
- MDA 是否也使用 LMTP 将消息存储到邮箱中?
提前致谢!
答案1
有很多可能性。Postfix 队列管理器可以
- 将邮件通过管道传输到命令,例如“procmail -a "$EXTENSION"”
- 使用Postfix 本地邮件传递或者它自己的非常基本的 MDA,称为虚拟的,都可以将电子邮件保存到本地硬盘上的虚拟邮箱
- 通过 LMTP 将邮件传递到外部 MDA,例如 Dovecot
LMTP 可以使用 INET 或 UNIX 套接字。如果 Dovecot 安装在同一台服务器上,您可能更喜欢 UNIX 套接字。Postfix 和 Dovecot 都需要相应配置。这种设置的主要好处是您将能够使用 Dovecot 的功能,例如配额管理。
Postfix 还可以将 Dovecot 用于其他用途,例如SASL 身份验证,因此 LMTP 不是它们用于相互通信的唯一协议。
答案2
这取决于您如何配置它。在一台有 2 个服务的机器上,我预计根本不使用 LMTP,如果使用 dovecot 的 LDA,postfix 将配置为直接调用 dovecot-deliver,如 mailbox_command 选项所配置。在高容量服务器上,postfix+dovecot 可能会配置为 LMTP 交付,但需要额外的资源来保持 dovecot-lmtp 处于活动状态。
我想不出任何理由让您使用 LMTP 内部 LDA,即使您可以使用。一旦第一个 LDA 接受了来自 MTA 的交易,它就不能返回并说“哎呀,我犯了一个错误,请帮我重新排队或发送反弹”——不,LMTP 不支持排队或重新发送,也不能将带外消息发送回 MTA。无论如何,我认为 dovecot 不支持通过 LMTP 中继到另一个 LDA。