From c88797bf0eb670097df86902fb41351c5a2ae5d1 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Fri, 6 Dec 2019 13:29:39 +0100 Subject: [PATCH] FIX: Ignore DMARC for emails sent to mailing list mirror --- lib/email/receiver.rb | 2 +- spec/components/email/receiver_spec.rb | 8 ++++++++ spec/fixtures/emails/mailinglist_dmarc_fail.eml | 13 +++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/emails/mailinglist_dmarc_fail.eml diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index 836405aae50..06b2700cdfb 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -199,7 +199,7 @@ module Email @hidden_reason_id ||= if is_spam? Post.hidden_reasons[:email_spam_header_found] - elsif auth_res_action == :hide + elsif !sent_to_mailinglist_mirror? && auth_res_action == :hide Post.hidden_reasons[:email_authentication_result_header] else nil diff --git a/spec/components/email/receiver_spec.rb b/spec/components/email/receiver_spec.rb index 400f72385c7..b4b95ae52ca 100644 --- a/spec/components/email/receiver_spec.rb +++ b/spec/components/email/receiver_spec.rb @@ -1422,6 +1422,14 @@ describe Email::Receiver do expect { process("mailinglist_unsubscribe") }.to_not change { ActionMailer::Base.deliveries.count } end + + it "ignores dmarc fails" do + expect { process("mailinglist_dmarc_fail") }.to change { Topic.count } + + post = Topic.last.first_post + expect(post.hidden).to eq(false) + expect(post.hidden_reason_id).to be_nil + end end it "tries to fix unparsable email addresses in To and CC headers" do diff --git a/spec/fixtures/emails/mailinglist_dmarc_fail.eml b/spec/fixtures/emails/mailinglist_dmarc_fail.eml new file mode 100644 index 00000000000..d64617e4e55 --- /dev/null +++ b/spec/fixtures/emails/mailinglist_dmarc_fail.eml @@ -0,0 +1,13 @@ +Authentication-Results: example.com; dmarc=fail +From: alice@foo.com +To: list@example.com +Subject: mailinglist mirror +Date: Mon, 16 Oct 2017 09:18:32 +0100 +Message-ID: +Precedence: list +List-Id: Example List +Content-Transfer-Encoding: 7bit +Content-Type: text/plain; charset="us-ascii" +Sender: list-bounces@example.com + +I love Discourse's mailinglist mirror feature.