aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfrancis <francis>2009-04-27 02:07:42 +0000
committerfrancis <francis>2009-04-27 02:07:42 +0000
commitbb4044ed9f56e3d52f96afca5642419361942dc1 (patch)
tree802479d588f634d859f44d0b1d9904c3c0801612
parentd93270d9307a4798f93f0d8acddf08bcf4ab11b6 (diff)
Don't allow reply to Auto_Reply emails
-rw-r--r--app/models/incoming_message.rb9
-rw-r--r--spec/models/incoming_message_spec.rb50
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
+
+