将 Dovecot 的 LMTP 与虚拟用户结合使用(通过数据库查找将地址映射到邮箱)

将 Dovecot 的 LMTP 与虚拟用户结合使用(通过数据库查找将地址映射到邮箱)

我想将 dovecot 与基于 sql 的虚拟用户一起使用(它在我的当前 exim+courier-imapd 设置中已经运行良好)。

在我的设置中,有一些“邮箱”,它们有一个邮箱名称@域名和密码。除此之外,还有将实际电子邮件地址映射到邮箱的“地址”。
通过 IMAP 或 POP3 登录时,用户使用邮箱名称和密码。所以我只需检查 dovecot passdb 查询中的邮箱表,就可以正常工作。

不过,userdb 查询有点问题:当用户登录时,可用的信息显然是邮箱名称@域名用户名,然后可用于创建邮箱路径(甚至可能使用 userdb static)。
但是,当电子邮件通过 LMTP 传送时,我需要查询地址表来检索目标邮箱 - 因此在这种情况下我需要不同的查询。


一种可能的解决方案可能是在数据库级别使用一些条件,根据%s变量(服务名称,例如lmtp)执行不同的查询 - 但显然这会是一个巨大的混乱。

另一个解决方案可能是简单地使用 LDA 而不是 LMTP,因为我可以让它们在 exim 中查找邮箱名称并将其简单地传递给 LDA 程序 - 但使用 LDA 不仅涉及启动额外的进程(这并不影响我的低容量服务器,但无论如何)并且可能更糟糕的错误处理,因为 LDA 只能将退出状态代码返回给 exim,而不像 LMTP 那样可能返回详细的错误消息。

因此,我想知道是否有办法根据使用位置(在传递时还是在访问邮箱时)执行不同的用户数据库查询。

答案1

Dovecot LMTP 与 IMAP 服务器(及其伴随的登录和用户数据库)完全无关。

但是,ttbomk 无法使用一个用户登录/传递邮件并使用另一个用户(或别名)接受邮件。

在 Postfix 中,通过添加包含收件人地址和 LMTP 用户的虚拟别名映射可以轻松解决这个问题;这实际上不是 LDA 应该做的事情。

相关内容