spamassassin-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Olivier Coutu <olivier.co...@zerospam.ca>
Subject PerMsgStatus get('From') returns different values in the same email
Date Tue, 06 Dec 2016 16:19:01 GMT
I have a plugin that has the following lines:

my $header_from = $pms->get('From', 0);
dbg("ZS_HeadersCompare: $functname($rulename): header_from = $header_from")

I am looking to get the entire "From" field, which should be pretty 
straightforward. I am running this on an email with the following "from":

From: "jerome.o.simard@gmail.com" <jerome.o.simard@gmail.com>

When I run it on machine A (Ubuntu 12.04, SpamAssassin version 3.4.1, 
Perl version 5.14.2), the outcome is as expected:

ocoutu@hostA:~$ spamassassin -D 2>&1 < bug.eml | grep "header_from ="
déc  6 09:47:25.873 [25961] dbg: ZS_HeadersCompare: get_header_from(__Z_SAME_FROM_TRIM_DOM):
header_from = "jerome.o.simard@gmail.com" <jerome.o.simard@gmail.com>
déc  6 09:47:25.883 [25961] dbg: ZS_HeadersCompare: get_header_from(__Z_SAME_FROM_SLD): header_from
= "jerome.o.simard@gmail.com" <jerome.o.simard@gmail.com>
déc  6 09:47:25.884 [25961] dbg: ZS_HeadersCompare: get_header_from(__Z_REPLY_TO_IS_FROM_TRIM_DOM):
header_from = "jerome.o.simard@gmail.com" <jerome.o.simard@gmail.com>
[...]

However, if I run that on machine B (Ubuntu 16.04, SpamAssassin version 
3.4.1, Perl version 5.22.1) that I have recently created, after the 
first call to the /get//('From', 0)/ which returns the correct value, 
the following calls return the values with an added underscore between 
the from_name and the from_address:

ocoutu@hostB:~$ spamassassin -D 2>&1 < bug.eml | grep "header_from ="
déc  6 09:45:28.331 [13600] dbg: ZS_HeadersCompare: get_header_from(__Z_SAME_FROM_TRIM_DOM):
header_from = "jerome.o.simard@gmail.com" <jerome.o.simard@gmail.com>
déc  6 09:45:28.332 [13600] dbg: ZS_HeadersCompare: get_header_from(__Z_SAME_FROM_SLD): header_from
= "jerome.o.simard@gmail.com"_<jerome.o.simard@gmail.com>
déc  6 09:45:28.334 [13600] dbg: ZS_HeadersCompare: get_header_from(__Z_REPLY_TO_IS_FROM_TRIM_DOM):
header_from = "jerome.o.simard@gmail.com"_<jerome.o.simard@gmail.com>
[...]

This can also be illustrated with the /__FROM_RUNION/ rule, which I have 
not modified in any way:

déc  6 10:59:36.149 [24034] dbg: rules: ran header rule __FROM_RUNON ======> got hit:
""jerome.o.simard@gmail.com"_<jerome"

Since this rule is called by the built-in config files with /From =~ 
/\S+<\w+//, it appears like the problem is not just with the way I am 
calling it.

I have a similar piece of code that uses /$pms->get('To', 0)/ and has 
the same issue.

The bug appears whether the domain is a freemailer or not, but does not 
happen when there is no from_name.

I am looking for tips as to where the problem might be. Is it possible 
that my /get/ or other calls are modifying the PerMsgStatus? Could it be 
related to patches that have been applied with the Ubuntu install?

-- 
Olivier Coutu
noc@zerospam.ca


Mime
View raw message