Fixed issue #811 - Unprocessable Email (without email address in from header) and issue #969 - Mail processing error (with broken mail headers).

This commit is contained in:
Martin Edenhofer 2017-05-16 14:03:42 +02:00
parent c5d3052e39
commit defdb972a1
7 changed files with 285 additions and 1 deletions

View file

@ -713,6 +713,7 @@ module Mail
class Field
def raw_value
value = Encode.conv('utf8', @raw_value)
return value if value.blank?
value.sub(/^.+?:(\s|)/, '')
end
end

View file

@ -93,6 +93,7 @@ module Channel::Filter::IdentifySender
next if !mail[item.to_sym].addrs
items = mail[item.to_sym].addrs
items.each { |address_data|
next if address_data.address.blank?
user_create(
firstname: address_data.display_name,
lastname: '',
@ -114,7 +115,7 @@ module Channel::Filter::IdentifySender
if recipient =~ /^(.+?)<(.+?)>/
display_name = $1
end
next if address.empty?
next if address.blank?
user_create(
firstname: display_name,
lastname: '',
@ -126,6 +127,9 @@ module Channel::Filter::IdentifySender
end
def self.user_create(data)
if data[:email] !~ /@/
data[:email] += '@local'
end
user = User.find_by(email: data[:email].downcase)
if !user
user = User.find_by(login: data[:email].downcase)

11
test/fixtures/mail52.box vendored Normal file
View file

@ -0,0 +1,11 @@
Return-Path: <>
From: MAILER-DAEMON@example.com (Mail Delivery System)
Content-Type: text/plain;
charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Subject: Undelivered Mail Returned to Sender
To: you@example.com
Date: Fri, 4 May 2018 14:01:03 +0200
Message-Id: <20170516045518.E63C61882@example.com>
some test

110
test/fixtures/mail53.box vendored Normal file
View file

@ -0,0 +1,110 @@
Delivered-To: feedback_en@example.com
Return-Path: <>
Delivered-To: feedback_en@example.com
Received: from director15.mail.dfw1a.example.net ([1.1.1.1])
by store512a.mail.iad3a.example.net (Dovecot) with LMTP id ZXf9G3t1tFhAbgAA7aV/mQ
for <feedback_en@example.com>; Mon, 27 Feb 2017 13:52:43 -0500
Received: from smtp20.gate.dfw1a ([1.1.1.1])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
by director15.mail.dfw1a.example.net (Dovecot) with LMTP id wnMQKQhztFggHQAAREf9Rg
; Mon, 27 Feb 2017 13:52:43 -0500
Return-Path: <>
X-Spam-Threshold: 95
X-Spam-Score: 0
X-Spam-Flag: NO
X-Virus-Scanned: OK
X-MessageSniffer-Scan-Result: 0
X-MessageSniffer-Rules: 0-0-0-7364-c
X-CMAE-Scan-Result: 0
X-CNFS-Analysis: v=2.2 cv=IuBcS/3g c=1 sm=1 tr=0 a=scmLJpidNJD1CDJrwSPlCg==:117 a=KiCxJD0x+Pe5VASQKmYoJrcyuOo=:19 a=HpWyMqnf4hoA:10 a=HFcG5fkciocA:10 a=n2v9WMKugxEA:10 a=ZZnuYtJkoWoA:10 a=vX-N2HuyvEP-EhXdXtwA:9 a=GF4HiIEFAAAA:8 a=l1aLL7fvAAAA:8 a=m9wmmNRzG3RnX796Uw4A:9 a=CjuIK1q_8ugA:10 a=fSRcLqLQAAAA:8 a=n3WKkpLOXN7oL6whe2YA:9 a=oWI6YT3fg6wA:10 a=JGRhF4uQAAAA:8 a=YoI8Y-owAAAA:8 a=xW0offs3AAAA:8 a=cuXalqQTuEIKHF7dZIwA:9 a=hHE8zlonNCKEIyoE4Yab:22 a=NPV240f7YeaO3CCHy0GZ:22 a=6Ojsp-TqxlhusgkSIWu7:22 a=kcHpxALSlUaRulRdPvIa:22 a=-zJbGfyDzD99htaT2oAx:22 a=_3VCzNpgjGu_f5hyB7JW:22
X-Orig-To: feedback@example.com
X-Originating-Ip: [XX.example.example.example]
Authentication-Results: smtp20.gate.dfw1a.example.net; iprev=pass policy.iprev="XX.example.example.example"; spf=neutral smtp.mailfrom="" smtp.helo="smtp136.dfw.example.com"; dkim=none (message not signed) header.d=none
X-Classification-ID: ebb2f874-fd1d-11e6-968d-001ec95b9664-1-1
Received: from [XX.example.example.example] ([XX.example.example.example:58318] helo=smtp136.dfw.example.com)
by smtp20.gate.dfw1a.example.net (envelope-from <>)
(ecelerity 4.2.1.56364 r(Core:4.2.1.14)) with ESMTPS (cipher=DHE-RSA-AES256-GCM-SHA384)
id 50/40-17519-B7574B85; Mon, 27 Feb 2017 13:52:43 -0500
Received: by smtp30.relay.dfw1a.example.com (SMTP Server)
id 23593E043D; Mon, 27 Feb 2017 13:52:43 -0500 (EST)
Date: Mon, 27 Feb 2017 13:52:43 -0500 (EST)
From: MAILER-DAEMON (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: feedback@example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="342ADE03AD.1488221563/smtp30.relay.dfw1a.example.com"
Message-Id: <20170227185243.23593E043D@smtp30.relay.dfw1a.example.com>
This is a MIME-encapsulated message.
--342ADE03AD.1488221563/smtp30.relay.dfw1a.example.com
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii
This is the mail system at host smtp30.relay.dfw1a.example.com.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<john_example@example.com>: connect to example.com[XX.example.example.example]:25: Connection timed
out
--342ADE03AD.1488221563/smtp30.relay.dfw1a.example.com
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; smtp30.relay.dfw1a.example.com
X-SMTP-Server-Queue-ID: 342ADE03AD
X-SMTP-Server-Sender: rfc822; feedback@example.com
Arrival-Date: Mon, 27 Feb 2017 05:35:21 -0500 (EST)
Final-Recipient: rfc822; john_example@example.com
Original-Recipient: rfc822;john_example@example.com
Action: failed
Status: 4.4.1
Diagnostic-Code: X-SMTP-Server; connect to example.com[XX.example.example.example]:25:
Connection timed out
--342ADE03AD.1488221563/smtp30.relay.dfw1a.example.com
Content-Description: Undelivered Message Headers
Content-Type: text/rfc822-headers
Return-Path: <feedback@example.com>
Received: from smtp30.relay.dfw1a.example.com (localhost [127.0.0.1])
by smtp30.relay.dfw1a.example.com (SMTP Server) with ESMTP id 342ADE03AD
for <john_example@example.com>; Mon, 27 Feb 2017 05:35:21 -0500 (EST)
X-Auth-ID: feedback_en@example.com
Received: by smtp30.relay.dfw1a.example.com (Authenticated sender: feedback_en-AT-example.com) with ESMTPSA id BC4C5E016E
for <john_example@example.com>; Mon, 27 Feb 2017 05:35:20 -0500 (EST)
X-Sender-Id: feedback_en@example.com
Received: from help.example.com (example.node.dockerapp.io [example.example.example.example])
(using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384)
by 0.0.0.0:25 (trex/5.7.12);
Mon, 27 Feb 2017 05:35:21 -0500
Date: Mon, 27 Feb 2017 10:35:19 +0000
From: Oliver Grahl | Support <feedback@example.com>
To: John Stewart <john_example@example.com>
Message-ID: <20170227103514.188.920664@help.example.com>
In-Reply-To: <92a8950479d35e18cb39263e9a35de3b@www.example.com>
References: <92a8950479d35e18cb39263e9a35de3b@www.example.com>
<92a8950479d35e18cb39263e9a35de3b@www.example.com>
Subject: RE: Feedback after Uninstallation [Ticket#62188]
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="--==_mimepart_58b400e72487d_32c43ffa32ed5c3010848";
charset=UTF-8
Content-Transfer-Encoding: 7bit
Organization: example
X-Powered-By: Zammad - Helpdesk/Support (https://zammad.org/)
X-Mailer: Zammad Mail Service
--342ADE03AD.1488221563/smtp30.relay.dfw1a.example.com--

77
test/fixtures/mail54.box vendored Normal file
View file

@ -0,0 +1,77 @@
From Karoline.Smith@example.com Wed Apr 19 20:56:33 2017
Return-Path: <Karoline.Smith@example.com>
Delivered-To: unknown
Received: from betelgeuse.example.de (1.1.1.1:993) by zmd-clx with IMAP4-SSL; 19 Apr 2017 20:56:33 -0000
Delivered-To: climax-hussein@example.com
Received: (qmail 31952 invoked from network); 5 Apr 2017 07:45:31 -0000
Received: from unknown (HELO mail1.bemta3.example.com) (2.1.1.1) by betelgeuse.example.de with SMTP; 5 Apr 2017 07:45:31 -0000
Received: from [85.158.138.179] by server-17.bemta-3.example.com id D5/73-04270-A90A4E85; Wed, 05 Apr 2017 07:45:30 +0000
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrIKsWRWlGSWpSXmKPExsWi75nTrTtrwZM
Ig5drOCwmrVzP5sDoseXbDeYAxijWzLyk/IoE1owFz6ezFkxKrWjafpWpgfFOchcjF4eQwDZG
iZbLL1ggnEOMEg3T97FCOIcZJX7/WsDcxcgJ5GxmlDg5wwvEZhPwkPhx6DUbiC0iYChxfOFUd
hBbWEBWYsW5JYwQcTmJqY/OA9VwANluEivnqIGEWQRUJN69u8cCYvMKhEpsPziBCWLXUxaJk/
Mvgc3hBJp/ueUn2BxGoJkbNpwHu4FZQFxi07PvrCC2hICAxJI9EHEJAVGJl4//sYLsYhbIk7j
2Ww5ivqDEyZlPWCDO15bYuXs60wRGkVlIJs1C6JiFpAMirCmxfpc+RLWixJTuh+wQtoZE65y5
7MjiCxjZVzFqFKcWlaUW6RoZ6SUVZaZnlOQmZuboGhoY6+WmFhcnpqfmJCYV6yXn525iBEZXP
QMD4w7GqSf8DjFKcjApifIq+DyJEOJLyk+pzEgszogvKs1JLT7EKMPBoSTB6zQPKCdYlJqeWp
GWmQOMc5i0BAePkghv53ygNG9xQWJucWY6ROoUoy7HsX1H3jAJseTl56VKifMqgBQJgBRllOb
BjYClnEuMslLCvIwMDAxCPAWpRbmZJajyrxjFORiVhHmngEzhycwrgdv0CugIJqAjntx5CHJE
SSJCSqqBscVE4ZBQvBPTgb3tc0qzH931fTz53yz2ffrMx++rrthVtq6zRfDx8k0LDeekF0+0v
HJXc0o19w+JLmPmI3OeCl+rETt/8MmjAxarDBw3i7X///H873fr1JJEf0feTxoJO27vYNF065
WL2aW/TrRKrlLj19r1H4uNT+mcsr7Fd77e0ynR7MPSdiWW4oxEQy3mouJEAFAagtA0AwAA
X-Env-Sender: Karoline.Smith@example.com
X-Msg-Ref: server-9.tower-169.example.com!1491378329!108245161!2
X-Originating-IP: [3.1.1.1]
X-StarScan-Received:
X-StarScan-Version: 9.4.12; banners=-,-,-
X-VirusChecked: Checked
Received: (qmail 4383 invoked from network); 5 Apr 2017 07:45:30 -0000
Received: from vgdpm13vr.example.com (HELO voxe03hw.internal.example.com) (4.1.1.1)
by server-9.tower-169.example.com with SMTP; 5 Apr 2017 07:45:30 -0000
Received: from VOEXH09W.internal.example.com (5.1.1.1) by
edge1.example.com (195.232.244.48) with Microsoft SMTP Server (TLS) id
15.0.1263.5; Wed, 5 Apr 2017 09:45:23 +0200
Received: from VOEXC01W.internal.example.com (6.1.1.1) by
VOEXH09W.internal.example.com (5.1.1.1) with Microsoft SMTP Server
(TLS) id 15.0.1263.5; Wed, 5 Apr 2017 09:45:23 +0200
Received: from AVOEXH03W.internal.example.com (7.1.1.1) by
VOEXC01W.internal.example.com (6.1.1.1) with Microsoft SMTP Server
(TLS) id 14.3.294.0; Wed, 5 Apr 2017 09:45:22 +0200
Received: from VOEXM32W.internal.example.com ([8.1.1.1]) by
AVOEXH03W.internal.example.com ([7.1.1.1]) with mapi id
14.03.0294.000; Wed, 5 Apr 2017 09:45:20 +0200
From: "Smith, Karoline, Example DE" <Karoline.Smith@example.com>
To: Maruan Break <hussein@example.com>
Subject: AW: One Net Business
Thread-Topic: One Net Business
Thread-Index: AQHSrJW/Plvrkd7dvEe1pr4cBZSIz6Gz0rpmgAAAyYaAASlrAIABavZw
Date: Wed, 5 Apr 2017 07:45:19 +0000
Message-ID: <D98C7360C87D6642B509616EFFD4ED2D421C542C@voexm32w.internal.example.com>
References: <D98C7360C87D6642B509616EFFD4ED2D421C0403@voexm32w.internal.example.com>,<5C1F374E-737B-46BA-97F4-4829F1DF5E95@example.com>
<A954ADC0-855B-4B71-8C2B-950CD6CBB428@example.com>,<45715EA78C7B5D4EAA1B775B56507F9B8C7715@VOEXM22W.internal.example.com>
<071EAD34-9F10-4D76-9405-C1B3445A0C56@example.com>,<45715EA78C7B5D4EAA1B775B56507F9B8C78E3@VOEXM22W.internal.example.com>,<A28AE2B3-2393-419F-85AF-D0F6CBF8E6A1@example.com>,<58B6BD0C-6E26-43F9-815B-70E3233C0935@example.com>
<1FDE0238-F38F-40D1-B7B7-F24ECFFBE5A1@example.com>
<1D7115FC-2F22-486C-B4B5-820D8A64A4D2@example.com>
In-Reply-To: <1D7115FC-2F22-486C-B4B5-820D8A64A4D2@example.com>
Accept-Language: de-DE, en-US
Content-Language: de-DE
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Content-Type: multipart/alternative;
boundary="_000_D98C7360C87D6642B509616EFFD4ED2D421C542Cvoexm32winterna_"
MIME-Version: 1.0
X-getmail-retrieved-from-mailbox: INBOX
--_000_D98C7360C87D6642B509616EFFD4ED2D421C542Cvoexm32winterna_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
c29tZSB0ZXh0
--_000_D98C7360C87D6642B509616EFFD4ED2D421C542Cvoexm32winterna_
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64
PGI+c29tZSB0ZXh0PC9iPg==
--_000_D98C7360C87D6642B509616EFFD4ED2D421C542Cvoexm32winterna_--

View file

@ -1068,6 +1068,37 @@ end
subject: 'AW: OTRS / Anfrage OTRS Einführung/Präsentation [Ticket#11545]',
},
},
{
data: IO.binread('test/fixtures/mail52.box'),
body_md5: 'ad0c0727cd7d023ec9065daea03335f7',
params: {
from: 'MAILER-DAEMON@example.com (Mail Delivery System)',
from_email: 'MAILER-DAEMON@example.com',
from_display_name: 'Mail Delivery System',
subject: 'Undelivered Mail Returned to Sender',
},
},
{
data: IO.binread('test/fixtures/mail53.box'),
body_md5: '104da300f70d5683f007951c9780c83d',
params: {
from: 'MAILER-DAEMON (Mail Delivery System)',
from_email: 'MAILER-DAEMON',
from_display_name: 'Mail Delivery System',
subject: 'Undelivered Mail Returned to Sender',
},
},
{
data: IO.binread('test/fixtures/mail54.box'),
body_md5: '5872ddcdfdf6bfe40f36cd0408fca667',
params: {
from: '"Smith, Karoline, Example DE" <Karoline.Smith@example.com>',
from_email: 'Karoline.Smith@example.com',
from_display_name: 'Smith, Karoline, Example DE',
subject: 'AW: One Net Business',
body: 'no visible content'
},
},
]
count = 0

View file

@ -2399,6 +2399,56 @@ Some Text',
],
},
},
{
data: IO.binread('test/fixtures/mail52.box'),
success: true,
result: {
0 => {
priority: '2 normal',
title: 'Undelivered Mail Returned to Sender',
},
1 => {
from: 'MAILER-DAEMON@example.com (Mail Delivery System)',
sender: 'Customer',
type: 'email',
},
},
verify: {
users: [
{
firstname: 'Mail',
lastname: 'Delivery System',
fullname: 'Mail Delivery System',
email: 'mailer-daemon@example.com',
},
],
},
},
{
data: IO.binread('test/fixtures/mail53.box'),
success: true,
result: {
0 => {
priority: '2 normal',
title: 'Undelivered Mail Returned to Sender',
},
1 => {
from: 'MAILER-DAEMON (Mail Delivery System)',
sender: 'Customer',
type: 'email',
},
},
verify: {
users: [
{
firstname: 'Mail',
lastname: 'Delivery System',
fullname: 'Mail Delivery System',
email: 'mailer-daemon@local',
},
],
},
},
]
assert_process(files)
end