svn commit: r1936735 - spamassassin/trunk/lib/Mail/SpamAssassin
[email protected] Thu, 30 Jul 2026 14:39:13 -0000
| Newsgroups | gmane.mail.spam.spamassassin.cvs |
|---|---|
| Message-ID | <178542235376.336670.15290238763176697908@svn03-he-fi> |
Author: gbechis
Date: Thu Jul 30 14:39:13 2026
New Revision: 1936735
Log:
when we rewrite the envelope, use headers with the same case as the original email
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm Thu Jul 30 12:45:05 2026 (r1936734)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Message.pm Thu Jul 30 14:39:13 2026 (r1936735)
@@ -496,6 +496,23 @@ sub get_pristine_header {
}
}
+=item get_pristine_header_name()
+
+Returns the header field name as it actually appears (case-wise) in the
+pristine headers of the message, for a given case-insensitive header name.
+If there are multiple occurrences, the last one is used, consistent with
+get_pristine_header(). If the header isn't found, the passed-in name is
+returned unchanged.
+
+=cut
+
+sub get_pristine_header_name {
+ my ($self, $hdr) = @_;
+
+ my(@names) = $self->{pristine_headers} =~ /^(\Q$hdr\E)[ \t]*:/smgi;
+ return @names ? $names[-1] : $hdr;
+}
+
=item get_mbox_separator()
Returns the mbox separator found in the message, or undef if there
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm Thu Jul 30 12:45:05 2026 (r1936734)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm Thu Jul 30 14:39:13 2026 (r1936735)
@@ -1263,6 +1263,13 @@ sub rewrite_report_safe {
my $msgid = $self->{msg}->get_pristine_header('Message-Id');
my $date = $self->{msg}->get_pristine_header("Date");
+ my $from_name = $self->{msg}->get_pristine_header_name("From");
+ my $to_name = $self->{msg}->get_pristine_header_name("To");
+ my $cc_name = $self->{msg}->get_pristine_header_name("Cc");
+ my $subject_name = $self->{msg}->get_pristine_header_name("Subject");
+ my $msgid_name = $self->{msg}->get_pristine_header_name('Message-Id');
+ my $date_name = $self->{msg}->get_pristine_header_name("Date");
+
# It'd be nice to do this with a foreach loop, but with only three
# possibilities right now, it's easier not to...
@@ -1295,12 +1302,12 @@ sub rewrite_report_safe {
}
# add report headers to message
- $newmsg .= "From: $from" if defined $from;
- $newmsg .= "To: $to" if defined $to;
- $newmsg .= "Cc: $cc" if defined $cc;
- $newmsg .= "Subject: $subject" if defined $subject;
- $newmsg .= "Date: $date" if defined $date;
- $newmsg .= "Message-Id: $msgid" if defined $msgid;
+ $newmsg .= "$from_name: $from" if defined $from;
+ $newmsg .= "$to_name: $to" if defined $to;
+ $newmsg .= "$cc_name: $cc" if defined $cc;
+ $newmsg .= "$subject_name: $subject" if defined $subject;
+ $newmsg .= "$date_name: $date" if defined $date;
+ $newmsg .= "$msgid_name: $msgid" if defined $msgid;
$newmsg .= $self->_get_added_headers('headers_spam');
if (defined $self->{conf}->{report_safe_copy_headers}) {