我对不同的域有不同的转发需求,它们都指向我的邮件服务器:
[email protected] [email protected]
[email protected] [email protected]
@example.com mylocalaccount
这一切都有效...然而,其中一些用户希望使用 + 符号为不同的供应商提供不同的地址,例如user1
+小贩@example.com
. 而这部分不起作用——所有此类电子邮件最终都被送到了收件箱,mylocalaccount
而不是被正确转发。
我如何才能[email protected]
将其转发到与相同的目的地[email protected]
?
我尝试添加类似条目
user1+*@example.com foo+%[email protected]
但这并没有解决问题......
以下是调试跟踪:
没有详细信息:
% sendmail -d60.5 -bv [email protected]
map_lookup(dequote, me, %0=me) => NOT FOUND (0)
map_lookup(dequote, g, %0=g) => NOT FOUND (0)
map_lookup(virtuser, [email protected], %[email protected], %1=g) => [email protected] (0)
... 工作。
详细信息:
% sendmail -d60.5 -bv [email protected]
map_lookup(dequote, me, %0=me) => NOT FOUND (0)
map_lookup(dequote, g+meow, %0=g+meow) => NOT FOUND (0)
map_lookup(virtuser, [email protected], %[email protected], %1=g+meow) => NOT FOUND (0)
map_lookup(virtuser, @example.com, %[email protected], %1=g+meow) => me (0)
map_lookup(dequote, me, %0=me) => NOT FOUND (0)
map_lookup(user, me, %0=me) => me<> (0)
[email protected]... deliverable: mailer local, user me
... 不起作用——来到了万能的本地帐户“我”。
答案1
您的 中似乎+
缺少了。它使中的行看到一个标记而不是三个标记。OperatorChars
sendmail.cf
R
sedmail.cf
user+detail
user
+
detail
sendmail.cf
生成自sendmail.mc
应该.:%@!^/[]+
默认将 OperatorChars 设置为蝙蝠书. 可以通过定义在 mc 文件中进行更改confOPERATORS
。
检查报告的内容grep OperatorChars /etc/mail/sendmail.cf
答案2
如果你想让 virtusertable 重定向保留+细节然后尝试:
# use %2 if you want to strip EMPTY +detail ([email protected])
[email protected] foo%[email protected]
调试过程
以 root 身份执行。 它应该跟踪包括 virtusertable 映射查找在内的映射查找。 尝试在 virtusertable 查找之前删除 +detail。sendmail -d60.5 -bv [email protected]
sendmail -d21.12 -d60.5 -bv [email protected]
[email protected]
默认情况下应该使 sendmail 查找以下 virtusertable 条目:
[电子邮件保护](加上存在但详细信息为空)进行查找 1+3+4+6+7
[电子邮件保护](没有 +detail)condutcs 查找 4+7