From 56089c48566f09789e3044f8739452a976bf0a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Mon, 11 Apr 2016 22:47:34 +0200 Subject: [PATCH] FEATURE: new 'auto_generated_whitelist' site setting --- config/locales/server.en.yml | 1 + config/site_settings.yml | 3 +++ lib/email/receiver.rb | 1 + spec/components/email/receiver_spec.rb | 5 +++++ spec/fixtures/emails/auto_generated_whitelisted.eml | 11 +++++++++++ 5 files changed, 21 insertions(+) create mode 100644 spec/fixtures/emails/auto_generated_whitelisted.eml diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index e447ca7822d..e9fb197e787 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -1169,6 +1169,7 @@ en: delete_email_logs_after_days: "Delete email logs after (N) days. 0 to keep indefinitely" max_emails_per_day_per_user: "Maximum number of emails to send users per day. 0 to disable the limit" enable_staged_users: "Automatically create staged users when processing incoming emails." + auto_generated_whitelist: "List of email addresses that won't be checked for auto-generated content." manual_polling_enabled: "Push emails using the API for email replies." pop3_polling_enabled: "Poll via POP3 for email replies." diff --git a/config/site_settings.yml b/config/site_settings.yml index a82948acd9f..83ccc16f830 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -565,6 +565,9 @@ email: min: 0 max_emails_per_day_per_user: 100 enable_staged_users: true + auto_generated_whitelist: + default: '' + type: list files: max_image_size_kb: diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index 40e21e9b43c..873bafa527a 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -118,6 +118,7 @@ module Email end def is_auto_generated? + return false if SiteSetting.auto_generated_whitelist.split('|').include?(@from_email) @mail[:precedence].to_s[/list|junk|bulk|auto_reply/i] || @mail[:from].to_s[/(mailer-?daemon|postmaster|noreply)@/i] || @mail.header.to_s[/auto[\-_]?(response|submitted|replied|reply|generated|respond)|holidayreply|machinegenerated/i] diff --git a/spec/components/email/receiver_spec.rb b/spec/components/email/receiver_spec.rb index 1003bcb2e82..ed3e3b4081a 100644 --- a/spec/components/email/receiver_spec.rb +++ b/spec/components/email/receiver_spec.rb @@ -142,6 +142,11 @@ describe Email::Receiver do expect(topic.posts.last.raw).to eq("This email was sent with an invalid from header field.") end + it "doesn't raise an AutoGeneratedEmailError when the mail is auto generated but is whitelisted" do + SiteSetting.auto_generated_whitelist = "foo@bar.com|discourse@bar.com" + expect { process(:auto_generated_whitelisted) }.not_to raise_error + end + describe 'Unsubscribing via email' do let(:last_email) { ActionMailer::Base.deliveries.last } diff --git a/spec/fixtures/emails/auto_generated_whitelisted.eml b/spec/fixtures/emails/auto_generated_whitelisted.eml new file mode 100644 index 00000000000..730ffe36ff6 --- /dev/null +++ b/spec/fixtures/emails/auto_generated_whitelisted.eml @@ -0,0 +1,11 @@ +Return-Path: +From: White List Ed +To: reply+4f97315cc828096c9cb34c6f1a0d6fe8@bar.com +Date: Fri, 15 Jan 2016 00:12:43 +0100 +Message-ID: <1@foo.bar.mail> +Auto-Submitted: auto-generated +Mime-Version: 1.0 +Content-Type: text/plain +Content-Transfer-Encoding: 7bit + +Lorem ipsum dolor sit amet, consectetur adipiscing elit.