我正在尝试解决与Exchange Online的电子邮件域共存问题。基本上我需要它,因此,当邮件发送到一个租户(domain.com)并转发给另一租户(newdomain.com)时,To和/或CC标头将替换为端点(newdomain.com)电子邮件地址,然后再发送他们被交付到最终目的地。
例如:
1)Gmail(或任何用户)向sally.sue@domain.com发送并发送电子邮件,查找该域的MX,并将其传递到domain.com的Office 365租户
2)该Office 365租户已设置为将电子邮件转发到sally.sue@newdomain.com(不同的租户)
3)当邮件到达sally在newdomain.com上起诉时,她单击“全部答复”,原始发件人及其电子邮件地址(sally.sue@domain.com)被添加到电子邮件的“收件人:”行中。
解决方法是使用带有Proofpoint的标头替换,如下所述,该替换仅在单个用户的基础上起作用。下面的整个问题是我试图让RegEx(这是唯一的解决方案)对大量用户起作用。
我需要转换以下用户的电子邮件地址:
username@domain.com到username@newdomain.com
必须使用ProofPoint(云托管的MTA)完成此操作。他们已经能够提供某种答案,但是没有用。
Proofpoint支持建议使用以下方法:
Header Name : To
Find Value : domain\.com$
Replace : newdomain\.com$ or just newdomain.com
以上两种方法均无效。在这两种情况下,值都将被完全忽略。
这似乎是在找到值:
Header Name : To
Find Value : \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
Replace : $1@fake.com
但是以上内容只是简单地将To:行(在电子邮件中)替换为文字字符串:$1@fake.com
我还需要能够在电子邮件地址中找到小写字母和数字。我相信上面的例子只能找到上限。
我需要执行以下操作:
Header Name : To
Find Value : \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b (find users email address, domain)
Replace : user.name@newdomain.com
这适用于大量用户,因此无法为每个用户手动更新或创建单独的规则。
如果我确实创建了一条单独的规则,则它会按预期工作,但如上所述,这需要手动键入每个用户的“收件人:”地址及其新的所需“收件人:”地址。
此解决方案几乎可以正常工作:Regex to replace email address domains?
答案 0 :(得分:0)
尽管我没有专门使用Office365,但我有一些从一般经验中得出的结论。
首先,用于替换的正则表达式通常需要具有“捕获组”。通常用括号表示,如:
match : \b([A-Z0-9._%-]+)@domain.com$
replacement : $1@newdomain.com
这个想法是,替换模式中的$1
被匹配模式中()
中发现的内容所替换。
请注意,某些正则表达式引擎使用不同的符号进行替换,因此它可能是\1@newdomain.com
或类似的符号。另请注意,某些正则表达式引擎需要转义括号,因此匹配的模式可能类似于\b\([A-Z0-9._%-]+\)@domain.com$
第二,如果要将-
包含在“字符类”集合中(即,在方括号[]
中),则-
应该位于第一;否则会造成歧义,因为-
也用于一系列字符。有问题的正则表达式引擎可能不在乎,但我建议将匹配模式编写为:
\b([-A-Z0-9._%]+)@domain.com$
这样,第一个-
本身就很明确,因为在它之前没有任何内容可以指示范围的开始。
第三,对于小写字母,最简单的方法是扩展字符集以包含它们,如下所示:
[-A-Za-z0-9._%]