![Postfix:具有别名的用户有一个邮箱,其文件名列出了所有别名](https://linux22.com/image/748869/Postfix%EF%BC%9A%E5%85%B7%E6%9C%89%E5%88%AB%E5%90%8D%E7%9A%84%E7%94%A8%E6%88%B7%E6%9C%89%E4%B8%80%E4%B8%AA%E9%82%AE%E7%AE%B1%EF%BC%8C%E5%85%B6%E6%96%87%E4%BB%B6%E5%90%8D%E5%88%97%E5%87%BA%E4%BA%86%E6%89%80%E6%9C%89%E5%88%AB%E5%90%8D.png)
我的 CentOS 7 机器上运行着一个 Postfix 服务器。
我设法配置 postfix 服务器以使用我的 LDAP 服务器来检索帐户,并且它运行良好,电子邮件被接收并保存到邮箱文件中。
我使用 Dovecot 作为 IMAP 服务器。除了使用别名的用户外,所有用户都可以很好地协同工作。
问题在于,Dovecot 会查找具有用户maildrop
属性(当然是唯一的)的邮箱文件。但是,Postfix 创建的邮箱文件是所有mail
属性的列表(即别名列表)。
例如,假设有 的用户cn=user, maildrop=user, mail=user, mail=alias
。
在这种情况下,Postfix 创建的邮箱文件将被称为user,alias
,而 Dovecot 将寻找名为 的文件user
。
现在当然,我可以开始找出如何让 Dovecot 寻找一个名为的文件user,alias
,但这意味着每次向帐户添加新别名时,在删除该别名之前,所有电子邮件都将无法调用。
因此,我需要的帮助是配置 Postfix 来调用邮箱文件user
,即使mail=user
有多个别名。
相关部分main.cf
:
virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf
virtual_mailbox_domains = mail.ropi.dev, ropi.dev
virtual_mailbox_base = /var/mail/mail_default
virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf
virtual_minimum_uid = 3000
virtual_uid_maps = static:3000
virtual_gid_maps = static:3000
virtual_transport = virtual
ldap-accounts.cf
:
# ...
query_filter = (&(objectClass=mailUser)(maildrop=%u))
result_attribute = mail
version = 3
ldap-aliases.cf
:
# ...
query_filter = (&(objectClass=mailUser)(mail=%u))
result_attribute = maildrop
version = 3
答案1
我意识到了我的错误,我需要进行修改ldap-accounts.cf
,使其返回的不是别名(mail
),而是属性中的“主”电子邮件地址maildrop
。