关于 Postfix 地址传递和 /etc/aliases:

关于 Postfix 地址传递和 /etc/aliases:

我有一个带有 Postfix 和 Dovecot 的 Debian 服务器。最近,我在 Dovecot 上安装了 Sieve,并配置 Postfix 使用 LMTP 传送电子邮件。从那时起,纯用户名不能与分隔符一起使用。分隔符似乎只有在涉及 aliases-db 时才能解决。日志说:

User doesn't exist: [email protected] (in reply to RCPT TO command)

这是基本设置和一些示例

username: doe  
delimiter: -    
[email protected] -> works  
[email protected] -> works  
[email protected] -> unknown user  
[email protected] -> works  

/etc/aliases

john.doe: doe  

/etc/postfix/main.cf

recipient_delimiter = -
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mailbox_transport = lmtp:unix:private/dovecot-lmtp
# All options: propagate_unmatched_extensions = canonical, virtual, alias, forward, include
propagate_unmatched_extensions =

答案1

这里的问题不在于 Postfix,而在于 Dovecot。由于 Dovecot 不知道 Postfix,recipient_delimiter它必须假设用户查询[电子邮件受保护]实际上的意思是“在域“example.com”上查找用户“doe-test””。

幸运的是,这个解决方案很简单,告诉 Dovecot 你告诉 Postfix 的话

  1. 打开/etc/dovecot/conf.d/15-lda.conf
  2. 取消注释包含的行#recipient_delimiter = +并将其替换+为任何内容(-在您的情况下)
  3. 利润!

关于 Postfix 地址传递和 /etc/aliases:

在您的设置中起作用的原因[email protected]是因为别名查找是由 Postfix 本身完成的决定消息是否将被传送(即:LMTP 在这个阶段根本不相关)。

那么发生的事情是这样的:

  • [email protected]Postfix 接收使用其守护进程的消息smtpd并将其放入消息队列中
  • postfixqmgr守护进程安排消息处理
  • qmgr使用解析消息目的地trivial-rewrite命令
    • 这是执行地址解析和查找的地方,因此第一次使用收件人分隔符。
    • 特别是 Postfix 将在别名表上执行以下查找:
      1. [email protected]john.doe-test(原始地址)
      2. [email protected]john.doe(不带地址扩展名的地址)
      3. (可能还有其他一些,具体取决于所使用的地址和配置。)
    • 如果查找成功,它将返回新的目标地址,并且消息将再次放入队列中。
  • 最终,消息将(以某种方式)被标记为准备好传递(即使它被退回,这只是一种特殊类型的传递......),并将qmgr安排适当的命令来执行该传递(例如lmtp) – 将消息及其最终递送地址传递给它(在我们的例子中[email protected]
    • 如果使用 Postfixlmtp进行投递,则会建立与实际 LMTP 守护进程 (Dovecot) 的连接,并且将使用 LMTP 协议传递消息(带有最终投递地址)。
  • Dovecot 的 LMTP 守护进程对整个重写过程一无所知,只会尝试根据[email protected]它收到的最终传递地址 ( ) 传递消息。

现在,如果我们考虑这种情况,[email protected]我们会发现该地址的别名表查找永远不会成功,因此传递地址永远不会被重写。因此,Postfix 最终将尝试[email protected]使用 LMTP 来传递消息。

Postfix 不应该在尝试使用 LMTP 进行传送之前丢弃地址扩展吗?
或许, 但不是丢弃它会带来巨大的好处:Dovecot 将能够知道关于地址扩展。这可能看起来不是很有用,但是在 Dovecot 端处理地址扩展可以实现一些很酷的事情,例如使用 Sieve 自动将邮件放入 IMAP 子文件夹中

相关内容