我有一个使用 Postfix 进行 SMTP 和使用 Dovecot 进行邮件存储(邮箱存储在 MySQL 数据库中)的邮件服务器。其中一位用户创建了名称中带有加号的邮箱,如下所示:
Dovecot 似乎无法像往常一样处理该邮箱名称。当我尝试使用 doveadm 查找该邮箱时,它失败了
# doveadm user [email protected]
field valueuserdb lookup: user [email protected] doesn't exist
另一方面,当我使用通配符进行查找时,它显示以下内容:
# doveadm user 'peter*[email protected]'
[email protected]
# doveadm user '*@example.com'
[email protected]
(...)
[email protected]
无论如何 - 带有加号的邮箱无法使用,您无法登录它。
当邮件发送到该邮箱时 - Postfix 会像对待其他邮件一样对待它,因此它会将其转发到 Dovecot(在我的情况下是通过 LMTP)到邮箱[电子邮件保护]。但 Dovecot 试图将其传递给[电子邮件保护](忽略以加号开头的所有内容)。
看起来 Dovecot 正在像 Gmail 或其他邮件服务器一样处理加号:
https://notfaq.wordpress.com/2006/07/20/plus-sign-in-email-addresses/ http://gmailblog.blogspot.cz/2008/03/2-hidden-ways-to-get-more-from-your.html
我的问题是:
- Dovecot 是否真的像我描述的那样以特殊方式处理加号,或者这是一种错误行为?我搜索了 Dovecot 文档,但没有找到任何内容,而且我在网上搜索时也没有找到任何有用的东西。
- 如果这是一个功能,可以将其禁用吗(这样“+”号就不会被特殊处理)?
答案1
[email protected]
被传递到的功能[email protected]
被称为“子寻址” 或者“加寻址”并很好地描述了维基百科。
高级用户会发现它非常有用,如果您已经拥有大量现有用户群,那么您可能要三思而后行,因为禁用它可能会造成比修复更多的问题。恕我直言,您应该修补邮箱配置前端,以拒绝使用 的邮箱名称+。
在后缀中,子寻址配置为recipient_delimiter
,只需删除该指令,子寻址就会被禁用。
正如我已经提到的,子寻址非常有用,你可能想研究一下 Dovecot 目前如何处理子寻址,因为手动的提供不同的选择。
以下将把邮件发送到用户邮箱中[email protected]
指定的特定文件夹:extension
dovecot unix - nn - - 管道标志=DRhu 用户=vmail:vmail argv=/usr/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${user}@${nexthop}-m ${扩展名}
或者如果你有一个 INBOX/ 命名空间前缀:
dovecot unix - nn - - 管道标志=DRhu 用户=vmail:vmail argv=/usr/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${user}@${nexthop}-m INBOX/${扩展名}
或者 Dovecot 可以完全忽略扩展并将所有邮件发送到主收件箱
dovecot unix - nn - - 管道标志=DRhu 用户=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -a ${recipient} -d ${user}@${nexthop}