我的环境:
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.6 (Santiago)
# rpm -q postfix
postfix-2.6.6-6.el6_5.i686
#
我home_mailbox
从切换Mailbox
到Maildir/
:
# postconf -n | grep home_mailbox
home_mailbox = Maildir/
#
我正在向自己发送一封测试电子邮件:[email protected]
,但电子邮件却被发送到[email protected]
,无论出于何种原因,它都忽略了我的+A
别名。
我的目标是[email protected]
将产品送到~test/Maildir/.A/
而不是进入~test/Maildir/
。
我做错了什么?我遗漏了什么?
答案1
这是扩展版本上面的@sebix 的评论。 这未经测试解决方案直接取自 dovecot 2 wiki:鸽巢筛示例。
你需要子地址使用 dovecot sieve 的扩展来实现。将其放入 sieve 脚本中。下面是将电子邮件放入其中的简单示例[电子邮件保护]到垃圾邮件文件夹。
require ["fileinto", "envelope", "subaddress"];
if envelope :detail "to" "spam"{
fileinto "Spam";
}
更高级的示例是使用正则表达式捕获地址扩展名并将其放在同一文件夹中。例如[电子邮件保护]将于A子文件夹,[电子邮件保护]将于乙子文件夹等等
require ["variables", "envelope", "fileinto", "subaddress"];
if envelope :is :user "to" "test" {
if envelope :matches :detail "to" "*" {
/* Save name in ${name} in all lowercase except for the first letter.
* Joe, joe, jOe thus all become 'Joe'.
* Of course you can set into all lowercase letter
*/
set :lower :upperfirst "name" "${1}";
}
if string :is "${name}" "" {
/* Default case to INBOX */
fileinto "INBOX";
} else {
fileinto "${name}";
}
}
要使用 Postfix,这要求信封“收件人”仍然包含完整地址,因此请使用 -a 标志传递它。
适用于本地配送
mailbox_command = /usr/lib/dovecot/dovecot-lda -a "$RECIPIENT"
或用于虚拟交付
dovecot unix - n n - - pipe
flags=DRhu user=mail:mail argv=/usr/local/libexec/dovecot/dovecot-lda
-f ${sender} -d ${user}@${nexthop} -a ${recipient}