如何将通配符地址的邮件发送给特定用户/别名/程序?

如何将通配符地址的邮件发送给特定用户/别名/程序?

我需要配置 sendmail,以便接受传递到通配符地址的邮件,然后将其传递给用户、别名或直接传递给脚本。

我可以用多种方式重写信封/标题,但我不知道如何接受在 RCPT TO 中提供的通配符地址:到目前为止,我尝试过的所有方法都以 550 个用户未知错误结束。

这是一个具体的例子:

我希望能够处理由一系列数字、后跟一个点和一个单词组成的任何地址,然后将其传送到脚本。如果标题被重写,那没问题,但我需要信封包含实际的收件地址。

这是我需要的 SMTP 会话类型:

220 blah.foo.com ESMTP server ready; Thu, 22 Apr 2010 20:41:08 -0700 (PDT)
HELO blort.foo.com
250 blah.foo.com Hello blort.foo.com [10.1.2.3], pleased to meet you
MAIL FROM: <[email protected]>
250 2.1.0 <[email protected]>... Sender ok
RCPT TO: <[email protected]>
250 2.1.5 <[email protected]>... Recipient ok

我尝试使用正则表达式映射来做一些事情,但是我从未超过 550 个未知用户。

答案1

您应该在 /etc/mail/virtusertable 中添加一行,如下所示:

@yourdomain.com account_catch_all

然后 makemap 虚拟用户表,所有发往该特定域的邮件都将转发给指定用户。然后您可以实现 procmail 以根据需要进行过滤,或者编写自己的脚本来解析文件...

答案2

我使用 virtusertable 做过类似的事情。不确定这是否正是您所需要的,但例如,如果您想接受整个域的流量并将其重定向到另一个域的单个地址,您可以在 virtusertable 文件中放入类似以下内容:

@somedomain.com [电子邮件保护]

接受某个域中任何地址的流量并将其重定向到其他域中的相同地址:

@somedomain.com %1%[电子邮件保护]

要完成您提到的其余模式匹配,您需要使用正则表达式映射或(我的偏好)事后使用类似 procmail 的东西来处理它。

虚拟域在 O'Reilly 的“sendmail”一书(“蝙蝠书”)的第 4.8.51 节中进行了描述。

我希望这是有帮助的。

相关内容