Why not do a simple rule rather than inventing some Perl code? header TO_SPECIFIC_EMAIL To:addr ~= '(?:\bus...@example.com|\bus...@example.com|\bus...@example.com)' describe TO_SPECIFIC_EMAIL Mail to a specific email address score TO_SPECIFIC_EMAIL -2
header TO_SPECIFIC_DOMAIN To:addr '(?:'\@example1\.com | \@example2\.com | \@example3\.com)' describe TO_SPECIFIC_DOMAIN Mail to specific email domain score TO_SPECIFIC_DOMAIN -2 or possibly header TO_SPECIFIC_DOMAIN To:addr '\@(?:example1\.com | example2\.com | example3\.com)$' Loren ----- Original Message ----- From: Joey J To: users@spamassassin.apache.org Sent: Wednesday, January 11, 2023 3:39 PM Subject: Rule Help - not sure what is wrong with my syntax Hello All, I created this rule to check for email addresses matching a list to get added some negative value. I also tried it with just domains so it would be more efficient, but I can't seem to get them to run. Any suggestions? header TO_SPECIFIC_EMAIL eval:check_to_specific_email() describe TO_SPECIFIC_EMAIL Mail to a specific email address score TO_SPECIFIC_EMAIL -2 sub check_to_specific_email { my ($self) = @_; my $to = lc($self->get('To:addr')); my $list_of_address = qr/us...@example.com|us...@example.com|us...@example.com/; if ($to =~ $list_of_address) { return 1; } return 0; } -------------------------------------------------------------------- This version was to simply check for the domain matches, but can't seem to get it to work -------------------------------------------------------------------- header TO_SPECIFIC_DOMAIN eval:check_to_specific_domain() describe TO_SPECIFIC_DOMAIN Mail to specific email domain score TO_SPECIFIC_DOMAIN -2 sub check_to_specific_domain { my ($self) = @_; my $to = lc($self->get('To:addr')); if ($to =~ /\@example1\.com$|\@example2\.com$|\@example3\.com$/) { return 1; } return 0; } -- Thanks! Joey