我有一个正常的 sendmail 安装。一个用户有一个.forward
这样的:
# cat ~elrond/.forward
elrond@somewhere
# sendmail -bv elrond+extra@localhost
elrond@somewhere... deliverable: mailer esmtp, host somewhere., user elrond@somewhere
请注意,+extra
丢失了。
我需要更改什么才能+extra
保留?通常的%3
哈希图在.forward
.
答案1
尝试FEATURE(preserve_local_plus_detail)
在您的.mc
文件中,然后重建您的.cf
.这修改了规则集 5 ( localaddr
)。它可能会导致副作用(即,如果您的本地邮件程序不支持+详细信息)。
如果这对您的别名查找产生不利影响,那么也许_FFR_ALIAS_DETAIL
适合您,这是一个构建时间(即不是.cf
)选项,但我不能说我已经测试过它。不建议 ;-)
如果做不到这一点,我能看到仅使用用户控制的文件执行您所要求的任何操作的唯一方法.forward
是检查您confFORWARD_PATH
包含的包含组件的路径$h
。至少从 8.12 开始这应该是默认值:
O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
这将允许用户创建控制~/.forward.extra
“用户+额外”地址的电子邮件的去向:
$ sendmail -v -d27.2 -bv elrond+foo
alias(elrond+foo)
alias(elrond+*)
alias(elrond)
alias(elrond)
forward(elrond+foo)
include(/home/elrond/.forward.thishost+foo)
include(/home/elrond/.forward+foo)
include(/home/elrond/.forward.thishost)
include(/home/elrond/.forward)
elrond+foo... deliverable: mailer local, host foo, user elrond
(您可以看到该函数正在处理转发文件include()
- 它在读取文件时没有扩展的概念。)
FEATURE(virtusertable)
正如其他地方所建议的可能是更好的方法,如果您是脚本类型,您可以~/.xforward
定期收集用户文件并构建主虚拟用户表。
答案2
您使用 procmail 作为 sendmail 的本地邮件程序 [ FEATURE(local_procmail)
]
=> 您可以在 ~elrond/.procmailrc 中重定向/转发消息,其中 $1 保存详细信息部分。
抱歉,我的 procmail 知识不足以提供可靠的配方,例如一些 1 美元的健全性检查。
警告:发送给 elrond+1 和 elrond+2 的消息将作为两个单独的消息传递给 procmail。
答案3
您是否考虑过允许用户使用(鸽舍)筛子?
看来您可以使用下面的示例来redirect
代替fileinto
http://wiki2.dovecot.org/Pigeonhole/Sieve/Examples#Plus_Addressed_mail_filtering