diff options
author | Sean McGivern <sean@gitlab.com> | 2017-05-03 21:58:56 +0300 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2017-05-03 22:51:10 +0300 |
commit | eb490365b589b8ace384bac617975a9031d9011c (patch) | |
tree | 976776b4e1c4a3740e2706018a499787927adb6a /lib | |
parent | 513a81ff9c67b2d62b58bf34544c76cd42cbd7b3 (diff) |
Handle incoming emails from aliases correctly
These set the 'actual' destination email in one of the Delivered-To lines, so
check those too.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/email/receiver.rb | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/gitlab/email/receiver.rb b/lib/gitlab/email/receiver.rb index c270c0ea9ff..0d6b08b5d29 100644 --- a/lib/gitlab/email/receiver.rb +++ b/lib/gitlab/email/receiver.rb @@ -57,9 +57,8 @@ module Gitlab end def key_from_additional_headers(mail) - references = ensure_references_array(mail.references) - - find_key_from_references(references) + find_key_from_references(mail) || + find_key_from_delivered_to_header(mail) end def ensure_references_array(references) @@ -75,12 +74,19 @@ module Gitlab end end - def find_key_from_references(references) - references.find do |mail_id| + def find_key_from_references(mail) + ensure_references_array(mail.references).find do |mail_id| key = Gitlab::IncomingEmail.key_from_fallback_message_id(mail_id) break key if key end end + + def find_key_from_delivered_to_header(mail) + Array(mail[:delivered_to]).find do |header| + key = Gitlab::IncomingEmail.key_from_address(header.value) + break key if key + end + end end end end |