sup 0.21.0 → 0.22.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTORS +18 -17
- data/History.txt +8 -0
- data/Rakefile +0 -1
- data/bin/sup +0 -1
- data/bin/sup-add +1 -2
- data/bin/sup-config +0 -1
- data/bin/sup-dump +0 -1
- data/bin/sup-import-dump +1 -2
- data/bin/sup-sync +0 -1
- data/bin/sup-sync-back-maildir +0 -1
- data/bin/sup-tweak-labels +1 -2
- data/contrib/colorpicker.rb +0 -2
- data/devel/profile.rb +0 -1
- data/ext/mkrf_conf_xapian.rb +0 -2
- data/lib/sup.rb +0 -1
- data/lib/sup/crypto.rb +7 -6
- data/lib/sup/draft.rb +1 -1
- data/lib/sup/mode.rb +2 -2
- data/lib/sup/modes/thread_index_mode.rb +5 -1
- data/lib/sup/modes/thread_view_mode.rb +4 -3
- data/lib/sup/util.rb +1 -75
- data/lib/sup/version.rb +1 -1
- data/sup.gemspec +1 -1
- data/test/{messages → fixtures}/bad-content-transfer-encoding-1.eml +0 -0
- data/test/{messages → fixtures}/binary-content-transfer-encoding-2.eml +0 -0
- data/test/fixtures/blank-header-fields.eml +71 -0
- data/test/{unit/fixtures → fixtures}/contacts.txt +0 -0
- data/test/fixtures/malicious-attachment-names.eml +55 -0
- data/test/fixtures/missing-from-to.eml +18 -0
- data/test/{messages → fixtures}/missing-line.eml +0 -0
- data/test/fixtures/multi-part-2.eml +72 -0
- data/test/fixtures/multi-part.eml +61 -0
- data/test/fixtures/no-body.eml +18 -0
- data/test/fixtures/simple-message.eml +29 -0
- data/test/gnupg_test_home/key_ecc.gen +13 -0
- data/test/gnupg_test_home/pubring.gpg +0 -0
- data/test/gnupg_test_home/regen_keys.sh +3 -0
- data/test/test_crypto.rb +11 -1
- data/test/test_helper.rb +6 -3
- data/test/test_message.rb +25 -383
- data/test/test_messages_dir.rb +3 -9
- data/test/unit/test_contact.rb +1 -1
- metadata +41 -15
data/lib/sup/version.rb
CHANGED
data/sup.gemspec
CHANGED
@@ -55,7 +55,7 @@ SUP: please note that our old mailing lists have been shut down,
|
|
55
55
|
s.add_runtime_dependency "highline"
|
56
56
|
s.add_runtime_dependency "trollop", ">= 1.12"
|
57
57
|
s.add_runtime_dependency "lockfile"
|
58
|
-
s.add_runtime_dependency "mime-types", "
|
58
|
+
s.add_runtime_dependency "mime-types", "> 2.0"
|
59
59
|
s.add_runtime_dependency "locale", "~> 2.0"
|
60
60
|
s.add_runtime_dependency "chronic", "~> 0.9.1"
|
61
61
|
s.add_runtime_dependency "unicode", "~> 0.4.4"
|
File without changes
|
File without changes
|
@@ -0,0 +1,71 @@
|
|
1
|
+
Return-Path: <monitor-list-bounces@widget.com>
|
2
|
+
X-Original-To: nobody@localhost
|
3
|
+
Delivered-To: nobody@localhost.eng.widget.com
|
4
|
+
Received: from localhost (localhost.localdomain [127.0.0.1])
|
5
|
+
by soquel.eng.widget.com (Postfix) with ESMTP id 609BC13C0DB1
|
6
|
+
for <nobody@localhost>; Thu, 19 Mar 2009 13:43:21 -0700 (PDT)
|
7
|
+
MIME-Version: 1.0
|
8
|
+
Received: from pa-excas-vip.widget.com [10.16.67.200]
|
9
|
+
by localhost with IMAP (fetchmail-6.2.5)
|
10
|
+
for nobody@localhost (single-drop); Thu, 19 Mar 2009 13:43:21 -0700 (PDT)
|
11
|
+
Received: from pa-exht01.widget.com (10.113.81.167) by pa-excaht11.widget.com
|
12
|
+
(10.113.81.197) with Microsoft SMTP Server (TLS) id 8.1.311.2; Thu, 19 Mar
|
13
|
+
2009 13:42:30 -0700
|
14
|
+
Received: from mailman2.widget.com (10.16.64.159) by pa-exht01.widget.com
|
15
|
+
(10.113.81.167) with Microsoft SMTP Server id 8.1.336.0; Thu, 19 Mar 2009
|
16
|
+
13:42:30 -0700
|
17
|
+
Received: by mailman2.widget.com (Postfix) id 47095AE30856; Thu, 19 Mar 2009
|
18
|
+
13:42:29 -0700 (PDT)
|
19
|
+
Received: from countchocula.widget.com (localhost.localdomain [127.0.0.1]) by
|
20
|
+
mailman2.widget.com (Postfix) with ESMTP id 5F782ABC5948; Thu, 19 Mar 2009
|
21
|
+
13:42:28 -0700 (PDT)
|
22
|
+
Received: from mailhost4.widget.com (mailhost4.widget.com [10.16.67.124]) by
|
23
|
+
mailman2.widget.com (Postfix) with ESMTP id 6CDCCABC5948 for
|
24
|
+
<monitor-list@mailman2.widget.com>; Thu, 19 Mar 2009 13:42:26 -0700 (PDT)
|
25
|
+
Received: by mailhost4.widget.com (Postfix) id 2364AC9AC4; Thu, 19 Mar 2009
|
26
|
+
13:42:26 -0700 (PDT)
|
27
|
+
Received: from pa-exht01.widget.com (pa-exht01.widget.com [10.113.81.167]) by
|
28
|
+
mailhost4.widget.com (Postfix) with ESMTP id 17A68C9AC3 for
|
29
|
+
<monitor-list@widget.com>; Thu, 19 Mar 2009 13:42:26 -0700 (PDT)
|
30
|
+
Received: from PA-EXMBX04.widget.com ([10.113.81.142]) by pa-exht01.widget.com
|
31
|
+
([10.113.81.167]) with mapi; Thu, 19 Mar 2009 13:42:26 -0700
|
32
|
+
From: Some User <someuser@widget.com>
|
33
|
+
To: "monitor-list@widget.com" <monitor-list@widget.com>
|
34
|
+
Sender: "monitor-list-bounces@widget.com" <monitor-list-bounces@widget.com>
|
35
|
+
Date: Thu, 19 Mar 2009 13:42:25 -0700
|
36
|
+
Subject: Looking for a mac
|
37
|
+
Thread-Topic: Looking for a mac
|
38
|
+
Thread-Index: AQHJqNM1xIqqjNRWuUCUBaxzPFK5eQ==
|
39
|
+
Message-ID:
|
40
|
+
<D3C12B2AD838B44DA9D6B2CA334246D011E72A73A4@PA-EXMBX04.widget.com>
|
41
|
+
List-Help: <mailto:monitor-list-request@widget.com?subject=help>
|
42
|
+
List-Subscribe: <http://mailman2.widget.com/mailman/listinfo/monitor-list>,
|
43
|
+
<mailto:monitor-list-request@widget.com?subject=subscribe>
|
44
|
+
List-Unsubscribe:
|
45
|
+
<http://mailman2.widget.com/mailman/listinfo/monitor-list>,
|
46
|
+
<mailto:monitor-list-request@widget.com?subject=unsubscribe>
|
47
|
+
Accept-Language: en-US
|
48
|
+
Content-Language: en-US
|
49
|
+
X-MS-Exchange-Organization-AuthAs: Anonymous
|
50
|
+
X-MS-Exchange-Organization-AuthSource: pa-exht01.widget.com
|
51
|
+
X-MS-Has-Attach:
|
52
|
+
X-Auto-Response-Suppress: All
|
53
|
+
X-MS-TNEF-Correlator:
|
54
|
+
acceptlanguage: en-US
|
55
|
+
delivered-to: monitor-list@widget.com
|
56
|
+
errors-to: monitor-list-bounces@widget.com
|
57
|
+
list-id: engineering monitor related <monitor-list.widget.com>
|
58
|
+
x-mailman-version: 2.1.8
|
59
|
+
x-beenthere: monitor-list@widget.com
|
60
|
+
x-original-to: monitor-list@mailman2.widget.com
|
61
|
+
list-post: <mailto:monitor-list@widget.com>
|
62
|
+
list-archive: <http://mailman2.widget.com/pipermail/monitor-list>
|
63
|
+
Content-Type: text/plain; charset="us-ascii"
|
64
|
+
Content-Transfer-Encoding: quoted-printable
|
65
|
+
|
66
|
+
Hi all,
|
67
|
+
|
68
|
+
Just wondering if anybody can lend me a mac to reproduce PR 384931 ?
|
69
|
+
Thanks.
|
70
|
+
|
71
|
+
Michael=
|
File without changes
|
@@ -0,0 +1,55 @@
|
|
1
|
+
From: Matthieu Rakotojaona <matthieu.rakotojaona@gmail.com>
|
2
|
+
To: reply+0007a7cb7174d1d188fcd420fce83e0f68fe03fc7416cdae92cf0000000110ce4efd92a169ce033d18e1 <reply+0007a7cb7174d1d188fcd420fce83e0f68fe03fc7416cdae92cf0000000110ce4efd92a169ce033d18e1@reply.github.com>
|
3
|
+
Subject: Re: [sup] Attachment saving and special characters in filenames (#378)
|
4
|
+
In-reply-to: <sup-heliotrope/sup/issues/378@github.com>
|
5
|
+
References: <sup-heliotrope/sup/issues/378@github.com>
|
6
|
+
X-pgp-key: http://otokar.looc2011.eu/static/matthieu.rakotojaona.asc
|
7
|
+
Date: Wed, 14 Jan 2015 22:13:37 +0100
|
8
|
+
Message-Id: <1421269972-sup-5245@kpad>
|
9
|
+
User-Agent: Sup/git
|
10
|
+
Content-Transfer-Encoding: 8bit
|
11
|
+
MIME-Version: 1.0
|
12
|
+
Content-Type: multipart/mixed; boundary="=-1421270017-526778-1064-1628-1-="
|
13
|
+
|
14
|
+
|
15
|
+
--=-1421270017-526778-1064-1628-1-=
|
16
|
+
Content-Type: text/plain; charset=UTF-8
|
17
|
+
Content-Disposition: inline
|
18
|
+
|
19
|
+
Excerpts from Felix Kaiser's message of 2015-01-14 16:36:29 +0100:
|
20
|
+
> When saving attachments, sup should replace special characters when suggesting a filename to save the attachment to.
|
21
|
+
>
|
22
|
+
> I just got an attachment with a name like "foo/2.pdf". sup suggests saving it to /home/fxkr/foo/2.pdf (and fails to save it, of course, if /home/fxkr/foo isn't a directory).
|
23
|
+
>
|
24
|
+
> I haven't tested the "Save All" feature, but I hope nothing bad happens when there's an attachment called "../../../../../../../home/fxkr/.bashrc" ;-)
|
25
|
+
>
|
26
|
+
> ---
|
27
|
+
> Reply to this email directly or view it on GitHub:
|
28
|
+
> https://github.com/sup-heliotrope/sup/issues/378
|
29
|
+
|
30
|
+
For tests, here's an email with an attachment filename set to
|
31
|
+
sup/.travis.yml (really, this time)
|
32
|
+
|
33
|
+
--
|
34
|
+
Matthieu Rakotojaona
|
35
|
+
|
36
|
+
--=-1421270017-526778-1064-1628-1-=
|
37
|
+
Content-Disposition: attachment; filename="sup/.travis.yml"
|
38
|
+
Content-Type: text/x-yaml; name="sup/.travis.yml"
|
39
|
+
Content-Transfer-Encoding: 8bit
|
40
|
+
|
41
|
+
language: ruby
|
42
|
+
|
43
|
+
rvm:
|
44
|
+
- 2.1.1
|
45
|
+
- 2.0.0
|
46
|
+
- 1.9.3
|
47
|
+
|
48
|
+
before_install:
|
49
|
+
- sudo apt-get update -qq
|
50
|
+
- sudo apt-get install -qq uuid-dev uuid libncursesw5-dev libncursesw5 gnupg2 pandoc
|
51
|
+
- git submodule update --init --recursive
|
52
|
+
|
53
|
+
script: bundle exec rake travis
|
54
|
+
|
55
|
+
--=-1421270017-526778-1064-1628-1-=--
|
@@ -0,0 +1,18 @@
|
|
1
|
+
Return-path: <fake_sender@example.invalid>
|
2
|
+
Envelope-to: fake_receiver@localhost
|
3
|
+
Delivery-date: Sun, 09 Dec 2007 21:48:19 +0200
|
4
|
+
Received: from fake_sender by localhost.localdomain with local (Exim 4.67)
|
5
|
+
(envelope-from <fake_sender@example.invalid>)
|
6
|
+
id 1J1S8R-0006lA-MJ
|
7
|
+
for fake_receiver@localhost; Sun, 09 Dec 2007 21:48:19 +0200
|
8
|
+
Date: Sun, 9 Dec 2007 21:48:19 +0200
|
9
|
+
Subject: Re: Test message subject
|
10
|
+
Message-ID: <20071209194819.GA25972@example.invalid>
|
11
|
+
References: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
12
|
+
MIME-Version: 1.0
|
13
|
+
Content-Type: text/plain; charset=us-ascii
|
14
|
+
Content-Disposition: inline
|
15
|
+
In-Reply-To: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
16
|
+
User-Agent: Sup/0.3
|
17
|
+
|
18
|
+
Test message!
|
File without changes
|
@@ -0,0 +1,72 @@
|
|
1
|
+
Return-path: <vim-mac-return-3938-fake_receiver=localhost@vim.org>
|
2
|
+
Envelope-to: fake_receiver@localhost
|
3
|
+
Delivery-date: Wed, 14 Jun 2006 19:22:54 +0300
|
4
|
+
Received: from localhost ([127.0.0.1] helo=localhost.localdomain)
|
5
|
+
by localhost.localdomain with esmtp (Exim 4.60)
|
6
|
+
(envelope-from <vim-mac-return-3938-fake_receiver=localhost@vim.org>)
|
7
|
+
id 1FqXk3-0006jM-48
|
8
|
+
for fake_receiver@localhost; Wed, 14 Jun 2006 18:57:15 +0300
|
9
|
+
Received: from pop.gmail.com
|
10
|
+
by localhost.localdomain with POP3 (fetchmail-6.3.2)
|
11
|
+
for <fake_receiver@localhost> (single-drop); Wed, 14 Jun 2006 18:57:15 +0300 (EEST)
|
12
|
+
X-Gmail-Received: 8ee0fe5f895736974c042c8eaf176014b1ba7b88
|
13
|
+
Delivered-To: fake_receiver@localhost
|
14
|
+
Received: by 10.49.8.16 with SMTP id l16cs11327nfi;
|
15
|
+
Sun, 26 Mar 2006 19:31:56 -0800 (PST)
|
16
|
+
Received: by 10.66.224.8 with SMTP id w8mr2172862ugg;
|
17
|
+
Sun, 26 Mar 2006 19:31:56 -0800 (PST)
|
18
|
+
Received: from foobar.math.fu-berlin.de (foobar.math.fu-berlin.de [160.45.45.151])
|
19
|
+
by mx.gmail.com with SMTP id j3si553645ugd.2006.03.26.19.31.56;
|
20
|
+
Sun, 26 Mar 2006 19:31:56 -0800 (PST)
|
21
|
+
Received-SPF: neutral (gmail.com: 160.45.45.151 is neither permitted nor denied by best guess record for domain of vim-mac-return-3938-fake_receiver=localhost@vim.org)
|
22
|
+
Message-Id: <44275cac.74a494f1.315a.ffff825cSMTPIN_ADDED@mx.gmail.com>
|
23
|
+
Received: (qmail 24265 invoked by uid 200); 27 Mar 2006 02:32:39 -0000
|
24
|
+
Mailing-List: contact vim-mac-help@vim.org; run by ezmlm
|
25
|
+
Precedence: bulk
|
26
|
+
Delivered-To: mailing list vim-mac@vim.org
|
27
|
+
Received: (qmail 7913 invoked from network); 26 Mar 2006 23:37:34 -0000
|
28
|
+
Received: from cpe-138-217-96-243.vic.bigpond.net.au (HELO vim.org) (138.217.96.243)
|
29
|
+
by foobar.math.fu-berlin.de with SMTP; 26 Mar 2006 23:37:34 -0000
|
30
|
+
From: fake_sender@example.invalid
|
31
|
+
To: vim-mac@vim.org
|
32
|
+
Subject: Mail Delivery (failure vim-mac@vim.org)
|
33
|
+
Date: Mon, 27 Mar 2006 10:29:39 +1000
|
34
|
+
MIME-Version: 1.0
|
35
|
+
Content-Type: multipart/related;
|
36
|
+
type="multipart/alternative";
|
37
|
+
boundary="----=_NextPart_000_001B_01C0CA80.6B015D10"
|
38
|
+
X-Priority: 3
|
39
|
+
X-MSMail-Priority: Normal
|
40
|
+
|
41
|
+
------=_NextPart_000_001B_01C0CA80.6B015D10
|
42
|
+
Content-Type: multipart/alternative;
|
43
|
+
boundary="----=_NextPart_001_001C_01C0CA80.6B015D10"
|
44
|
+
|
45
|
+
------=_NextPart_001_001C_01C0CA80.6B015D10
|
46
|
+
Content-Type: text/plain;
|
47
|
+
charset="iso-8859-1"
|
48
|
+
Content-Transfer-Encoding: quoted-printable
|
49
|
+
|
50
|
+
------=_NextPart_001_001C_01C0CA80.6B015D10
|
51
|
+
Content-Type: text/html;
|
52
|
+
charset="iso-8859-1"
|
53
|
+
Content-Transfer-Encoding: quoted-printable
|
54
|
+
|
55
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
56
|
+
<HTML><HEAD>
|
57
|
+
<META content=3D"text/html; charset=3Diso-8859-1" =
|
58
|
+
http-equiv=3DContent-Type>
|
59
|
+
<META content=3D"MSHTML 5.00.2920.0" name=3DGENERATOR>
|
60
|
+
<STYLE></STYLE>
|
61
|
+
</HEAD>
|
62
|
+
<BODY bgColor=3D#ffffff>If the message will not displayed automatically,<br>
|
63
|
+
follow the link to read the delivered message.<br><br>
|
64
|
+
Received message is available at:<br>
|
65
|
+
<a href=3Dcid:031401Mfdab4$3f3dL780$73387018@57W81fa70Re height=3D0 width=3D0>www.vim.org/inbox/vim-mac/read.php?sessionid-18559</a>
|
66
|
+
<iframe
|
67
|
+
src=3Dcid:031401Mfdab4$3f3dL780$73387018@57W81fa70Re height=3D0 width=3D0></iframe>
|
68
|
+
<DIV> </DIV></BODY></HTML>
|
69
|
+
|
70
|
+
------=_NextPart_001_001C_01C0CA80.6B015D10--
|
71
|
+
|
72
|
+
------=_NextPart_000_001B_01C0CA80.6B015D10--
|
@@ -0,0 +1,61 @@
|
|
1
|
+
From fake_receiver@localhost Sun Dec 09 22:33:37 +0200 2007
|
2
|
+
Subject: Re: Test message subject
|
3
|
+
From: Fake Receiver <fake_receiver@localhost>
|
4
|
+
To: Fake Sender <fake_sender@example.invalid>
|
5
|
+
References: <E1J1Rvb-0006k2-CE@localhost.localdomain> <20071209194819.GA25972example.invalid>
|
6
|
+
In-Reply-To: <20071209194819.GA25972example.invalid>
|
7
|
+
Date: Sun, 09 Dec 2007 22:33:37 +0200
|
8
|
+
Message-Id: <1197232243-sup-2663example.invalid>
|
9
|
+
User-Agent: Sup/0.3
|
10
|
+
Content-Type: multipart/mixed; boundary="=-1197232418-506707-26079-6122-2-="
|
11
|
+
MIME-Version: 1.0
|
12
|
+
|
13
|
+
|
14
|
+
--=-1197232418-506707-26079-6122-2-=
|
15
|
+
Content-Type: text/plain; charset=utf-8
|
16
|
+
Content-Disposition: inline
|
17
|
+
|
18
|
+
Excerpts from Fake Sender's message of Sun Dec 09 21:48:19 +0200 2007:
|
19
|
+
> Test message!
|
20
|
+
|
21
|
+
Thanks for the message!
|
22
|
+
--=-1197232418-506707-26079-6122-2-=
|
23
|
+
Content-Disposition: attachment; filename="HACKING"
|
24
|
+
Content-Type: application/octet-stream; name="HACKING"
|
25
|
+
Content-Transfer-Encoding: base64
|
26
|
+
|
27
|
+
UnVubmluZyBTdXAgbG9jYWxseQotLS0tLS0tLS0tLS0tLS0tLS0tCkludm9r
|
28
|
+
ZSBpdCBsaWtlIHRoaXM6CgpydWJ5IC1JIGxpYiAtdyBiaW4vc3VwCgpZb3Un
|
29
|
+
bGwgaGF2ZSB0byBpbnN0YWxsIGFsbCBnZW1zIG1lbnRpb25lZCBpbiB0aGUg
|
30
|
+
UmFrZWZpbGUgKGxvb2sgZm9yIHRoZSBsaW5lCnNldHRpbmcgcC5leHRyYV9k
|
31
|
+
ZXBzKS4gSWYgeW91J3JlIG9uIGEgRGViaWFuIG9yIERlYmlhbi1iYXNlZCBz
|
32
|
+
eXN0ZW0gKGUuZy4KVWJ1bnR1KSwgeW91J2xsIGhhdmUgdG8gbWFrZSBzdXJl
|
33
|
+
IHlvdSBoYXZlIGEgY29tcGxldGUgUnVieSBpbnN0YWxsYXRpb24sCmVzcGVj
|
34
|
+
aWFsbHkgbGlic3NsLXJ1YnkuCgpDb2Rpbmcgc3RhbmRhcmRzCi0tLS0tLS0t
|
35
|
+
LS0tLS0tLS0KCi0gRG9uJ3Qgd3JhcCBjb2RlIHVubGVzcyBpdCByZWFsbHkg
|
36
|
+
YmVuZWZpdHMgZnJvbSBpdC4gVGhlIGRheXMgb2YKICA4MC1jb2x1bW4gZGlz
|
37
|
+
cGxheXMgYXJlIGxvbmcgb3Zlci4gQnV0IGRvIHdyYXAgY29tbWVudHMgYW5k
|
38
|
+
IG90aGVyCiAgdGV4dCBhdCB3aGF0ZXZlciBFbWFjcyBtZXRhLVEgZG9lcy4K
|
39
|
+
LSBJIGxpa2UgcG9ldHJ5IG1vZGUuCi0gVXNlIHt9IGZvciBvbmUtbGluZXIg
|
40
|
+
YmxvY2tzIGFuZCBkby9lbmQgZm9yIG11bHRpLWxpbmUgYmxvY2tzLgoK
|
41
|
+
|
42
|
+
--=-1197232418-506707-26079-6122-2-=
|
43
|
+
Content-Disposition: attachment; filename="Manifest.txt"
|
44
|
+
Content-Type: text/plain; name="Manifest.txt"
|
45
|
+
Content-Transfer-Encoding: quoted-printable
|
46
|
+
|
47
|
+
HACKING
|
48
|
+
History.txt
|
49
|
+
LICENSE
|
50
|
+
Manifest.txt
|
51
|
+
README.txt
|
52
|
+
Rakefile
|
53
|
+
bin/sup
|
54
|
+
bin/sup-add
|
55
|
+
bin/sup-config
|
56
|
+
bin/sup-dump
|
57
|
+
bin/sup-recover-sources
|
58
|
+
bin/sup-sync
|
59
|
+
bin/sup-sync-back
|
60
|
+
|
61
|
+
--=-1197232418-506707-26079-6122-2-=--
|
@@ -0,0 +1,18 @@
|
|
1
|
+
Return-path: <fake_sender@example.invalid>
|
2
|
+
From: Fake Sender <fake_sender@example.invalid>
|
3
|
+
To: Fake Receiver <fake_receiver@localhost>
|
4
|
+
Envelope-to: fake_receiver@localhost
|
5
|
+
Delivery-date: Sun, 09 Dec 2007 21:48:19 +0200
|
6
|
+
Received: from fake_sender by localhost.localdomain with local (Exim 4.67)
|
7
|
+
(envelope-from <fake_sender@example.invalid>)
|
8
|
+
id 1J1S8R-0006lA-MJ
|
9
|
+
for fake_receiver@localhost; Sun, 09 Dec 2007 21:48:19 +0200
|
10
|
+
Date: Sun, 9 Dec 2007 21:48:19 +0200
|
11
|
+
Subject: Re: Test message subject
|
12
|
+
Message-ID: <20071209194819.GA25972@example.invalid>
|
13
|
+
References: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
14
|
+
MIME-Version: 1.0
|
15
|
+
Content-Type: text/plain; charset=us-ascii
|
16
|
+
Content-Disposition: inline
|
17
|
+
In-Reply-To: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
18
|
+
User-Agent: Sup/0.3
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Return-path: <fake_sender@example.invalid>
|
2
|
+
Envelope-to: fake_receiver@localhost
|
3
|
+
Delivery-date: Sun, 09 Dec 2007 21:48:19 +0200
|
4
|
+
Received: from fake_sender by localhost.localdomain with local (Exim 4.67)
|
5
|
+
(envelope-from <fake_sender@example.invalid>)
|
6
|
+
id 1J1S8R-0006lA-MJ
|
7
|
+
for fake_receiver@localhost; Sun, 09 Dec 2007 21:48:19 +0200
|
8
|
+
Date: Sun, 9 Dec 2007 21:48:19 +0200
|
9
|
+
Mailing-List: contact example-help@example.invalid; run by ezmlm
|
10
|
+
Precedence: bulk
|
11
|
+
List-Id: <example.list-id.example.invalid>
|
12
|
+
List-Post: <mailto:example@example.invalid>
|
13
|
+
List-Help: <mailto:example-help@example.invalid>
|
14
|
+
List-Unsubscribe: <mailto:example-unsubscribe@example.invalid>
|
15
|
+
List-Subscribe: <mailto:example-subscribe@example.invalid>
|
16
|
+
Delivered-To: mailing list example@example.invalid
|
17
|
+
Delivered-To: moderator for example@example.invalid
|
18
|
+
From: Fake Sender <fake_sender@example.invalid>
|
19
|
+
To: Fake Receiver <fake_receiver@localhost>
|
20
|
+
Subject: Re: Test message subject
|
21
|
+
Message-ID: <20071209194819.GA25972@example.invalid>
|
22
|
+
References: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
23
|
+
MIME-Version: 1.0
|
24
|
+
Content-Type: text/plain; charset=us-ascii
|
25
|
+
Content-Disposition: inline
|
26
|
+
In-Reply-To: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
27
|
+
User-Agent: Sup/0.3
|
28
|
+
|
29
|
+
Test message!
|
@@ -0,0 +1,13 @@
|
|
1
|
+
%echo Generating a standard key
|
2
|
+
Key-Type: eddsa
|
3
|
+
Key-Curve: Ed25519
|
4
|
+
Name-Real: Sup Test ECC
|
5
|
+
Name-Comment: Test ECC key
|
6
|
+
Name-Email: sup-test-ecc@foo.bar
|
7
|
+
Expire-Date: 1y
|
8
|
+
%no-protection
|
9
|
+
%pubring pubring.gpg
|
10
|
+
%secring secring.gpg
|
11
|
+
# Do a commit here, so that we can later print "done" :-)
|
12
|
+
%commit
|
13
|
+
%echo done
|
Binary file
|
data/test/test_crypto.rb
CHANGED
@@ -29,6 +29,7 @@ class TestCryptoManager < Minitest::Test
|
|
29
29
|
|
30
30
|
def setup
|
31
31
|
@from_email = 'sup-test-1@foo.bar'
|
32
|
+
@from_email_ecc = 'sup-fake-ecc@fake.fake'
|
32
33
|
@to_email = 'sup-test-2@foo.bar'
|
33
34
|
# Use test gnupg setup
|
34
35
|
@orig_gnupghome = ENV['GNUPGHOME']
|
@@ -37,7 +38,7 @@ class TestCryptoManager < Minitest::Test
|
|
37
38
|
@path = Dir.mktmpdir
|
38
39
|
Redwood::HookManager.init File.join(@path, 'hooks')
|
39
40
|
|
40
|
-
am = {:default=> {:
|
41
|
+
am = {:default=> {name: "test", email: @from_email, alternates: [@from_email_ecc]}}
|
41
42
|
Redwood::AccountManager.init am
|
42
43
|
|
43
44
|
Redwood::CryptoManager.init
|
@@ -104,6 +105,15 @@ class TestCryptoManager < Minitest::Test
|
|
104
105
|
CryptoManager.verify signed.body[0], signed.body[1], true
|
105
106
|
end
|
106
107
|
end
|
108
|
+
|
109
|
+
def test_verify_unknown_keytype
|
110
|
+
if CryptoManager.have_crypto?
|
111
|
+
signed = CryptoManager.sign @from_email_ecc, @to_email, "ABCDEFG"
|
112
|
+
assert_instance_of RMail::Message, signed
|
113
|
+
assert_instance_of String, (signed.body[1].body)
|
114
|
+
CryptoManager.verify signed.body[0], signed.body[1], true
|
115
|
+
end
|
116
|
+
end
|
107
117
|
end
|
108
118
|
|
109
119
|
end
|
data/test/test_helper.rb
CHANGED
@@ -2,6 +2,9 @@ require "rubygems" rescue nil
|
|
2
2
|
require 'minitest/autorun'
|
3
3
|
require "rr"
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
def fixture(filename)
|
6
|
+
file = ''
|
7
|
+
path = File.expand_path("../fixtures/#{filename}", __FILE__)
|
8
|
+
File.open(path) { |io| file = io.read }
|
9
|
+
file
|
10
|
+
end
|
data/test/test_message.rb
CHANGED
@@ -21,38 +21,7 @@ class TestMessage < Minitest::Test
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_simple_message
|
24
|
-
|
25
|
-
message = <<EOS
|
26
|
-
Return-path: <fake_sender@example.invalid>
|
27
|
-
Envelope-to: fake_receiver@localhost
|
28
|
-
Delivery-date: Sun, 09 Dec 2007 21:48:19 +0200
|
29
|
-
Received: from fake_sender by localhost.localdomain with local (Exim 4.67)
|
30
|
-
(envelope-from <fake_sender@example.invalid>)
|
31
|
-
id 1J1S8R-0006lA-MJ
|
32
|
-
for fake_receiver@localhost; Sun, 09 Dec 2007 21:48:19 +0200
|
33
|
-
Date: Sun, 9 Dec 2007 21:48:19 +0200
|
34
|
-
Mailing-List: contact example-help@example.invalid; run by ezmlm
|
35
|
-
Precedence: bulk
|
36
|
-
List-Id: <example.list-id.example.invalid>
|
37
|
-
List-Post: <mailto:example@example.invalid>
|
38
|
-
List-Help: <mailto:example-help@example.invalid>
|
39
|
-
List-Unsubscribe: <mailto:example-unsubscribe@example.invalid>
|
40
|
-
List-Subscribe: <mailto:example-subscribe@example.invalid>
|
41
|
-
Delivered-To: mailing list example@example.invalid
|
42
|
-
Delivered-To: moderator for example@example.invalid
|
43
|
-
From: Fake Sender <fake_sender@example.invalid>
|
44
|
-
To: Fake Receiver <fake_receiver@localhost>
|
45
|
-
Subject: Re: Test message subject
|
46
|
-
Message-ID: <20071209194819.GA25972@example.invalid>
|
47
|
-
References: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
48
|
-
MIME-Version: 1.0
|
49
|
-
Content-Type: text/plain; charset=us-ascii
|
50
|
-
Content-Disposition: inline
|
51
|
-
In-Reply-To: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
52
|
-
User-Agent: Sup/0.3
|
53
|
-
|
54
|
-
Test message!
|
55
|
-
EOS
|
24
|
+
message = fixture('simple-message.eml')
|
56
25
|
|
57
26
|
source = DummySource.new("sup-test://test_simple_message")
|
58
27
|
source.messages = [ message ]
|
@@ -62,11 +31,9 @@ EOS
|
|
62
31
|
sup_message.load_from_source!
|
63
32
|
|
64
33
|
# see how well parsing the header went
|
65
|
-
|
66
34
|
to = sup_message.to
|
67
|
-
|
68
|
-
|
69
|
-
# there should be only one item
|
35
|
+
assert(to.is_a? Array)
|
36
|
+
assert(to.first.is_a? Person)
|
70
37
|
assert_equal(1, to.length)
|
71
38
|
|
72
39
|
# sup doesn't do capitalized letters in email addresses
|
@@ -74,8 +41,7 @@ EOS
|
|
74
41
|
assert_equal("Fake Receiver", to[0].name)
|
75
42
|
|
76
43
|
from = sup_message.from
|
77
|
-
|
78
|
-
|
44
|
+
assert(from.is_a? Person)
|
79
45
|
assert_equal("fake_sender@example.invalid", from.email)
|
80
46
|
assert_equal("Fake Sender", from.name)
|
81
47
|
|
@@ -106,13 +72,8 @@ EOS
|
|
106
72
|
assert_equal(1, replytos.length)
|
107
73
|
assert_equal("E1J1Rvb-0006k2-CE@localhost.localdomain", replytos[0])
|
108
74
|
|
109
|
-
|
110
|
-
|
111
|
-
assert_equal(0, cc.length)
|
112
|
-
|
113
|
-
bcc = sup_message.bcc
|
114
|
-
# there are no bccs
|
115
|
-
assert_equal(0, bcc.length)
|
75
|
+
assert_empty(sup_message.cc)
|
76
|
+
assert_empty(sup_message.bcc)
|
116
77
|
|
117
78
|
recipient_email = sup_message.recipient_email
|
118
79
|
assert_equal("fake_receiver@localhost", recipient_email)
|
@@ -124,86 +85,22 @@ EOS
|
|
124
85
|
assert_equal(message_source_info, source_info)
|
125
86
|
|
126
87
|
# read the message body chunks
|
127
|
-
|
128
88
|
chunks = sup_message.load_from_source!
|
129
89
|
|
130
90
|
# there should be only one chunk
|
131
91
|
assert_equal(1, chunks.length)
|
132
92
|
|
133
|
-
lines = chunks
|
93
|
+
lines = chunks.first.lines
|
134
94
|
|
135
95
|
# there should be only one line
|
136
96
|
assert_equal(1, lines.length)
|
137
97
|
|
138
|
-
assert_equal("Test message!", lines
|
139
|
-
|
98
|
+
assert_equal("Test message!", lines.first)
|
140
99
|
end
|
141
100
|
|
142
101
|
def test_multipart_message
|
102
|
+
message = fixture('multi-part.eml')
|
143
103
|
|
144
|
-
message = <<EOS
|
145
|
-
From fake_receiver@localhost Sun Dec 09 22:33:37 +0200 2007
|
146
|
-
Subject: Re: Test message subject
|
147
|
-
From: Fake Receiver <fake_receiver@localhost>
|
148
|
-
To: Fake Sender <fake_sender@example.invalid>
|
149
|
-
References: <E1J1Rvb-0006k2-CE@localhost.localdomain> <20071209194819.GA25972example.invalid>
|
150
|
-
In-Reply-To: <20071209194819.GA25972example.invalid>
|
151
|
-
Date: Sun, 09 Dec 2007 22:33:37 +0200
|
152
|
-
Message-Id: <1197232243-sup-2663example.invalid>
|
153
|
-
User-Agent: Sup/0.3
|
154
|
-
Content-Type: multipart/mixed; boundary="=-1197232418-506707-26079-6122-2-="
|
155
|
-
MIME-Version: 1.0
|
156
|
-
|
157
|
-
|
158
|
-
--=-1197232418-506707-26079-6122-2-=
|
159
|
-
Content-Type: text/plain; charset=utf-8
|
160
|
-
Content-Disposition: inline
|
161
|
-
|
162
|
-
Excerpts from Fake Sender's message of Sun Dec 09 21:48:19 +0200 2007:
|
163
|
-
> Test message!
|
164
|
-
|
165
|
-
Thanks for the message!
|
166
|
-
--=-1197232418-506707-26079-6122-2-=
|
167
|
-
Content-Disposition: attachment; filename="HACKING"
|
168
|
-
Content-Type: application/octet-stream; name="HACKING"
|
169
|
-
Content-Transfer-Encoding: base64
|
170
|
-
|
171
|
-
UnVubmluZyBTdXAgbG9jYWxseQotLS0tLS0tLS0tLS0tLS0tLS0tCkludm9r
|
172
|
-
ZSBpdCBsaWtlIHRoaXM6CgpydWJ5IC1JIGxpYiAtdyBiaW4vc3VwCgpZb3Un
|
173
|
-
bGwgaGF2ZSB0byBpbnN0YWxsIGFsbCBnZW1zIG1lbnRpb25lZCBpbiB0aGUg
|
174
|
-
UmFrZWZpbGUgKGxvb2sgZm9yIHRoZSBsaW5lCnNldHRpbmcgcC5leHRyYV9k
|
175
|
-
ZXBzKS4gSWYgeW91J3JlIG9uIGEgRGViaWFuIG9yIERlYmlhbi1iYXNlZCBz
|
176
|
-
eXN0ZW0gKGUuZy4KVWJ1bnR1KSwgeW91J2xsIGhhdmUgdG8gbWFrZSBzdXJl
|
177
|
-
IHlvdSBoYXZlIGEgY29tcGxldGUgUnVieSBpbnN0YWxsYXRpb24sCmVzcGVj
|
178
|
-
aWFsbHkgbGlic3NsLXJ1YnkuCgpDb2Rpbmcgc3RhbmRhcmRzCi0tLS0tLS0t
|
179
|
-
LS0tLS0tLS0KCi0gRG9uJ3Qgd3JhcCBjb2RlIHVubGVzcyBpdCByZWFsbHkg
|
180
|
-
YmVuZWZpdHMgZnJvbSBpdC4gVGhlIGRheXMgb2YKICA4MC1jb2x1bW4gZGlz
|
181
|
-
cGxheXMgYXJlIGxvbmcgb3Zlci4gQnV0IGRvIHdyYXAgY29tbWVudHMgYW5k
|
182
|
-
IG90aGVyCiAgdGV4dCBhdCB3aGF0ZXZlciBFbWFjcyBtZXRhLVEgZG9lcy4K
|
183
|
-
LSBJIGxpa2UgcG9ldHJ5IG1vZGUuCi0gVXNlIHt9IGZvciBvbmUtbGluZXIg
|
184
|
-
YmxvY2tzIGFuZCBkby9lbmQgZm9yIG11bHRpLWxpbmUgYmxvY2tzLgoK
|
185
|
-
|
186
|
-
--=-1197232418-506707-26079-6122-2-=
|
187
|
-
Content-Disposition: attachment; filename="Manifest.txt"
|
188
|
-
Content-Type: text/plain; name="Manifest.txt"
|
189
|
-
Content-Transfer-Encoding: quoted-printable
|
190
|
-
|
191
|
-
HACKING
|
192
|
-
History.txt
|
193
|
-
LICENSE
|
194
|
-
Manifest.txt
|
195
|
-
README.txt
|
196
|
-
Rakefile
|
197
|
-
bin/sup
|
198
|
-
bin/sup-add
|
199
|
-
bin/sup-config
|
200
|
-
bin/sup-dump
|
201
|
-
bin/sup-recover-sources
|
202
|
-
bin/sup-sync
|
203
|
-
bin/sup-sync-back
|
204
|
-
|
205
|
-
--=-1197232418-506707-26079-6122-2-=--
|
206
|
-
EOS
|
207
104
|
source = DummySource.new("sup-test://test_multipart_message")
|
208
105
|
source.messages = [ message ]
|
209
106
|
source_info = 0
|
@@ -212,17 +109,16 @@ EOS
|
|
212
109
|
sup_message.load_from_source!
|
213
110
|
|
214
111
|
# read the message body chunks
|
215
|
-
|
216
112
|
chunks = sup_message.load_from_source!
|
217
113
|
|
218
114
|
# this time there should be four chunks: first the quoted part of
|
219
115
|
# the message, then the non-quoted part, then the two attachments
|
220
116
|
assert_equal(4, chunks.length)
|
221
117
|
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
118
|
+
assert(chunks[0].is_a? Redwood::Chunk::Quote)
|
119
|
+
assert(chunks[1].is_a? Redwood::Chunk::Text)
|
120
|
+
assert(chunks[2].is_a? Redwood::Chunk::Attachment)
|
121
|
+
assert(chunks[3].is_a? Redwood::Chunk::Attachment)
|
226
122
|
|
227
123
|
# further testing of chunks will happen in test_message_chunks.rb
|
228
124
|
# (possibly not yet implemented)
|
@@ -230,29 +126,7 @@ EOS
|
|
230
126
|
end
|
231
127
|
|
232
128
|
def test_broken_message_1
|
233
|
-
|
234
|
-
# an example of a broken message, missing "to" and "from" fields
|
235
|
-
|
236
|
-
message = <<EOS
|
237
|
-
Return-path: <fake_sender@example.invalid>
|
238
|
-
Envelope-to: fake_receiver@localhost
|
239
|
-
Delivery-date: Sun, 09 Dec 2007 21:48:19 +0200
|
240
|
-
Received: from fake_sender by localhost.localdomain with local (Exim 4.67)
|
241
|
-
(envelope-from <fake_sender@example.invalid>)
|
242
|
-
id 1J1S8R-0006lA-MJ
|
243
|
-
for fake_receiver@localhost; Sun, 09 Dec 2007 21:48:19 +0200
|
244
|
-
Date: Sun, 9 Dec 2007 21:48:19 +0200
|
245
|
-
Subject: Re: Test message subject
|
246
|
-
Message-ID: <20071209194819.GA25972@example.invalid>
|
247
|
-
References: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
248
|
-
MIME-Version: 1.0
|
249
|
-
Content-Type: text/plain; charset=us-ascii
|
250
|
-
Content-Disposition: inline
|
251
|
-
In-Reply-To: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
252
|
-
User-Agent: Sup/0.3
|
253
|
-
|
254
|
-
Test message!
|
255
|
-
EOS
|
129
|
+
message = fixture('missing-from-to.eml')
|
256
130
|
|
257
131
|
source = DummySource.new("sup-test://test_broken_message_1")
|
258
132
|
source.messages = [ message ]
|
@@ -263,9 +137,9 @@ EOS
|
|
263
137
|
|
264
138
|
to = sup_message.to
|
265
139
|
|
266
|
-
# there should no items, since the message doesn't have any
|
267
|
-
|
268
|
-
|
140
|
+
# there should no items, since the message doesn't have any recipients -- still not nil
|
141
|
+
assert(!to.nil?)
|
142
|
+
assert_empty(to)
|
269
143
|
|
270
144
|
# from will have bogus values
|
271
145
|
from = sup_message.from
|
@@ -276,29 +150,7 @@ EOS
|
|
276
150
|
end
|
277
151
|
|
278
152
|
def test_broken_message_2
|
279
|
-
|
280
|
-
# an example of a broken message, no body at all
|
281
|
-
|
282
|
-
message = <<EOS
|
283
|
-
Return-path: <fake_sender@example.invalid>
|
284
|
-
From: Fake Sender <fake_sender@example.invalid>
|
285
|
-
To: Fake Receiver <fake_receiver@localhost>
|
286
|
-
Envelope-to: fake_receiver@localhost
|
287
|
-
Delivery-date: Sun, 09 Dec 2007 21:48:19 +0200
|
288
|
-
Received: from fake_sender by localhost.localdomain with local (Exim 4.67)
|
289
|
-
(envelope-from <fake_sender@example.invalid>)
|
290
|
-
id 1J1S8R-0006lA-MJ
|
291
|
-
for fake_receiver@localhost; Sun, 09 Dec 2007 21:48:19 +0200
|
292
|
-
Date: Sun, 9 Dec 2007 21:48:19 +0200
|
293
|
-
Subject: Re: Test message subject
|
294
|
-
Message-ID: <20071209194819.GA25972@example.invalid>
|
295
|
-
References: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
296
|
-
MIME-Version: 1.0
|
297
|
-
Content-Type: text/plain; charset=us-ascii
|
298
|
-
Content-Disposition: inline
|
299
|
-
In-Reply-To: <E1J1Rvb-0006k2-CE@localhost.localdomain>
|
300
|
-
User-Agent: Sup/0.3
|
301
|
-
EOS
|
153
|
+
message = fixture('no-body.eml')
|
302
154
|
|
303
155
|
source = DummySource.new("sup-test://test_broken_message_1")
|
304
156
|
source.messages = [ message ]
|
@@ -311,90 +163,12 @@ EOS
|
|
311
163
|
|
312
164
|
chunks = sup_message.load_from_source!
|
313
165
|
|
314
|
-
|
315
|
-
|
316
|
-
assert_equal(0, chunks.length)
|
317
|
-
|
166
|
+
assert_empty(chunks)
|
318
167
|
end
|
319
168
|
|
320
169
|
def test_multipart_message_2
|
170
|
+
message = fixture('multi-part-2.eml')
|
321
171
|
|
322
|
-
message = <<EOS
|
323
|
-
Return-path: <vim-mac-return-3938-fake_receiver=localhost@vim.org>
|
324
|
-
Envelope-to: fake_receiver@localhost
|
325
|
-
Delivery-date: Wed, 14 Jun 2006 19:22:54 +0300
|
326
|
-
Received: from localhost ([127.0.0.1] helo=localhost.localdomain)
|
327
|
-
by localhost.localdomain with esmtp (Exim 4.60)
|
328
|
-
(envelope-from <vim-mac-return-3938-fake_receiver=localhost@vim.org>)
|
329
|
-
id 1FqXk3-0006jM-48
|
330
|
-
for fake_receiver@localhost; Wed, 14 Jun 2006 18:57:15 +0300
|
331
|
-
Received: from pop.gmail.com
|
332
|
-
by localhost.localdomain with POP3 (fetchmail-6.3.2)
|
333
|
-
for <fake_receiver@localhost> (single-drop); Wed, 14 Jun 2006 18:57:15 +0300 (EEST)
|
334
|
-
X-Gmail-Received: 8ee0fe5f895736974c042c8eaf176014b1ba7b88
|
335
|
-
Delivered-To: fake_receiver@localhost
|
336
|
-
Received: by 10.49.8.16 with SMTP id l16cs11327nfi;
|
337
|
-
Sun, 26 Mar 2006 19:31:56 -0800 (PST)
|
338
|
-
Received: by 10.66.224.8 with SMTP id w8mr2172862ugg;
|
339
|
-
Sun, 26 Mar 2006 19:31:56 -0800 (PST)
|
340
|
-
Received: from foobar.math.fu-berlin.de (foobar.math.fu-berlin.de [160.45.45.151])
|
341
|
-
by mx.gmail.com with SMTP id j3si553645ugd.2006.03.26.19.31.56;
|
342
|
-
Sun, 26 Mar 2006 19:31:56 -0800 (PST)
|
343
|
-
Received-SPF: neutral (gmail.com: 160.45.45.151 is neither permitted nor denied by best guess record for domain of vim-mac-return-3938-fake_receiver=localhost@vim.org)
|
344
|
-
Message-Id: <44275cac.74a494f1.315a.ffff825cSMTPIN_ADDED@mx.gmail.com>
|
345
|
-
Received: (qmail 24265 invoked by uid 200); 27 Mar 2006 02:32:39 -0000
|
346
|
-
Mailing-List: contact vim-mac-help@vim.org; run by ezmlm
|
347
|
-
Precedence: bulk
|
348
|
-
Delivered-To: mailing list vim-mac@vim.org
|
349
|
-
Received: (qmail 7913 invoked from network); 26 Mar 2006 23:37:34 -0000
|
350
|
-
Received: from cpe-138-217-96-243.vic.bigpond.net.au (HELO vim.org) (138.217.96.243)
|
351
|
-
by foobar.math.fu-berlin.de with SMTP; 26 Mar 2006 23:37:34 -0000
|
352
|
-
From: fake_sender@example.invalid
|
353
|
-
To: vim-mac@vim.org
|
354
|
-
Subject: Mail Delivery (failure vim-mac@vim.org)
|
355
|
-
Date: Mon, 27 Mar 2006 10:29:39 +1000
|
356
|
-
MIME-Version: 1.0
|
357
|
-
Content-Type: multipart/related;
|
358
|
-
type="multipart/alternative";
|
359
|
-
boundary="----=_NextPart_000_001B_01C0CA80.6B015D10"
|
360
|
-
X-Priority: 3
|
361
|
-
X-MSMail-Priority: Normal
|
362
|
-
|
363
|
-
------=_NextPart_000_001B_01C0CA80.6B015D10
|
364
|
-
Content-Type: multipart/alternative;
|
365
|
-
boundary="----=_NextPart_001_001C_01C0CA80.6B015D10"
|
366
|
-
|
367
|
-
------=_NextPart_001_001C_01C0CA80.6B015D10
|
368
|
-
Content-Type: text/plain;
|
369
|
-
charset="iso-8859-1"
|
370
|
-
Content-Transfer-Encoding: quoted-printable
|
371
|
-
|
372
|
-
------=_NextPart_001_001C_01C0CA80.6B015D10
|
373
|
-
Content-Type: text/html;
|
374
|
-
charset="iso-8859-1"
|
375
|
-
Content-Transfer-Encoding: quoted-printable
|
376
|
-
|
377
|
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
378
|
-
<HTML><HEAD>
|
379
|
-
<META content=3D"text/html; charset=3Diso-8859-1" =
|
380
|
-
http-equiv=3DContent-Type>
|
381
|
-
<META content=3D"MSHTML 5.00.2920.0" name=3DGENERATOR>
|
382
|
-
<STYLE></STYLE>
|
383
|
-
</HEAD>
|
384
|
-
<BODY bgColor=3D#ffffff>If the message will not displayed automatically,<br>
|
385
|
-
follow the link to read the delivered message.<br><br>
|
386
|
-
Received message is available at:<br>
|
387
|
-
<a href=3Dcid:031401Mfdab4$3f3dL780$73387018@57W81fa70Re height=3D0 width=3D0>www.vim.org/inbox/vim-mac/read.php?sessionid-18559</a>
|
388
|
-
<iframe
|
389
|
-
src=3Dcid:031401Mfdab4$3f3dL780$73387018@57W81fa70Re height=3D0 width=3D0></iframe>
|
390
|
-
<DIV> </DIV></BODY></HTML>
|
391
|
-
|
392
|
-
------=_NextPart_001_001C_01C0CA80.6B015D10--
|
393
|
-
|
394
|
-
------=_NextPart_000_001B_01C0CA80.6B015D10--
|
395
|
-
|
396
|
-
|
397
|
-
EOS
|
398
172
|
source = DummySource.new("sup-test://test_multipart_message_2")
|
399
173
|
source.messages = [ message ]
|
400
174
|
source_info = 0
|
@@ -402,86 +176,13 @@ EOS
|
|
402
176
|
sup_message = Message.build_from_source(source, source_info)
|
403
177
|
sup_message.load_from_source!
|
404
178
|
|
405
|
-
# read the message body chunks
|
179
|
+
chunks = sup_message.load_from_source! # read the message body chunks
|
406
180
|
|
407
|
-
|
181
|
+
# TODO: Add more asserts
|
408
182
|
end
|
409
183
|
|
410
184
|
def test_blank_header_lines
|
411
|
-
|
412
|
-
message = <<EOS
|
413
|
-
Return-Path: <monitor-list-bounces@widget.com>
|
414
|
-
X-Original-To: nobody@localhost
|
415
|
-
Delivered-To: nobody@localhost.eng.widget.com
|
416
|
-
Received: from localhost (localhost.localdomain [127.0.0.1])
|
417
|
-
by soquel.eng.widget.com (Postfix) with ESMTP id 609BC13C0DB1
|
418
|
-
for <nobody@localhost>; Thu, 19 Mar 2009 13:43:21 -0700 (PDT)
|
419
|
-
MIME-Version: 1.0
|
420
|
-
Received: from pa-excas-vip.widget.com [10.16.67.200]
|
421
|
-
by localhost with IMAP (fetchmail-6.2.5)
|
422
|
-
for nobody@localhost (single-drop); Thu, 19 Mar 2009 13:43:21 -0700 (PDT)
|
423
|
-
Received: from pa-exht01.widget.com (10.113.81.167) by pa-excaht11.widget.com
|
424
|
-
(10.113.81.197) with Microsoft SMTP Server (TLS) id 8.1.311.2; Thu, 19 Mar
|
425
|
-
2009 13:42:30 -0700
|
426
|
-
Received: from mailman2.widget.com (10.16.64.159) by pa-exht01.widget.com
|
427
|
-
(10.113.81.167) with Microsoft SMTP Server id 8.1.336.0; Thu, 19 Mar 2009
|
428
|
-
13:42:30 -0700
|
429
|
-
Received: by mailman2.widget.com (Postfix) id 47095AE30856; Thu, 19 Mar 2009
|
430
|
-
13:42:29 -0700 (PDT)
|
431
|
-
Received: from countchocula.widget.com (localhost.localdomain [127.0.0.1]) by
|
432
|
-
mailman2.widget.com (Postfix) with ESMTP id 5F782ABC5948; Thu, 19 Mar 2009
|
433
|
-
13:42:28 -0700 (PDT)
|
434
|
-
Received: from mailhost4.widget.com (mailhost4.widget.com [10.16.67.124]) by
|
435
|
-
mailman2.widget.com (Postfix) with ESMTP id 6CDCCABC5948 for
|
436
|
-
<monitor-list@mailman2.widget.com>; Thu, 19 Mar 2009 13:42:26 -0700 (PDT)
|
437
|
-
Received: by mailhost4.widget.com (Postfix) id 2364AC9AC4; Thu, 19 Mar 2009
|
438
|
-
13:42:26 -0700 (PDT)
|
439
|
-
Received: from pa-exht01.widget.com (pa-exht01.widget.com [10.113.81.167]) by
|
440
|
-
mailhost4.widget.com (Postfix) with ESMTP id 17A68C9AC3 for
|
441
|
-
<monitor-list@widget.com>; Thu, 19 Mar 2009 13:42:26 -0700 (PDT)
|
442
|
-
Received: from PA-EXMBX04.widget.com ([10.113.81.142]) by pa-exht01.widget.com
|
443
|
-
([10.113.81.167]) with mapi; Thu, 19 Mar 2009 13:42:26 -0700
|
444
|
-
From: Some User <someuser@widget.com>
|
445
|
-
To: "monitor-list@widget.com" <monitor-list@widget.com>
|
446
|
-
Sender: "monitor-list-bounces@widget.com" <monitor-list-bounces@widget.com>
|
447
|
-
Date: Thu, 19 Mar 2009 13:42:25 -0700
|
448
|
-
Subject: Looking for a mac
|
449
|
-
Thread-Topic: Looking for a mac
|
450
|
-
Thread-Index: AQHJqNM1xIqqjNRWuUCUBaxzPFK5eQ==
|
451
|
-
Message-ID:
|
452
|
-
<D3C12B2AD838B44DA9D6B2CA334246D011E72A73A4@PA-EXMBX04.widget.com>
|
453
|
-
List-Help: <mailto:monitor-list-request@widget.com?subject=help>
|
454
|
-
List-Subscribe: <http://mailman2.widget.com/mailman/listinfo/monitor-list>,
|
455
|
-
<mailto:monitor-list-request@widget.com?subject=subscribe>
|
456
|
-
List-Unsubscribe:
|
457
|
-
<http://mailman2.widget.com/mailman/listinfo/monitor-list>,
|
458
|
-
<mailto:monitor-list-request@widget.com?subject=unsubscribe>
|
459
|
-
Accept-Language: en-US
|
460
|
-
Content-Language: en-US
|
461
|
-
X-MS-Exchange-Organization-AuthAs: Anonymous
|
462
|
-
X-MS-Exchange-Organization-AuthSource: pa-exht01.widget.com
|
463
|
-
X-MS-Has-Attach:
|
464
|
-
X-Auto-Response-Suppress: All
|
465
|
-
X-MS-TNEF-Correlator:
|
466
|
-
acceptlanguage: en-US
|
467
|
-
delivered-to: monitor-list@widget.com
|
468
|
-
errors-to: monitor-list-bounces@widget.com
|
469
|
-
list-id: engineering monitor related <monitor-list.widget.com>
|
470
|
-
x-mailman-version: 2.1.8
|
471
|
-
x-beenthere: monitor-list@widget.com
|
472
|
-
x-original-to: monitor-list@mailman2.widget.com
|
473
|
-
list-post: <mailto:monitor-list@widget.com>
|
474
|
-
list-archive: <http://mailman2.widget.com/pipermail/monitor-list>
|
475
|
-
Content-Type: text/plain; charset="us-ascii"
|
476
|
-
Content-Transfer-Encoding: quoted-printable
|
477
|
-
|
478
|
-
Hi all,
|
479
|
-
|
480
|
-
Just wondering if anybody can lend me a mac to reproduce PR 384931 ?
|
481
|
-
Thanks.
|
482
|
-
|
483
|
-
Michael=
|
484
|
-
EOS
|
185
|
+
message = fixture('blank-header-fields.eml')
|
485
186
|
|
486
187
|
source = DummySource.new("sup-test://test_blank_header_lines")
|
487
188
|
source.messages = [ message ]
|
@@ -496,72 +197,14 @@ EOS
|
|
496
197
|
|
497
198
|
# Look at another header field whose first line was blank.
|
498
199
|
list_unsubscribe = sup_message.list_unsubscribe
|
499
|
-
assert_equal("<http://mailman2.widget.com/mailman/listinfo/monitor-list>,\n
|
200
|
+
assert_equal("<http://mailman2.widget.com/mailman/listinfo/monitor-list>,\n\t" +
|
500
201
|
"<mailto:monitor-list-request@widget.com?subject=unsubscribe>",
|
501
202
|
list_unsubscribe)
|
502
203
|
|
503
204
|
end
|
504
205
|
|
505
206
|
def test_malicious_attachment_names
|
506
|
-
|
507
|
-
|
508
|
-
message = <<EOS
|
509
|
-
From: Matthieu Rakotojaona <matthieu.rakotojaona@gmail.com>
|
510
|
-
To: reply+0007a7cb7174d1d188fcd420fce83e0f68fe03fc7416cdae92cf0000000110ce4efd92a169ce033d18e1 <reply+0007a7cb7174d1d188fcd420fce83e0f68fe03fc7416cdae92cf0000000110ce4efd92a169ce033d18e1@reply.github.com>
|
511
|
-
Subject: Re: [sup] Attachment saving and special characters in filenames (#378)
|
512
|
-
In-reply-to: <sup-heliotrope/sup/issues/378@github.com>
|
513
|
-
References: <sup-heliotrope/sup/issues/378@github.com>
|
514
|
-
X-pgp-key: http://otokar.looc2011.eu/static/matthieu.rakotojaona.asc
|
515
|
-
Date: Wed, 14 Jan 2015 22:13:37 +0100
|
516
|
-
Message-Id: <1421269972-sup-5245@kpad>
|
517
|
-
User-Agent: Sup/git
|
518
|
-
Content-Transfer-Encoding: 8bit
|
519
|
-
MIME-Version: 1.0
|
520
|
-
Content-Type: multipart/mixed; boundary="=-1421270017-526778-1064-1628-1-="
|
521
|
-
|
522
|
-
|
523
|
-
--=-1421270017-526778-1064-1628-1-=
|
524
|
-
Content-Type: text/plain; charset=UTF-8
|
525
|
-
Content-Disposition: inline
|
526
|
-
|
527
|
-
Excerpts from Felix Kaiser's message of 2015-01-14 16:36:29 +0100:
|
528
|
-
> When saving attachments, sup should replace special characters when suggesting a filename to save the attachment to.
|
529
|
-
>
|
530
|
-
> I just got an attachment with a name like "foo/2.pdf". sup suggests saving it to /home/fxkr/foo/2.pdf (and fails to save it, of course, if /home/fxkr/foo isn't a directory).
|
531
|
-
>
|
532
|
-
> I haven't tested the "Save All" feature, but I hope nothing bad happens when there's an attachment called "../../../../../../../home/fxkr/.bashrc" ;-)
|
533
|
-
>
|
534
|
-
> ---
|
535
|
-
> Reply to this email directly or view it on GitHub:
|
536
|
-
> https://github.com/sup-heliotrope/sup/issues/378
|
537
|
-
|
538
|
-
For tests, here's an email with an attachment filename set to
|
539
|
-
sup/.travis.yml (really, this time)
|
540
|
-
|
541
|
-
--
|
542
|
-
Matthieu Rakotojaona
|
543
|
-
|
544
|
-
--=-1421270017-526778-1064-1628-1-=
|
545
|
-
Content-Disposition: attachment; filename="sup/.travis.yml"
|
546
|
-
Content-Type: text/x-yaml; name="sup/.travis.yml"
|
547
|
-
Content-Transfer-Encoding: 8bit
|
548
|
-
|
549
|
-
language: ruby
|
550
|
-
|
551
|
-
rvm:
|
552
|
-
- 2.1.1
|
553
|
-
- 2.0.0
|
554
|
-
- 1.9.3
|
555
|
-
|
556
|
-
before_install:
|
557
|
-
- sudo apt-get update -qq
|
558
|
-
- sudo apt-get install -qq uuid-dev uuid libncursesw5-dev libncursesw5 gnupg2 pandoc
|
559
|
-
- git submodule update --init --recursive
|
560
|
-
|
561
|
-
script: bundle exec rake travis
|
562
|
-
|
563
|
-
--=-1421270017-526778-1064-1628-1-=--
|
564
|
-
EOS
|
207
|
+
message = fixture('malicious-attachment-names.eml')
|
565
208
|
|
566
209
|
source = DummySource.new("sup-test://test_blank_header_lines")
|
567
210
|
source.messages = [ message ]
|
@@ -576,7 +219,6 @@ EOS
|
|
576
219
|
# path.
|
577
220
|
fn = chunks[3].safe_filename
|
578
221
|
assert_equal(fn, File.basename(fn))
|
579
|
-
|
580
222
|
end
|
581
223
|
# TODO: test different error cases, malformed messages etc.
|
582
224
|
|