aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/mail_server_log.rb6
-rw-r--r--spec/models/mail_server_log_spec.rb5
2 files changed, 10 insertions, 1 deletions
diff --git a/app/models/mail_server_log.rb b/app/models/mail_server_log.rb
index 755584b90..3e7e0beb4 100644
--- a/app/models/mail_server_log.rb
+++ b/app/models/mail_server_log.rb
@@ -122,10 +122,14 @@ class MailServerLog < ActiveRecord::Base
# We also check the email prefix so that we could, for instance, separately handle a staging and production
# instance running on the same server with different email prefixes.
+ # We also allow an arbitrary subdomain on the incoming email domain. Why you may ask? Well, if for instance
+ # you're using a "cloud" email provider to handle emails for your domain but you only want to pass the
+ # Alaveteli emails to your own server you need to forward the Alaveteli emails to a different domain, in this
+ # case a subdomain. Then, you make the MX records for the subdomain point at your server.
def MailServerLog.email_addresses_on_line(line)
prefix = Regexp::quote(Configuration::incoming_email_prefix)
domain = Regexp::quote(Configuration::incoming_email_domain)
- line.scan(/#{prefix}request-[^\s]+@#{domain}/).sort.uniq
+ line.scan(/#{prefix}request-[^\s]+@\w*\.?#{domain}/).sort.uniq
end
def MailServerLog.request_sent?(ir)
diff --git a/spec/models/mail_server_log_spec.rb b/spec/models/mail_server_log_spec.rb
index d0a1d202f..bcd74c380 100644
--- a/spec/models/mail_server_log_spec.rb
+++ b/spec/models/mail_server_log_spec.rb
@@ -89,6 +89,11 @@ describe MailServerLog do
it "ignores an email where the . is substituted for something else" do
MailServerLog.email_addresses_on_line("foi+request-14-e0e09f97@exampledcom").should be_empty
end
+
+ it "accept emails with an arbitrary subdomain" do
+ MailServerLog.email_addresses_on_line("foi+request-14-e0e09f97@foo.example.com").should ==
+ ["foi+request-14-e0e09f97@foo.example.com"]
+ end
end
context "Postfix" do