I asked ChatGPT how to test for a "Dear 'username'". After a bit of
work, I got working code. ChatGPT knows perl.
I already had a Perl file EvalTests.pm file with customized Perl eval
functions, so I threw it in there. Otherwise, you'll need to create
your own file with the proper headers.
sub check_body_for_username {
my ($self, $permsgstatus) = @_;
my $to = $permsgstatus->get('To:addr');
return 0 unless $to;
my ($username) = $to =~ /([^@]+)/;
return 0 unless $username;
# Check if the username is in the body of the email
my $body = $permsgstatus->get_decoded_stripped_body_text_array();
foreach my $line (@$body) {
if ($line =~ /^(Dear|Hi|Hello) \Q$username\E\b/i) {
return 1;
}
}
return 0;
}
header DEAR_USERNAME eval:check_body_for_username()
On 7/17/2024 11:10 PM, Grant Taylor via users wrote:
On 7/17/24 18:04, Matija Nalis wrote:
I.e. would you consider it to be significantly less likely to be spam
if it contained "Dear Elizabeth," while being addressed to
"mark@domain" instead of to "elizabeth@domain" ?
I've seen quite a bit of spam that opens message bodies with:
<salutation> <local part>
Where <salutation> is "Dear" or some other greeting, often language
specific and <local part> is the local part of the email address.
Something like the following is probably a good indication that it's
spam:
--8<--
Dear ux37932,
I've missed talking to you, what is your opinion of <URL>? Please
check it out and let me know what you think.
-->8--
If there was any doubt about the paragraph, the "ux37932" makes it
quite evident to a human that the name in the salutation is not real.
This is ESPECIALLY true when the name in the salutation is identical,
byte for byte, including case, as the local part of the email address.