From e7ff6809a39bbaafb5d0b88b23ec330f5233ccf4 Mon Sep 17 00:00:00 2001 From: Leo McArdle Date: Mon, 28 Oct 2019 16:46:53 +0000 Subject: [PATCH] FEATURE: add SES spam header to recognised spam headers (#8254) --- config/site_settings.yml | 1 + lib/email/receiver.rb | 2 ++ spec/components/email/receiver_spec.rb | 15 +++++++++++++++ spec/fixtures/emails/spam_x_ses_spam_verdict.eml | 12 ++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 spec/fixtures/emails/spam_x_ses_spam_verdict.eml diff --git a/config/site_settings.yml b/config/site_settings.yml index 6a44f4b6099..ce1fe165750 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -969,6 +969,7 @@ email: - none - X-Spam-Flag - X-Spam-Status + - X-SES-Spam-Verdict email_prefix: "" email_site_title: "" disable_emails: diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index 724adc06ab9..eb78a0ef01c 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -301,6 +301,8 @@ module Email @mail[:x_spam_flag].to_s[/YES/i] when 'X-Spam-Status' @mail[:x_spam_status].to_s[/^Yes, /i] + when 'X-SES-Spam-Verdict' + @mail[:x_ses_spam_verdict].to_s[/FAIL/i] else false end diff --git a/spec/components/email/receiver_spec.rb b/spec/components/email/receiver_spec.rb index f563a7b8d96..811fc3839c8 100644 --- a/spec/components/email/receiver_spec.rb +++ b/spec/components/email/receiver_spec.rb @@ -1006,6 +1006,21 @@ describe Email::Receiver do expect(post.hidden_reason_id).to eq(Post.hidden_reasons[:email_spam_header_found]) end + it "creates hidden topic for X-SES-Spam-Verdict" do + SiteSetting.email_in_spam_header = 'X-SES-Spam-Verdict' + + Fabricate(:user, email: "existing@bar.com", trust_level: SiteSetting.email_in_min_trust) + expect { process(:spam_x_ses_spam_verdict) }.to change { Topic.count }.by(1) # Topic created + + topic = Topic.last + expect(topic.visible).to eq(false) + + post = Post.last + expect(post.hidden).to eq(true) + expect(post.hidden_at).not_to eq(nil) + expect(post.hidden_reason_id).to eq(Post.hidden_reasons[:email_spam_header_found]) + end + it "adds the 'elided' part of the original message when always_show_trimmed_content is enabled" do SiteSetting.always_show_trimmed_content = true diff --git a/spec/fixtures/emails/spam_x_ses_spam_verdict.eml b/spec/fixtures/emails/spam_x_ses_spam_verdict.eml new file mode 100644 index 00000000000..58f34257210 --- /dev/null +++ b/spec/fixtures/emails/spam_x_ses_spam_verdict.eml @@ -0,0 +1,12 @@ +Return-Path: +From: Foo Bar +To: category@bar.com +Subject: This is a topic from an existing user +Date: Fri, 15 Jan 2016 00:12:43 +0100 +Message-ID: <32@foo.bar.mail> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: quoted-printable +X-SES-Spam-Verdict: FAIL + +Hey, this is a topic from an existing user ;)