From 1cc19f3f8ffe37e341e219884c6856210ba6fa52 Mon Sep 17 00:00:00 2001 From: "Eric Wong (Contractor, The Linux Foundation)" Date: Mon, 19 Mar 2018 08:14:45 +0000 Subject: watchmaildir: use content_digest to generate Message-Id This can probably be moved to Import for code reuse. --- lib/PublicInbox/WatchMaildir.pm | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) (limited to 'lib') diff --git a/lib/PublicInbox/WatchMaildir.pm b/lib/PublicInbox/WatchMaildir.pm index c72d9396..f2d3db95 100644 --- a/lib/PublicInbox/WatchMaildir.pm +++ b/lib/PublicInbox/WatchMaildir.pm @@ -12,6 +12,8 @@ use PublicInbox::Import; use PublicInbox::MDA; use PublicInbox::Spawn qw(spawn); use File::Temp qw//; +use PublicInbox::MID qw(mids); +use PublicInbox::ContentId qw(content_digest); sub new { my ($class, $config) = @_; @@ -144,25 +146,14 @@ sub _remove_spam { }) } -# used to hash the relevant portions of a message when there are conflicts -sub _hash_mime2 { - my ($mime) = @_; - require Digest::SHA; - my $dig = Digest::SHA->new('SHA-1'); - $dig->add($mime->header_obj->header_raw('Subject')); - $dig->add($mime->body_raw); - $dig->hexdigest; -} - sub _force_mid { my ($mime) = @_; - # probably a bad idea, but we inject a Message-Id if - # one is missing, here.. - my $mid = $mime->header_obj->header_raw('Message-Id'); - if (!defined $mid || $mid =~ /\A\s*\z/) { - $mid = '<' . _hash_mime2($mime) . '@generated>'; - $mime->header_set('Message-Id', $mid); - } + my $hdr = $mime->header_obj; + my $mids = mids($hdr); + return if @$mids; + my $dig = content_digest($mime); + my $mid = $dig->clone->hexdigest . '@localhost'; + $hdr->header_set('Message-Id', $mid); } sub _try_path { -- cgit v1.2.3-24-ge0c7