如何在smtp-gated中仅接受来自一个域的邮件?

时间:2009-11-05 07:31:56

标签: regex perl email

我需要一个与Perl兼容的正则表达式来过滤我的电子邮件与smtp-gated。我只想允许一个域名('mydomain.com')并拒绝其他所有域名。我该如何以万无一失的方式做到这一点? (regex_reject_mail_from)

我知道这个问题中途属于serverfault,但基本上它是一个Perl正则表达式问题所以我认为它更适合stackoverflow。

修改

这应该匹配所以我可以拒绝它:

"Someone" <someone@somedomain.com>

这不应该匹配:

"Me" <me@mydomain.com>

这也不应该匹配:

you@mydomain.com

-

3 个答案:

答案 0 :(得分:3)

我建议如下:

\b[A-Z0-9._%+-]+@(?!mydomain\.com)[A-Z0-9.-]+\.[A-Z]{2,6}\b

使用/ i选项使其不区分大小写。

这将匹配mydomain.com之后没有@的大多数有效(和一些无效)电子邮件地址。请记住,正则表达式的电子邮件验证很难。

答案 1 :(得分:2)

如果您的正则表达式将应用于MTA通信中的MAIL FROM行,那么您无需关注完整的“电子邮件地址”规范。 MAIL FROM行只是'&lt;&gt;'中包含的电子邮件地址,因此任何测试@ mydomain.com&gt;的正则表达式都是应该工作。

答案 2 :(得分:1)

\b(?:"[ a-zA-Z]+")?\s*<?[a-zA-Z0-9_.]@(?!mydomain\.com)\w+(?:\.\w{2,})+>?\b

更新:请注意,这个正则表达式是完美的fa {9,} r。查看official regex的电子邮件地址以获取更多信息(向下滚动到&lt; p /&gt;标题为RFC 2822)。