nolimit-x 1.0.65 → 1.0.66
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/package.json +2 -2
- package/src/sender.js +11 -24
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nolimit-x",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.66",
|
|
4
4
|
"description": "Advanced email sender ",
|
|
5
5
|
"main": "src/cli.js",
|
|
6
6
|
"bin": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"optionalDependencies": {
|
|
22
22
|
"@nolimit-x/darwin-arm64": "1.0.53",
|
|
23
23
|
"@nolimit-x/darwin-x64": "1.0.53",
|
|
24
|
-
"@nolimit-x/linux-x64": "1.0.
|
|
24
|
+
"@nolimit-x/linux-x64": "1.0.58",
|
|
25
25
|
"@nolimit-x/win32-x64": "1.0.53"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
package/src/sender.js
CHANGED
|
@@ -401,31 +401,18 @@ async function send(options) {
|
|
|
401
401
|
const userHeaders = processedEmail.rawHeaders || {};
|
|
402
402
|
let customHeaders = { ...userHeaders, ...providerHeaders };
|
|
403
403
|
|
|
404
|
-
// List-Unsubscribe
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
customHeaders['List-Unsubscribe-Post'] = 'List-Unsubscribe=One-Click';
|
|
409
|
-
|
|
410
|
-
// Reply simulation
|
|
411
|
-
let subject = processedEmail.subject;
|
|
412
|
-
if (shouldSimulateReplyPolicy(domain)) {
|
|
413
|
-
const rprov = detectProvider(domain);
|
|
414
|
-
const threadMsgId = cacheWrappers.getMessageIdWithCache(domain, (domain) => {
|
|
415
|
-
return generateProviderMessageId(domain, rprov);
|
|
416
|
-
});
|
|
417
|
-
customHeaders['In-Reply-To'] = threadMsgId;
|
|
418
|
-
customHeaders['References'] = threadMsgId;
|
|
419
|
-
if (!/^re:/i.test(subject)) {
|
|
420
|
-
subject = 'Re: ' + subject;
|
|
421
|
-
}
|
|
404
|
+
// List-Unsubscribe: only add if user configured an endpoint
|
|
405
|
+
if (conf.unsubscribe_url) {
|
|
406
|
+
customHeaders['List-Unsubscribe'] = `<${conf.unsubscribe_url}>`;
|
|
407
|
+
customHeaders['List-Unsubscribe-Post'] = 'List-Unsubscribe=One-Click';
|
|
422
408
|
}
|
|
423
409
|
|
|
424
|
-
//
|
|
425
|
-
|
|
410
|
+
// Reply simulation DISABLED — fake In-Reply-To/References to
|
|
411
|
+
// non-existent threads trigger spam filters in Gmail/Outlook.
|
|
412
|
+
let subject = processedEmail.subject;
|
|
426
413
|
|
|
427
|
-
//
|
|
428
|
-
|
|
414
|
+
// Message-ID and Date are generated by lettre (Rust side).
|
|
415
|
+
// Adding duplicates here causes Gmail/Outlook to reject the email.
|
|
429
416
|
|
|
430
417
|
// HEADER ORDER RANDOMIZATION
|
|
431
418
|
const shuffledHeaders = {};
|
|
@@ -1091,7 +1078,7 @@ async function buildAdvancedRustJob(config, recipient, messageHtml, configManage
|
|
|
1091
1078
|
// Keep disabled unless targeting a known-vulnerable intermediary MTA.
|
|
1092
1079
|
smtp_smuggling: false,
|
|
1093
1080
|
custom_headers: conf.raw_headers || {},
|
|
1094
|
-
stealth_mode: 'smart',
|
|
1081
|
+
stealth_mode: conf.stealth_mode || 'smart',
|
|
1095
1082
|
attachments: attachments,
|
|
1096
1083
|
header_tricks: null,
|
|
1097
1084
|
mime_tricks: null,
|
|
@@ -1188,7 +1175,7 @@ function buildBasicRustJob(config, recipient, messageHtml, configManager) {
|
|
|
1188
1175
|
body: messageHtml,
|
|
1189
1176
|
raw_smtp: true, // Enable raw SMTP (like original working code)
|
|
1190
1177
|
custom_headers: conf.raw_headers || {},
|
|
1191
|
-
stealth_mode: 'smart',
|
|
1178
|
+
stealth_mode: conf.stealth_mode || 'smart',
|
|
1192
1179
|
attachments: attachments,
|
|
1193
1180
|
header_tricks: null,
|
|
1194
1181
|
mime_tricks: null,
|