删除后缀规范邮件正则表达式中未确定的点数

删除后缀规范邮件正则表达式中未确定的点数

我尝试将 Gmail 使用的自动别名行为添加到我的 postfix 邮件服务器中,这可以通过规则来总结忽略所有点

我发现本文,它似乎适用于以下模式:

/^(.*)\.(.*)@(.*)$/ ${1}${2}@${3}

但我发现它不仅重写收到的邮件,还重写发送的邮件(从外部域邮件地址中删除点,这可能会阻止邮件投递),而且它只删除一个点。对于这种情况很有用surname.name,但我们可能会遇到多个点。我想改进这一点。

目前,我使用此行以规范形式重写电子邮件:

/^(([^.]*)\.)? ... ([^.]*)@((.*\.)*DOMAIN\.TLD)$/    ${2} ... ${N*2 + 1}@${N*2 + 2}

和 :

  • N 任意选择的点数
  • ([^.]*)\.)?匹配模式中重复 N 次的序列
  • ${n*2}重写模式中重复 N 次的变量

(最后一组用于匹配主域或任意子域)

当前的解决方案有效,但是:

  • 它被限制为选定的最大点数(但在常规邮件地址中添加 100 个点确实并不常见)
  • 配置文件非常丑陋且难以读取(但确实配置文件可能不会每天都被读取)。

我的问题是:是否可以为后缀配置编写正则表达式(只需重写一步并输入整个地址)处理任意数量的点?或者我可以使用什么更好的解决方法来实现我的目标?

答案1

我找到了一种更简单的方法来完成这项工作:

/^(.*)\.(.*)@((.*\.)*DOMAIN\.TLD)$/ ${1}${2}@${3}

在 Postfix 配置中,似乎会尽可能多地针对电子邮件测试模式。因此,此模式将匹配删除所有点所需的任何时间。

相关内容