emailengine-app 2.61.0 → 2.61.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/data/google-crawlers.json +1 -1
  3. package/lib/account/account-state.js +248 -0
  4. package/lib/account.js +17 -178
  5. package/lib/api-routes/account-routes.js +1006 -0
  6. package/lib/api-routes/message-routes.js +1377 -0
  7. package/lib/consts.js +12 -2
  8. package/lib/email-client/base-client.js +282 -771
  9. package/lib/email-client/gmail/gmail-api.js +243 -0
  10. package/lib/email-client/gmail-client.js +145 -53
  11. package/lib/email-client/imap/mailbox.js +24 -698
  12. package/lib/email-client/imap/sync-operations.js +812 -0
  13. package/lib/email-client/imap-client.js +3 -1
  14. package/lib/email-client/message-builder.js +566 -0
  15. package/lib/email-client/notification-handler.js +314 -0
  16. package/lib/email-client/outlook/graph-api.js +326 -0
  17. package/lib/email-client/outlook-client.js +159 -113
  18. package/lib/email-client/smtp-pool-manager.js +196 -0
  19. package/lib/imapproxy/imap-server.js +3 -12
  20. package/lib/oauth/gmail.js +4 -4
  21. package/lib/oauth/mail-ru.js +30 -5
  22. package/lib/oauth/outlook.js +57 -3
  23. package/lib/oauth/pubsub/google.js +30 -11
  24. package/lib/oauth/scope-checker.js +202 -0
  25. package/lib/oauth2-apps.js +8 -4
  26. package/lib/redis-operations.js +484 -0
  27. package/lib/routes-ui.js +283 -2582
  28. package/lib/tools.js +5 -196
  29. package/lib/ui-routes/account-routes.js +1931 -0
  30. package/lib/ui-routes/admin-config-routes.js +1233 -0
  31. package/lib/ui-routes/admin-entities-routes.js +2367 -0
  32. package/lib/ui-routes/oauth-routes.js +992 -0
  33. package/lib/utils/network.js +237 -0
  34. package/package.json +12 -12
  35. package/sbom.json +1 -1
  36. package/static/js/app.js +5 -5
  37. package/static/licenses.html +91 -21
  38. package/translations/de.mo +0 -0
  39. package/translations/de.po +85 -82
  40. package/translations/en.mo +0 -0
  41. package/translations/en.po +63 -71
  42. package/translations/et.mo +0 -0
  43. package/translations/et.po +84 -82
  44. package/translations/fr.mo +0 -0
  45. package/translations/fr.po +85 -82
  46. package/translations/ja.mo +0 -0
  47. package/translations/ja.po +84 -82
  48. package/translations/messages.pot +67 -80
  49. package/translations/nl.mo +0 -0
  50. package/translations/nl.po +86 -82
  51. package/translations/pl.mo +0 -0
  52. package/translations/pl.po +84 -82
  53. package/views/account/security.hbs +4 -4
  54. package/views/accounts/account.hbs +13 -13
  55. package/views/accounts/register/imap-server.hbs +12 -12
  56. package/views/config/document-store/pre-processing/index.hbs +4 -2
  57. package/views/config/oauth/app.hbs +6 -7
  58. package/views/config/oauth/index.hbs +2 -2
  59. package/views/config/service.hbs +3 -4
  60. package/views/dashboard.hbs +5 -7
  61. package/views/error.hbs +22 -7
  62. package/views/gateways/gateway.hbs +2 -2
  63. package/views/partials/add_account_modal.hbs +7 -10
  64. package/views/partials/document_store_header.hbs +1 -1
  65. package/views/partials/editor_scope_info.hbs +0 -1
  66. package/views/partials/oauth_config_header.hbs +1 -1
  67. package/views/partials/side_menu.hbs +3 -3
  68. package/views/partials/webhook_form.hbs +2 -2
  69. package/views/templates/index.hbs +1 -1
  70. package/views/templates/template.hbs +8 -8
  71. package/views/tokens/index.hbs +6 -6
  72. package/views/tokens/new.hbs +1 -1
  73. package/views/webhooks/index.hbs +4 -4
  74. package/views/webhooks/webhook.hbs +7 -7
  75. package/workers/api.js +148 -2436
  76. package/workers/smtp.js +2 -1
  77. package/workers/webhooks.js +6 -0
  78. package/lib/imapproxy/imap-core/test/client.js +0 -46
  79. package/lib/imapproxy/imap-core/test/fixtures/append.eml +0 -1196
  80. package/lib/imapproxy/imap-core/test/fixtures/chunks.js +0 -44
  81. package/lib/imapproxy/imap-core/test/fixtures/fix1.eml +0 -6
  82. package/lib/imapproxy/imap-core/test/fixtures/fix2.eml +0 -599
  83. package/lib/imapproxy/imap-core/test/fixtures/fix3.eml +0 -32
  84. package/lib/imapproxy/imap-core/test/fixtures/fix4.eml +0 -6
  85. package/lib/imapproxy/imap-core/test/fixtures/mimetorture.eml +0 -599
  86. package/lib/imapproxy/imap-core/test/fixtures/mimetorture.js +0 -2740
  87. package/lib/imapproxy/imap-core/test/fixtures/mimetorture.json +0 -1411
  88. package/lib/imapproxy/imap-core/test/fixtures/mimetree.js +0 -85
  89. package/lib/imapproxy/imap-core/test/fixtures/nodemailer.eml +0 -582
  90. package/lib/imapproxy/imap-core/test/fixtures/ryan_finnie_mime_torture.eml +0 -599
  91. package/lib/imapproxy/imap-core/test/fixtures/simple.eml +0 -42
  92. package/lib/imapproxy/imap-core/test/fixtures/simple.json +0 -164
  93. package/lib/imapproxy/imap-core/test/imap-compile-stream-test.js +0 -671
  94. package/lib/imapproxy/imap-core/test/imap-compiler-test.js +0 -272
  95. package/lib/imapproxy/imap-core/test/imap-indexer-test.js +0 -236
  96. package/lib/imapproxy/imap-core/test/imap-parser-test.js +0 -922
  97. package/lib/imapproxy/imap-core/test/memory-notifier.js +0 -129
  98. package/lib/imapproxy/imap-core/test/prepare.sh +0 -74
  99. package/lib/imapproxy/imap-core/test/protocol-test.js +0 -1756
  100. package/lib/imapproxy/imap-core/test/search-test.js +0 -1356
  101. package/lib/imapproxy/imap-core/test/test-client.js +0 -152
  102. package/lib/imapproxy/imap-core/test/test-server.js +0 -623
  103. package/lib/imapproxy/imap-core/test/tools-test.js +0 -22
  104. package/test/api-test.js +0 -899
  105. package/test/autoreply-test.js +0 -327
  106. package/test/bounce-test.js +0 -151
  107. package/test/complaint-test.js +0 -256
  108. package/test/fixtures/autoreply/LICENSE +0 -27
  109. package/test/fixtures/autoreply/rfc3834-01.eml +0 -23
  110. package/test/fixtures/autoreply/rfc3834-02.eml +0 -24
  111. package/test/fixtures/autoreply/rfc3834-03.eml +0 -26
  112. package/test/fixtures/autoreply/rfc3834-04.eml +0 -48
  113. package/test/fixtures/autoreply/rfc3834-05.eml +0 -19
  114. package/test/fixtures/autoreply/rfc3834-06.eml +0 -59
  115. package/test/fixtures/bounces/163.eml +0 -2521
  116. package/test/fixtures/bounces/fastmail.eml +0 -242
  117. package/test/fixtures/bounces/gmail.eml +0 -252
  118. package/test/fixtures/bounces/hotmail.eml +0 -655
  119. package/test/fixtures/bounces/mailru.eml +0 -121
  120. package/test/fixtures/bounces/outlook.eml +0 -1107
  121. package/test/fixtures/bounces/postfix.eml +0 -101
  122. package/test/fixtures/bounces/rambler.eml +0 -116
  123. package/test/fixtures/bounces/workmail.eml +0 -142
  124. package/test/fixtures/bounces/yahoo.eml +0 -139
  125. package/test/fixtures/bounces/zoho.eml +0 -83
  126. package/test/fixtures/bounces/zonemta.eml +0 -100
  127. package/test/fixtures/complaints/LICENSE +0 -27
  128. package/test/fixtures/complaints/amazonses.eml +0 -72
  129. package/test/fixtures/complaints/dmarc.eml +0 -59
  130. package/test/fixtures/complaints/hotmail.eml +0 -49
  131. package/test/fixtures/complaints/optout.eml +0 -40
  132. package/test/fixtures/complaints/standard-arf.eml +0 -68
  133. package/test/fixtures/complaints/yahoo.eml +0 -68
  134. package/test/oauth2-apps-test.js +0 -301
  135. package/test/sendonly-test.js +0 -160
  136. package/test/test-config.js +0 -34
  137. package/test/webhooks-server.js +0 -39
@@ -1,256 +0,0 @@
1
- 'use strict';
2
-
3
- // Test fixtures in fixtures/complaints/ are from:
4
- // https://github.com/sisimai/set-of-emails/
5
- // Licensed under BSD 2-Clause License, Copyright (C) 2014, azumakuniyuki
6
-
7
- const test = require('node:test');
8
- const assert = require('node:assert').strict;
9
-
10
- const { arfDetect } = require('../lib/arf-detect');
11
- const { simpleParser } = require('mailparser');
12
- const fs = require('fs');
13
-
14
- const Path = require('path');
15
- const path = fname => Path.join(__dirname, 'fixtures', 'complaints', fname);
16
-
17
- // Helper to parse email and prepare messageInfo for arfDetect
18
- async function parseForArfDetect(filePath) {
19
- const content = await fs.promises.readFile(filePath);
20
- const parsed = await simpleParser(content, { keepDeliveryStatus: true });
21
-
22
- return {
23
- from: parsed.from?.value?.[0] || {},
24
- subject: parsed.subject || '',
25
- attachments: (parsed.attachments || []).map(att => ({
26
- contentType: att.contentType,
27
- content: att.content
28
- }))
29
- };
30
- }
31
-
32
- // Replicate mightBeAComplaint logic for testing
33
- function mightBeAComplaint(messageInfo) {
34
- let hasEmbeddedMessage = false;
35
- for (let attachment of messageInfo.attachments || []) {
36
- if (attachment.contentType === 'message/feedback-report') {
37
- return true;
38
- }
39
- if (['message/rfc822', 'message/rfc822-headers', 'text/rfc822-headers', 'text/rfc822-header'].includes(attachment.contentType)) {
40
- hasEmbeddedMessage = true;
41
- }
42
- }
43
-
44
- let fromAddress = (messageInfo.from && messageInfo.from.address) || '';
45
-
46
- if (fromAddress === 'staff@hotmail.com' && /complaint/i.test(messageInfo.subject)) {
47
- return true;
48
- }
49
-
50
- if (/^(feedbackloop|fbl|complaints|abuse)@/i.test(fromAddress)) {
51
- if (hasEmbeddedMessage || /abuse|complaint|feedback|report/i.test(messageInfo.subject)) {
52
- return true;
53
- }
54
- }
55
-
56
- if (hasEmbeddedMessage && /abuse report|feedback report|spam report/i.test(messageInfo.subject)) {
57
- return true;
58
- }
59
-
60
- return false;
61
- }
62
-
63
- test('ARF complaint detection tests', async t => {
64
- await t.test('Yahoo ARF abuse report', async () => {
65
- const messageInfo = await parseForArfDetect(path('yahoo.eml'));
66
- const report = await arfDetect(messageInfo);
67
-
68
- // Verify mightBeAComplaint would detect this
69
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
70
-
71
- // Verify ARF parsing
72
- assert.strictEqual(report.arf['feedback-type'], 'abuse');
73
- assert.ok(report.arf['original-rcpt-to'].includes('this-local-part-does-not-exist-on-yahoo@yahoo.com'));
74
- assert.strictEqual(report.arf['user-agent'], 'Yahoo!-Mail-Feedback/1.0');
75
- assert.strictEqual(report.arf['original-mail-from'], 'shironeko@example.com');
76
- });
77
-
78
- await t.test('Amazon SES complaint', async () => {
79
- const messageInfo = await parseForArfDetect(path('amazonses.eml'));
80
- const report = await arfDetect(messageInfo);
81
-
82
- // Verify mightBeAComplaint would detect this
83
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
84
-
85
- // Verify ARF parsing
86
- assert.strictEqual(report.arf['feedback-type'], 'abuse');
87
- assert.ok(report.arf['original-rcpt-to'].includes('kijitora@y.example.com'));
88
- // Amazon SES uses bounce address format for mail-from
89
- assert.ok(report.arf['original-mail-from'].includes('amazonses.com'));
90
- });
91
-
92
- await t.test('Hotmail complaint (special handling)', async () => {
93
- const messageInfo = await parseForArfDetect(path('hotmail.eml'));
94
- const report = await arfDetect(messageInfo);
95
-
96
- // Verify mightBeAComplaint would detect this (Hotmail pattern)
97
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
98
- assert.strictEqual(messageInfo.from.address, 'staff@hotmail.com');
99
- assert.ok(/complaint/i.test(messageInfo.subject));
100
-
101
- // Verify ARF parsing - Hotmail uses special defaults
102
- assert.strictEqual(report.arf['feedback-type'], 'abuse');
103
- assert.strictEqual(report.arf.source, 'Hotmail');
104
- assert.strictEqual(report.arf['abuse-type'], 'complaint');
105
- });
106
-
107
- await t.test('DMARC auth-failure report', async () => {
108
- const messageInfo = await parseForArfDetect(path('dmarc.eml'));
109
- const report = await arfDetect(messageInfo);
110
-
111
- // Verify mightBeAComplaint would detect this
112
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
113
-
114
- // Verify ARF parsing - DMARC reports have auth-failure type
115
- assert.strictEqual(report.arf['feedback-type'], 'auth-failure');
116
- assert.ok(report.arf['original-rcpt-to'].includes('kijitora@example.com'));
117
- assert.strictEqual(report.arf['original-mail-from'], 'sironeko@example.org');
118
- });
119
-
120
- await t.test('Standard ARF abuse report with multiple recipients', async () => {
121
- const messageInfo = await parseForArfDetect(path('standard-arf.eml'));
122
- const report = await arfDetect(messageInfo);
123
-
124
- // Verify mightBeAComplaint would detect this
125
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
126
-
127
- // Verify ARF parsing
128
- assert.strictEqual(report.arf['feedback-type'], 'abuse');
129
- assert.ok(Array.isArray(report.arf['original-rcpt-to']));
130
- assert.ok(report.arf['original-rcpt-to'].length >= 1);
131
- assert.ok(report.arf['original-rcpt-to'].includes('kijitora@example.com'));
132
- });
133
-
134
- await t.test('Opt-out (unsubscribe) report', async () => {
135
- const messageInfo = await parseForArfDetect(path('optout.eml'));
136
- const report = await arfDetect(messageInfo);
137
-
138
- // Verify mightBeAComplaint would detect this
139
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
140
-
141
- // Verify ARF parsing - opt-out is a different feedback type
142
- assert.strictEqual(report.arf['feedback-type'], 'opt-out');
143
- // Opt-out reports contain removal-recipient instead of original-rcpt-to
144
- assert.ok(report.arf['removal-recipient']);
145
- assert.ok(report.arf['removal-recipient'].includes('user@example.com'));
146
- });
147
-
148
- await t.test('Original message headers extraction', async () => {
149
- // optout.eml has text/rfc822-header attachment with extractable headers
150
- const messageInfo = await parseForArfDetect(path('optout.eml'));
151
- const report = await arfDetect(messageInfo);
152
-
153
- // Verify original message headers are extracted from text/rfc822-header
154
- assert.ok(report.headers);
155
- assert.ok(report.headers['message-id']);
156
- assert.ok(report.headers.from);
157
- assert.ok(report.headers.subject);
158
- });
159
-
160
- await t.test('text/rfc822-header content type support', async () => {
161
- // optout.eml uses text/rfc822-header (singular)
162
- const messageInfo = await parseForArfDetect(path('optout.eml'));
163
-
164
- // Verify the attachment type is detected
165
- const hasTextRfc822Header = messageInfo.attachments.some(att => att.contentType === 'text/rfc822-header');
166
- assert.strictEqual(hasTextRfc822Header, true);
167
-
168
- // Verify headers are still extracted
169
- const report = await arfDetect(messageInfo);
170
- assert.ok(report.headers);
171
- assert.ok(report.headers['message-id']);
172
- });
173
- });
174
-
175
- test('mightBeAComplaint heuristics', async t => {
176
- await t.test('Detects message/feedback-report attachment', async () => {
177
- const messageInfo = {
178
- from: { address: 'unknown@example.com' },
179
- subject: 'Random subject',
180
- attachments: [{ contentType: 'message/feedback-report' }]
181
- };
182
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
183
- });
184
-
185
- await t.test('Detects Hotmail complaint pattern', async () => {
186
- const messageInfo = {
187
- from: { address: 'staff@hotmail.com' },
188
- subject: 'complaint about message from 192.0.2.1',
189
- attachments: []
190
- };
191
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
192
- });
193
-
194
- await t.test('Rejects non-complaint Hotmail email', async () => {
195
- const messageInfo = {
196
- from: { address: 'staff@hotmail.com' },
197
- subject: 'Welcome to Hotmail',
198
- attachments: []
199
- };
200
- assert.strictEqual(mightBeAComplaint(messageInfo), false);
201
- });
202
-
203
- await t.test('Detects feedbackloop sender with abuse subject', async () => {
204
- const messageInfo = {
205
- from: { address: 'feedbackloop@example.com' },
206
- subject: 'Abuse Report',
207
- attachments: []
208
- };
209
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
210
- });
211
-
212
- await t.test('Detects complaints sender with embedded message', async () => {
213
- const messageInfo = {
214
- from: { address: 'complaints@example.com' },
215
- subject: 'Random',
216
- attachments: [{ contentType: 'message/rfc822' }]
217
- };
218
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
219
- });
220
-
221
- await t.test('Detects abuse report subject with embedded message', async () => {
222
- const messageInfo = {
223
- from: { address: 'noreply@example.com' },
224
- subject: 'Spam Report for your domain',
225
- attachments: [{ contentType: 'message/rfc822-headers' }]
226
- };
227
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
228
- });
229
-
230
- await t.test('Supports text/rfc822-headers content type', async () => {
231
- const messageInfo = {
232
- from: { address: 'fbl@example.com' },
233
- subject: 'FBL Report',
234
- attachments: [{ contentType: 'text/rfc822-headers' }]
235
- };
236
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
237
- });
238
-
239
- await t.test('Supports text/rfc822-header content type (singular)', async () => {
240
- const messageInfo = {
241
- from: { address: 'abuse@example.com' },
242
- subject: 'Complaint',
243
- attachments: [{ contentType: 'text/rfc822-header' }]
244
- };
245
- assert.strictEqual(mightBeAComplaint(messageInfo), true);
246
- });
247
-
248
- await t.test('Rejects unrelated email', async () => {
249
- const messageInfo = {
250
- from: { address: 'newsletter@example.com' },
251
- subject: 'Weekly Newsletter',
252
- attachments: [{ contentType: 'image/png' }]
253
- };
254
- assert.strictEqual(mightBeAComplaint(messageInfo), false);
255
- });
256
- });
@@ -1,27 +0,0 @@
1
- Email fixtures in this directory are from:
2
- https://github.com/sisimai/set-of-emails/
3
-
4
- THIS SOFTWARE IS DISTRIBUTED UNDER THE FOLLOWING BSD 2-CLAUSE LICENSE:
5
- Copyright (C) 2014, azumakuniyuki
6
-
7
- Redistribution and use in source and binary forms, with or without
8
- modification, are permitted provided that the following conditions are met:
9
-
10
- 1. Redistributions of source code must retain the above copyright notice,
11
- this list of conditions and the following disclaimer.
12
-
13
- 2. Redistributions in binary form must reproduce the above copyright notice,
14
- this list of conditions and the following disclaimer in the documentation
15
- and/or other materials provided with the distribution.
16
-
17
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
- POSSIBILITY OF SUCH DAMAGE.
@@ -1,23 +0,0 @@
1
- Return-path: <nyaan@neko.example.org>
2
- Envelope-to: neko@libsisimai.org
3
- Delivery-date: Thu, 29 Apr 2005 23:34:45 +0900
4
- Received: from mta2.relay2.example.org ([192.0.2.222]:22222)
5
- by nyaan.example.com with esmtps (TLSv1:DHE-RSA-AES256-SHA:256)
6
- (Exim 4.81)
7
- (envelope-from <nyaan@neko.example.org>)
8
- id 2NEKOS-222222-22
9
- for neko@libsisimai.org; Thu, 29 Apr 2005 23:34:45 +0900
10
- Received: from neko.example.org (neko.soto.example.org [192.0.2.22])
11
- by mta2.relay2.example.org (8.12.8/8.12.8) with ESMTP id j3QNaaaa222222
12
- for <neko@libsisimai.org>; Thu, 29 Apr 2005 23:34:45 +0900
13
- Date: Thu, 29 Apr 2005 23:34:45 +0900
14
- Message-Id: <200503142138.j3QNaaaa222222@neko.example.org>
15
- To: neko@libsisimai.org
16
- Auto-Submitted: auto-replied
17
- From: kijitora@example.net
18
- Subject: Away until May 5
19
-
20
- I am currently away returning to the office on May 5th. I will have limited access to email and will respond to you upon my return.
21
-
22
- Kijitora, Nyaan.
23
-
@@ -1,24 +0,0 @@
1
- Return-path: <>
2
- Envelope-to: kijitora@example.com
3
- Delivery-date: Thu, 17 Jul 2013 23:34:45 -0500
4
- Received: from smtpd-02.example.com ([203.0.113.1]:2202)
5
- by neko2.example.com with esmtp (Exim 4.80)
6
- id 2Aeeee-00002R-AA
7
- for kijitora@example.com; Thu, 17 Jul 2013 23:34:45 -0500
8
- Received: from neko.nyaan.example.net ([fe80::ffff:ffff:ffff:0000%22]) by
9
- neko1.nyaan2.example.net ([fe80::0000:0000:0000:ffff%22]) with Microsoft
10
- SMTP Server id 14.02.0318.004; Thu, 17 Jul 2013 23:34:45 -0400
11
- From: "Neko, Nyaan" <nekonyaan@example.org>
12
- To: Kijitora <kijitora@example.com>
13
- Subject: Automatic reply: Nyaan
14
- Date: Thu, 17 Jul 2013 23:34:45 +0000
15
- Message-ID: <fb1b2d9ea3df46d9839a6dcb99410ebb@neko.nyaan.example.net>
16
- X-Auto-Response-Suppress: All
17
- X-MS-Exchange-Inbox-Rules-Loop: nekonyaan@example.org
18
- X-MS-TNEF-Correlator:
19
- Content-Type: text/plain; charset="us-ascii"
20
- Content-Transfer-Encoding: quoted-printable
21
- MIME-Version: 1.0
22
-
23
- I'm out of the office Friday. For pressing news matters, Nyaan.
24
-
@@ -1,26 +0,0 @@
1
- Return-Path: <kijitora@apple.example.com>
2
- Received: from st43p00im-zteg10073401.me.com (st43p00im-zteg10073401.me.com [17.58.63.181])
3
- by nijo.libsisimai.org (V8/cf) with ESMTP id xBH2rAeR020524
4
- for <neko@libsisimai.org>; Tue, 17 Dec 2019 11:53:10 +0900
5
- Received: from mailgateway (mr36p30ic-tygg11203501.me.com [17.58.22.158])
6
- by st43p00im-zteg10073401.me.com (Postfix) with SMTP id 823515E041B
7
- for <neko@libsisimai.org>; Tue, 17 Dec 2019 02:53:09 +0000 (UTC)
8
- Received: from mr21p30im-mailnotify004 by mr36p30ic-tygg11203501 (mailgateway 1923B114)
9
- with SMTP id 7e23258d-247f-479e-996d-e01f0f30af85
10
- for <kijitora@apple.example.com>; Tue, 17 Dec 2019 02:53:09 GMT
11
- Received: from 17.111.174.82 by 17.111.174.26 (mailnotify 1916B19:18:08:02:53:08:42); Tue, 17 Dec 2019 02:53:09 GMT
12
- From: kijitora@apple.example.com
13
- To: "Neko, Nyaan" <neko@libsisimai.org>
14
- Subject: Auto reply: Nyaan
15
- Date: Tue, 17 Dec 2019 02:53:09 +0000
16
- Message-id: <7e23258d-247f-479e-996d-e01f0f30af85-vac@apple.example.com>
17
- In-Reply-To: <25203A4E-F90F-4A14-BF51-3E7B9D39BE8E@libsisimai.org>
18
- References: <25203A4E-F90F-4A14-BF51-3E7B9D39BE8E@libsisimai.org>
19
- X-Apple-Criteria: {kind=VACATION,startDate=2019-11-30T15:00:00Z,endDate=2020-01-10T14:59:59Z}
20
- X-Apple-Action: VACATION
21
- X-Apple-UUID: 7e23258d-247f-479e-996d-e01f0f30af85
22
- X-Apple-Server: mr36p30ic-tygg11203501 mailgateway 1923B114
23
- Content-type: text/plain; charset=UTF-8
24
-
25
- I'm only sleeping.
26
-
@@ -1,48 +0,0 @@
1
- Return-path: <>
2
- Envelope-to: nekonyaan@example.com
3
- Delivery-date: Thu, 17 Jul 2013 23:34:45 -0500
4
- Received: from mail0.bemta0.messagelabs.com ([192.0.2.2]:2400)
5
- by neko2.example.com with esmtps (TLSv1:DHE-RSA-AES256-SHA:256)
6
- (Exim 4.80)
7
- id 2AEEEE-0000xR-2E
8
- for nekonyaan@example.com; Thu, 17 Jul 2013 23:34:45 -0500
9
- X-Msg-Ref: server-0.tower-0.messagelabs.com!120000000!100010101!1
10
- X-Originating-IP: [203.0.113.113]
11
- Received: from mailerver1.com.neko.example.com
12
- ([fe80::0000:0000:0000:0000%22]) by mailserver1.com.neko.example.com
13
- ([fe80::ffff:ffff:ffff:ffff%22]) with Microsoft SMTP Server id
14
- 14.01.0421.002; Thu, 17 Jul 2013 23:34:45 -0700
15
- From: Kijitora <kijitora@example.org>
16
- To: Neko <nekonyaan@example.com>
17
- Subject: Automatic reply: Nyaan
18
- Date: Sat, 16 Mar 2013 23:34:45 +0000
19
- Message-ID: <8415797d5564f6c279db9815ab2819ca@mailserver1.com.neko.example.com>
20
- X-MS-Has-Attach:
21
- X-Auto-Response-Suppress: All
22
- X-MS-Exchange-Inbox-Rules-Loop: kijitora@example.org
23
- X-MS-TNEF-Correlator:
24
- Content-Type: text/plain; charset="Windows-1252"
25
- Content-Transfer-Encoding: quoted-printable
26
- MIME-Version: 1.0
27
-
28
- ***Please stop and read this message.***
29
-
30
- I will be traveling for work on July 10-31. During that time I will have i=
31
- ntermittent access to email and phone, and I will respond to your message a=
32
- s promptly as possible.
33
-
34
- Please contact our Client Service Support Team (information below) if you n=
35
- eed immediate assistance on regular account matters, or contact my colleagu=
36
- e Neko Nyaan (neko@example.org; +0-000-000-0000) for all other needs.
37
-
38
-
39
- Client Service Support Team
40
- (Day to Day Needs: Nora-Nyaans Technical Assistance, Account /Transactional=
41
- Inquiries, Wire Transfers, Stop Payments, Check Orders, etc.)
42
- Phone: +0.000.000.0000 or +0.111.111.1112
43
- nora-nyaans@example.org<mailto:nora-nyaans@example.org>
44
- Hours: 5am - 5:30pm Pacific Standard Time
45
-
46
-
47
- Nyaan,
48
-
@@ -1,19 +0,0 @@
1
- From MAILER-DAEMON Mon Sep 20 19:29:27 2021
2
- Return-Path: <>
3
- X-Original-To: postmaster@peter.otto.org
4
- Delivered-To: blackhole@localhost
5
- From: <foo@bar.net>
6
- To: postmaster@any.com
7
- Message-ID: <dummy@ott.pet>
8
- Date: Mon, 20 Sep 2021 21:29:21 +0200 (CEST)
9
- X-RZG-CLASS-ID: mi
10
- X-RZG-TRIGGERING-SMTP-ID: qcZaAFivUJ
11
- MIME-Version: 1.0
12
- Content-Type: text/plain; charset="UTF-8"
13
- Content-Transfer-Encoding: quoted-printable
14
- Subject: kitununulinitoquekegu
15
- In-Reply-To: <foobar@dummy.org>
16
- Auto-Submitted: auto-replied
17
-
18
- zuk=C3=BCnftig
19
- karl@hanz.de
@@ -1,59 +0,0 @@
1
- Return-Path: <>
2
- X-Original-To: system@errors.ef.example.org
3
- Delivered-To: system@errors.ef.example.org
4
- Received: from relaying1.ef.example.org (unknown [192.0.2.25])
5
- by feed.ef.example.org (Postfix) with ESMTPS id 4yK3pM26yhzhbLwQ
6
- for <system@errors.ef.example.org>; Mon, 6 Jan 2025 07:00:30 +0900 (JST)
7
- Authentication-Results: feed.ef.example.org;
8
- dkim=pass (1024-bit key, unprotected) header.d=example.com header.i=@example.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=cCkHGzXN
9
- Received: from us-smtp-delivery-000.mimecast.com (ip-192-0-2-250.ap-northeast-1.compute.internal [192.0.2.250])
10
- by relaying1.ef.example.org (Postfix) with ESMTPS id YS7PlVh11Bz0QdTL
11
- for <nekochan@ef.example.org>; Mon, 6 Jan 2025 07:00:29 +0900 (JST)
12
- DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com;
13
- s=mimecast20190719; t=1779662812;
14
- h=from:from:reply-to:reply-to:subject:subject:date:date:
15
- message-id:message-id:to:to:cc:mime-version:mime-version:
16
- content-type:content-type:in-reply-to:in-reply-to: references:references;
17
- bh=...;
18
- b=...
19
- Received: from us-smtp-inbound-delivery-0.mimecast.com
20
- (us-mta-000-route1.us.mimecast.lan [10.20.30.40]) by relay.mimecast.com
21
- with ESMTP id us-mta-000-AAAAAAA-00000000000000-0; Sun, 05 Jan 2025
22
- 18:03:23 -0400
23
- X-MC-Unique: ...
24
- X-Mimecast-MFC-AGG-ID: ...
25
- From: <noreply@example.com>
26
- To: <nekochan@ef.example.org>
27
- Reply-To: <kijitora@example.com>
28
- Message-Id: <000000000-0000000000000@us-mta-000.us.mimecast.lan>
29
- Subject: =?UTF-8?Q?AutoRespons?= :Nyaan?
30
- Date: Sun, 05 Jan 2025 18:03:23 -0400
31
- Auto-Submitted: auto-replied
32
- X-Auto-Response-Suppress: OOF, AutoReply, DR, NDR, RN, NRN
33
- Precedence: bulk
34
- X-MC-System: ...
35
- Mime-Version: 1.0
36
- X-Mimecast-Spam-Score: 0
37
- X-Mimecast-Originator: example.com
38
- Content-Type: multipart/alternative;
39
- boundary="MCBoundary=_14445917231142800"
40
-
41
- --MCBoundary=_14445917231142800
42
- Content-Type: text/plain; charset=UTF-8
43
- Content-Transfer-Encoding: quoted-printable
44
-
45
- This email inbox kijitora@example.com is no longer in use. Please contact so=
46
- meone else at Example or visit https://www.example.com/en/contact for assist=
47
- ance.
48
-
49
- --MCBoundary=_14445917231142800
50
- Content-Type: text/html; charset=UTF-8
51
- Content-Transfer-Encoding: quoted-printable
52
-
53
- <html><head></head><body>This email inbox (<a href=3D"mailto:kijitora@example=
54
- .com">kijitora@example.com</a>) is no longer in use. Please contact someone e=
55
- lse at Example or visit https://www.example.com/en/contact for assistance.</b=
56
- ody></html>
57
-
58
- --MCBoundary=_14445917231142800--
59
-