如何让sendmail保留.forward的详细信息?

如何让sendmail保留.forward的详细信息?

我有一个正常的 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

相关内容