perl匹配语法与邮件过滤器

时间:2014-12-30 23:09:45

标签: perl

我们有一部分邮件过滤器拒绝通过电子邮件发送系统帐户以达到安全目的。我们最近创建了一个以" bin"结尾的用户。 bin用户是受限制的,但是用户,比如l.parrbin,通过以下语法标记:

my @sysaccounts = qw(
   root bin daemon adm lp sync shutdown halt mail
   news uucp operator games gopher ftp nobody nscd
   vcsa rpc mailnull smmsp apache pcap ntp dbus
   avahi rpcusder nfsnobody sshd haldaemon xfs defang
   clamav monit mysql decode webmaster mailer-daemon
   nagios
);

foreach $acct(@sysaccounts){
  if ($recip =~ /$acct\@/i){
     md_syslog('info', 'Sysaccount Discard');
     return('REJECT', "We do not accept messages to system accounts ($acct)");
  }
}

如果名称结束或以sysaccounts中的名称开头,我如何阻止上述代码返回REJECT?

1 个答案:

答案 0 :(得分:1)

尝试这样做:

if ($recip =~ /^$acct\@/i){
#              ^

在正则表达式中,^是一个,意思是行的开头(此处为字符串)