http://www.sendmail.org/faq/section3#3.29的常见问题解答提示似乎依赖于以下事实:virtusertable:
@domain.com user+%1
将在.procmailrcconfiguration中导致$ 1,例如:
ENV_TO=$1
如果收到的电子邮件地址为[email protected],则为“xyz”,[email protected]为“abc”。 (查看procmail日志似乎证实了这一点。)
但是,我希望$ 1的值为“[email protected]”。 这是我可以在同一个用户下处理多个域名的。
以下virtusertable / .procmailrcconfiguration似乎适用于此目的:
的virtusertable:
@domain1.com userA+%1\@domain1.com @domain2.com userA+%1\@domain2.com
.procmailrc文件:
ENV_TO=$1 :0f * ENV_TO ?? . | formail -i "X-Envelope-To: $ENV_TO" :0fE | formail -i "X-Envelope-To: UNKNOWN" :0: * ^X-Envelope-To: xyz\\@domain1.com $HOME/userA/domain1.com/mail/xyz :0: * ^X-Envelope-To: abc\\@domain2.com $HOME/userA/domain2.com/mail/abc
但是,我想避免在X-Envelope-To中出现双反斜杠。 删除虚拟引用中引用的反斜杠似乎失败了,例如:
@domain1.com userA+%[email protected] @domain2.com userA+%[email protected]
似乎会导致“过度的recursion错误”。
我的问题是:
如何正确引用virtusertable中的at-sign,这样在$ procmailrc中的$ 1将只包含“[email protected]”而不是“abc \ @ domain1.com”?
或者,如果这是不可能的,我们如何去除.procmailrc中的反斜杠,使ENV_TO(最终)被赋值为“[email protected]”而不是“abc \ @ domain1.com”?
你把你的virtusertable读为: @domain.com user+%1-domain.com然后你创build一个脚本来读取从formail准备的X-Envelope-To:头文件,用正确的值replace它。 换句话说,你需要自己的版本的formail只是为了这个目的。 即使使用当前的设置,您也可以在该脚本中parsingX-Envelope-To:标题并删除反斜杠。