Project

General

Profile

Actions

Defect #30785

closed

Mail handler does not ignore emails sent from emission email address if Setting.mail_from includes display name

Added by Go MAEDA about 5 years ago. Updated about 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Email receiving
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:
Fixed
Affected version:

Description

According to the comment at source:tags/4.0.1/app/models/mail_handler.rb#L93, mail handler is supposed to ignore emails sent from emission email address (Setting.mail_from). It behaves as expected if Setting.mail_from only includes an email address like "". However, it does not ignore the emails if Setting.mail_from includes a display name like "Joe Bloggs <>". The reason is that the code at source:tags/4.0.1/app/models/mail_handler.rb#L94 don't assume the format other than "".

  • OK: joe@example.com
  • NG: <joe@example.com>
  • NG: Joe Bloggs <joe@example.com>
  • NG: joe@example.com (Joe Bloggs)

Files

30785-fix.diff (2.05 KB) 30785-fix.diff Go MAEDA, 2019-02-12 13:06
30785-fix-v2.patch (1.92 KB) 30785-fix-v2.patch Go MAEDA, 2019-02-17 06:01

Related issues

Related to Redmine - Defect #14792: Don't add a display name and extra angle brackets in List-Id header fieldClosedGo MAEDA

Actions
Actions #1

Updated by Go MAEDA about 5 years ago

  • Related to Defect #14792: Don't add a display name and extra angle brackets in List-Id header field added
Actions #2

Updated by Go MAEDA about 5 years ago

This fix works for ordinary email addresses.

Index: app/models/mail_handler.rb
===================================================================
--- app/models/mail_handler.rb    (revision 17853)
+++ app/models/mail_handler.rb    (working copy)
@@ -91,7 +91,7 @@
     @handler_options = options
     sender_email = email.from.to_a.first.to_s.strip
     # Ignore emails received from the application emission address to avoid hell cycles
-    if sender_email.casecmp(Setting.mail_from.to_s.strip) == 0
+    if sender_email.casecmp(Setting.mail_from.to_s.gsub(/(?:.*<|>.*|\(.*\)|\s)/, '')) == 0
       if logger
         logger.info  "MailHandler: ignoring email from Redmine emission address [#{sender_email}]" 
       end
Actions #3

Updated by Go MAEDA about 5 years ago

  • File 30785-fix.diff added

Here is a patch to fix this issue.

The patch adds a new method Setting.mail_from_addess to extract an email address from the value of Setting.mail_from. I think it is useful to fix #14792 and implement #5913.

Actions #4

Updated by Go MAEDA about 5 years ago

  • File deleted (30785-fix.diff)
Actions #5

Updated by Go MAEDA about 5 years ago

Actions #6

Updated by Go MAEDA about 5 years ago

  • Target version set to 4.0.2

Setting the target version to 4.0.2.

Actions #7

Updated by Go MAEDA about 5 years ago

  • Subject changed from Mail handler may not ignore emails sent from emission email address to Mail handler does not ignore emails sent from emission email address if Setting.mail_from includes display name
  • Status changed from New to Resolved
  • Assignee set to Go MAEDA
  • Resolution set to Fixed

Committed.

Actions #8

Updated by Go MAEDA about 5 years ago

  • Status changed from Resolved to Closed
Actions #9

Updated by Go MAEDA about 5 years ago

  • Status changed from Closed to Reopened

Go MAEDA wrote:

The patch adds a new method Setting.mail_from_addess to extract an email address from the value of Setting.mail_from. I think it is useful to fix #14792 and implement #5913.

#5913 and #14792 have been fixed without using newly added Setting.mail_from_addess method. Only MailHandler#receive uses the method now and I don't think other methods will use it in the future.

Therefore, I think r17862 should be reverted before releasing Redmine 4.0.2 and this issue should be fixed like the following:

diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb
index 9298e1b12..aed977bbd 100755
--- a/app/models/mail_handler.rb
+++ b/app/models/mail_handler.rb
@@ -91,7 +91,7 @@ class MailHandler < ActionMailer::Base
     @handler_options = options
     sender_email = email.from.to_a.first.to_s.strip
     # Ignore emails received from the application emission address to avoid hell cycles
-    if sender_email.casecmp(Setting.mail_from.to_s.strip) == 0
+    if sender_email.casecmp(Setting.mail_from.to_s.gsub(/(?:.*<|>.*|\(.*\))/, '').strip) == 0
       if logger
         logger.info  "MailHandler: ignoring email from Redmine emission address [#{sender_email}]" 
       end
Actions #10

Updated by Go MAEDA about 5 years ago

Go MAEDA wrote:

Therefore, I think r17862 should be reverted before releasing Redmine 4.0.2 and this issue should be fixed like the following:

[...]

Attaching a new patch. This patch can be applied after reverting r17862.

Actions #11

Updated by Go MAEDA about 5 years ago

  • Status changed from Reopened to Closed

Reverted r17862 and applied the new patch in r17879.

Actions

Also available in: Atom PDF