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.
- package/CHANGELOG.md +16 -0
- package/data/google-crawlers.json +1 -1
- package/lib/account/account-state.js +248 -0
- package/lib/account.js +17 -178
- package/lib/api-routes/account-routes.js +1006 -0
- package/lib/api-routes/message-routes.js +1377 -0
- package/lib/consts.js +12 -2
- package/lib/email-client/base-client.js +282 -771
- package/lib/email-client/gmail/gmail-api.js +243 -0
- package/lib/email-client/gmail-client.js +145 -53
- package/lib/email-client/imap/mailbox.js +24 -698
- package/lib/email-client/imap/sync-operations.js +812 -0
- package/lib/email-client/imap-client.js +3 -1
- package/lib/email-client/message-builder.js +566 -0
- package/lib/email-client/notification-handler.js +314 -0
- package/lib/email-client/outlook/graph-api.js +326 -0
- package/lib/email-client/outlook-client.js +159 -113
- package/lib/email-client/smtp-pool-manager.js +196 -0
- package/lib/imapproxy/imap-server.js +3 -12
- package/lib/oauth/gmail.js +4 -4
- package/lib/oauth/mail-ru.js +30 -5
- package/lib/oauth/outlook.js +57 -3
- package/lib/oauth/pubsub/google.js +30 -11
- package/lib/oauth/scope-checker.js +202 -0
- package/lib/oauth2-apps.js +8 -4
- package/lib/redis-operations.js +484 -0
- package/lib/routes-ui.js +283 -2582
- package/lib/tools.js +5 -196
- package/lib/ui-routes/account-routes.js +1931 -0
- package/lib/ui-routes/admin-config-routes.js +1233 -0
- package/lib/ui-routes/admin-entities-routes.js +2367 -0
- package/lib/ui-routes/oauth-routes.js +992 -0
- package/lib/utils/network.js +237 -0
- package/package.json +12 -12
- package/sbom.json +1 -1
- package/static/js/app.js +5 -5
- package/static/licenses.html +91 -21
- package/translations/de.mo +0 -0
- package/translations/de.po +85 -82
- package/translations/en.mo +0 -0
- package/translations/en.po +63 -71
- package/translations/et.mo +0 -0
- package/translations/et.po +84 -82
- package/translations/fr.mo +0 -0
- package/translations/fr.po +85 -82
- package/translations/ja.mo +0 -0
- package/translations/ja.po +84 -82
- package/translations/messages.pot +67 -80
- package/translations/nl.mo +0 -0
- package/translations/nl.po +86 -82
- package/translations/pl.mo +0 -0
- package/translations/pl.po +84 -82
- package/views/account/security.hbs +4 -4
- package/views/accounts/account.hbs +13 -13
- package/views/accounts/register/imap-server.hbs +12 -12
- package/views/config/document-store/pre-processing/index.hbs +4 -2
- package/views/config/oauth/app.hbs +6 -7
- package/views/config/oauth/index.hbs +2 -2
- package/views/config/service.hbs +3 -4
- package/views/dashboard.hbs +5 -7
- package/views/error.hbs +22 -7
- package/views/gateways/gateway.hbs +2 -2
- package/views/partials/add_account_modal.hbs +7 -10
- package/views/partials/document_store_header.hbs +1 -1
- package/views/partials/editor_scope_info.hbs +0 -1
- package/views/partials/oauth_config_header.hbs +1 -1
- package/views/partials/side_menu.hbs +3 -3
- package/views/partials/webhook_form.hbs +2 -2
- package/views/templates/index.hbs +1 -1
- package/views/templates/template.hbs +8 -8
- package/views/tokens/index.hbs +6 -6
- package/views/tokens/new.hbs +1 -1
- package/views/webhooks/index.hbs +4 -4
- package/views/webhooks/webhook.hbs +7 -7
- package/workers/api.js +148 -2436
- package/workers/smtp.js +2 -1
- package/workers/webhooks.js +6 -0
- package/lib/imapproxy/imap-core/test/client.js +0 -46
- package/lib/imapproxy/imap-core/test/fixtures/append.eml +0 -1196
- package/lib/imapproxy/imap-core/test/fixtures/chunks.js +0 -44
- package/lib/imapproxy/imap-core/test/fixtures/fix1.eml +0 -6
- package/lib/imapproxy/imap-core/test/fixtures/fix2.eml +0 -599
- package/lib/imapproxy/imap-core/test/fixtures/fix3.eml +0 -32
- package/lib/imapproxy/imap-core/test/fixtures/fix4.eml +0 -6
- package/lib/imapproxy/imap-core/test/fixtures/mimetorture.eml +0 -599
- package/lib/imapproxy/imap-core/test/fixtures/mimetorture.js +0 -2740
- package/lib/imapproxy/imap-core/test/fixtures/mimetorture.json +0 -1411
- package/lib/imapproxy/imap-core/test/fixtures/mimetree.js +0 -85
- package/lib/imapproxy/imap-core/test/fixtures/nodemailer.eml +0 -582
- package/lib/imapproxy/imap-core/test/fixtures/ryan_finnie_mime_torture.eml +0 -599
- package/lib/imapproxy/imap-core/test/fixtures/simple.eml +0 -42
- package/lib/imapproxy/imap-core/test/fixtures/simple.json +0 -164
- package/lib/imapproxy/imap-core/test/imap-compile-stream-test.js +0 -671
- package/lib/imapproxy/imap-core/test/imap-compiler-test.js +0 -272
- package/lib/imapproxy/imap-core/test/imap-indexer-test.js +0 -236
- package/lib/imapproxy/imap-core/test/imap-parser-test.js +0 -922
- package/lib/imapproxy/imap-core/test/memory-notifier.js +0 -129
- package/lib/imapproxy/imap-core/test/prepare.sh +0 -74
- package/lib/imapproxy/imap-core/test/protocol-test.js +0 -1756
- package/lib/imapproxy/imap-core/test/search-test.js +0 -1356
- package/lib/imapproxy/imap-core/test/test-client.js +0 -152
- package/lib/imapproxy/imap-core/test/test-server.js +0 -623
- package/lib/imapproxy/imap-core/test/tools-test.js +0 -22
- package/test/api-test.js +0 -899
- package/test/autoreply-test.js +0 -327
- package/test/bounce-test.js +0 -151
- package/test/complaint-test.js +0 -256
- package/test/fixtures/autoreply/LICENSE +0 -27
- package/test/fixtures/autoreply/rfc3834-01.eml +0 -23
- package/test/fixtures/autoreply/rfc3834-02.eml +0 -24
- package/test/fixtures/autoreply/rfc3834-03.eml +0 -26
- package/test/fixtures/autoreply/rfc3834-04.eml +0 -48
- package/test/fixtures/autoreply/rfc3834-05.eml +0 -19
- package/test/fixtures/autoreply/rfc3834-06.eml +0 -59
- package/test/fixtures/bounces/163.eml +0 -2521
- package/test/fixtures/bounces/fastmail.eml +0 -242
- package/test/fixtures/bounces/gmail.eml +0 -252
- package/test/fixtures/bounces/hotmail.eml +0 -655
- package/test/fixtures/bounces/mailru.eml +0 -121
- package/test/fixtures/bounces/outlook.eml +0 -1107
- package/test/fixtures/bounces/postfix.eml +0 -101
- package/test/fixtures/bounces/rambler.eml +0 -116
- package/test/fixtures/bounces/workmail.eml +0 -142
- package/test/fixtures/bounces/yahoo.eml +0 -139
- package/test/fixtures/bounces/zoho.eml +0 -83
- package/test/fixtures/bounces/zonemta.eml +0 -100
- package/test/fixtures/complaints/LICENSE +0 -27
- package/test/fixtures/complaints/amazonses.eml +0 -72
- package/test/fixtures/complaints/dmarc.eml +0 -59
- package/test/fixtures/complaints/hotmail.eml +0 -49
- package/test/fixtures/complaints/optout.eml +0 -40
- package/test/fixtures/complaints/standard-arf.eml +0 -68
- package/test/fixtures/complaints/yahoo.eml +0 -68
- package/test/oauth2-apps-test.js +0 -301
- package/test/sendonly-test.js +0 -160
- package/test/test-config.js +0 -34
- package/test/webhooks-server.js +0 -39
package/test/complaint-test.js
DELETED
|
@@ -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
|
-
|