diff options
author | francis <francis> | 2009-04-27 02:07:42 +0000 |
---|---|---|
committer | francis <francis> | 2009-04-27 02:07:42 +0000 |
commit | bb4044ed9f56e3d52f96afca5642419361942dc1 (patch) | |
tree | 802479d588f634d859f44d0b1d9904c3c0801612 | |
parent | d93270d9307a4798f93f0d8acddf08bcf4ab11b6 (diff) |
Don't allow reply to Auto_Reply emails
-rw-r--r-- | app/models/incoming_message.rb | 9 | ||||
-rw-r--r-- | spec/models/incoming_message_spec.rb | 50 |
2 files changed, 53 insertions, 6 deletions
diff --git a/app/models/incoming_message.rb b/app/models/incoming_message.rb index f0072899a..1813949de 100644 --- a/app/models/incoming_message.rb +++ b/app/models/incoming_message.rb @@ -19,7 +19,7 @@ # Copyright (c) 2007 UK Citizens Online Democracy. All rights reserved. # Email: francis@mysociety.org; WWW: http://www.mysociety.org/ # -# $Id: incoming_message.rb,v 1.200 2009-04-21 10:18:22 francis Exp $ +# $Id: incoming_message.rb,v 1.201 2009-04-27 02:07:42 francis Exp $ # TODO # Move some of the (e.g. quoting) functions here into rblib, as they feel @@ -1129,14 +1129,11 @@ class IncomingMessage < ActiveRecord::Base # reject postmaster - authorities seem to nearly always not respond to # email to postmaster, and it tends to only happen after delivery failure. + # likewise Mailer-Daemon, Auto_Reply... prefix = email prefix =~ /^(.*)@/ prefix = $1 - if !prefix.nil? && prefix == 'postmaster' - return false - end - # likewise Mailer-Daemon - if !prefix.nil? && prefix == 'Mailer-Daemon' + if !prefix.nil? && ['postmaster', 'mailer-daemon', 'auto_reply'].include?(prefix.downcase) return false end diff --git a/spec/models/incoming_message_spec.rb b/spec/models/incoming_message_spec.rb index b84df3c0e..6e905988d 100644 --- a/spec/models/incoming_message_spec.rb +++ b/spec/models/incoming_message_spec.rb @@ -57,6 +57,56 @@ describe IncomingMessage, " folding quoted parts of emails" do end +describe IncomingMessage, " checking validity to reply to" do + it "says a valid email is fine" do + @mail = mock("mail") + @mail.stub!(:from_addrs).and_return( [ TMail::Address.parse("team@mysociety.org") ] ) + @incoming_message = IncomingMessage.new() + @incoming_message.stub!(:mail).and_return(@mail) + + @incoming_message.valid_to_reply_to?.should be_true + end + + it "says postmaster email is bad" do + @mail = mock("mail") + @mail.stub!(:from_addrs).and_return( [ TMail::Address.parse("postmaster@mysociety.org") ] ) + @incoming_message = IncomingMessage.new() + @incoming_message.stub!(:mail).and_return(@mail) + + @incoming_message.valid_to_reply_to?.should be_false + end + + it "says Mailer-Daemon email is bad" do + @mail = mock("mail") + @mail.stub!(:from_addrs).and_return( [ TMail::Address.parse("Mailer-Daemon@mysociety.org") ] ) + @incoming_message = IncomingMessage.new() + @incoming_message.stub!(:mail).and_return(@mail) + + @incoming_message.valid_to_reply_to?.should be_false + end + + it "says case mangled MaIler-DaemOn email is bad" do + @mail = mock("mail") + @mail.stub!(:from_addrs).and_return( [ TMail::Address.parse("MaIler-DaemOn@mysociety.org") ] ) + @incoming_message = IncomingMessage.new() + @incoming_message.stub!(:mail).and_return(@mail) + + @incoming_message.valid_to_reply_to?.should be_false + end + + it "says Auto_Reply email is bad" do + @mail = mock("mail") + @mail.stub!(:from_addrs).and_return( [ TMail::Address.parse("Auto_Reply@mysociety.org") ] ) + @incoming_message = IncomingMessage.new() + @incoming_message.stub!(:mail).and_return(@mail) + + @incoming_message.valid_to_reply_to?.should be_false + end + + +end + + |