@push.rocks/smartmta 5.1.3 → 5.2.1
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 +15 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/index.d.ts +3 -0
- package/dist_ts/index.js +4 -0
- package/dist_ts/logger.d.ts +17 -0
- package/dist_ts/logger.js +76 -0
- package/dist_ts/mail/core/classes.bouncemanager.d.ts +185 -0
- package/dist_ts/mail/core/classes.bouncemanager.js +569 -0
- package/dist_ts/mail/core/classes.email.d.ts +291 -0
- package/dist_ts/mail/core/classes.email.js +802 -0
- package/dist_ts/mail/core/classes.emailvalidator.d.ts +61 -0
- package/dist_ts/mail/core/classes.emailvalidator.js +184 -0
- package/dist_ts/mail/core/classes.templatemanager.d.ts +95 -0
- package/dist_ts/mail/core/classes.templatemanager.js +240 -0
- package/dist_ts/mail/core/index.d.ts +4 -0
- package/dist_ts/mail/core/index.js +6 -0
- package/dist_ts/mail/delivery/classes.delivery.queue.d.ts +163 -0
- package/dist_ts/mail/delivery/classes.delivery.queue.js +488 -0
- package/dist_ts/mail/delivery/classes.delivery.system.d.ts +160 -0
- package/dist_ts/mail/delivery/classes.delivery.system.js +630 -0
- package/dist_ts/mail/delivery/classes.unified.rate.limiter.d.ts +200 -0
- package/dist_ts/mail/delivery/classes.unified.rate.limiter.js +820 -0
- package/dist_ts/mail/delivery/index.d.ts +4 -0
- package/dist_ts/mail/delivery/index.js +6 -0
- package/dist_ts/mail/delivery/interfaces.d.ts +140 -0
- package/dist_ts/mail/delivery/interfaces.js +17 -0
- package/dist_ts/mail/index.d.ts +7 -0
- package/dist_ts/mail/index.js +12 -0
- package/dist_ts/mail/routing/classes.dkim.manager.d.ts +25 -0
- package/dist_ts/mail/routing/classes.dkim.manager.js +127 -0
- package/dist_ts/mail/routing/classes.dns.manager.d.ts +79 -0
- package/dist_ts/mail/routing/classes.dns.manager.js +415 -0
- package/dist_ts/mail/routing/classes.domain.registry.d.ts +54 -0
- package/dist_ts/mail/routing/classes.domain.registry.js +119 -0
- package/dist_ts/mail/routing/classes.email.action.executor.d.ts +33 -0
- package/dist_ts/mail/routing/classes.email.action.executor.js +137 -0
- package/dist_ts/mail/routing/classes.email.router.d.ts +171 -0
- package/dist_ts/mail/routing/classes.email.router.js +494 -0
- package/dist_ts/mail/routing/classes.unified.email.server.d.ts +241 -0
- package/dist_ts/mail/routing/classes.unified.email.server.js +935 -0
- package/dist_ts/mail/routing/index.d.ts +7 -0
- package/dist_ts/mail/routing/index.js +9 -0
- package/dist_ts/mail/routing/interfaces.d.ts +187 -0
- package/dist_ts/mail/routing/interfaces.js +2 -0
- package/dist_ts/mail/security/classes.dkimcreator.d.ts +72 -0
- package/dist_ts/mail/security/classes.dkimcreator.js +360 -0
- package/dist_ts/mail/security/classes.spfverifier.d.ts +62 -0
- package/dist_ts/mail/security/classes.spfverifier.js +87 -0
- package/dist_ts/mail/security/index.d.ts +2 -0
- package/dist_ts/mail/security/index.js +4 -0
- package/dist_ts/paths.d.ts +14 -0
- package/dist_ts/paths.js +39 -0
- package/dist_ts/plugins.d.ts +24 -0
- package/dist_ts/plugins.js +28 -0
- package/dist_ts/security/classes.contentscanner.d.ts +130 -0
- package/dist_ts/security/classes.contentscanner.js +338 -0
- package/dist_ts/security/classes.ipreputationchecker.d.ts +73 -0
- package/dist_ts/security/classes.ipreputationchecker.js +263 -0
- package/dist_ts/security/classes.rustsecuritybridge.d.ts +403 -0
- package/dist_ts/security/classes.rustsecuritybridge.js +502 -0
- package/dist_ts/security/classes.securitylogger.d.ts +140 -0
- package/dist_ts/security/classes.securitylogger.js +235 -0
- package/dist_ts/security/index.d.ts +4 -0
- package/dist_ts/security/index.js +5 -0
- package/package.json +6 -1
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/index.ts +3 -0
- package/ts/logger.ts +91 -0
- package/ts/mail/core/classes.bouncemanager.ts +731 -0
- package/ts/mail/core/classes.email.ts +942 -0
- package/ts/mail/core/classes.emailvalidator.ts +239 -0
- package/ts/mail/core/classes.templatemanager.ts +320 -0
- package/ts/mail/core/index.ts +5 -0
- package/ts/mail/delivery/classes.delivery.queue.ts +645 -0
- package/ts/mail/delivery/classes.delivery.system.ts +816 -0
- package/ts/mail/delivery/classes.unified.rate.limiter.ts +1053 -0
- package/ts/mail/delivery/index.ts +5 -0
- package/ts/mail/delivery/interfaces.ts +167 -0
- package/ts/mail/index.ts +17 -0
- package/ts/mail/routing/classes.dkim.manager.ts +157 -0
- package/ts/mail/routing/classes.dns.manager.ts +573 -0
- package/ts/mail/routing/classes.domain.registry.ts +139 -0
- package/ts/mail/routing/classes.email.action.executor.ts +175 -0
- package/ts/mail/routing/classes.email.router.ts +575 -0
- package/ts/mail/routing/classes.unified.email.server.ts +1207 -0
- package/ts/mail/routing/index.ts +9 -0
- package/ts/mail/routing/interfaces.ts +202 -0
- package/ts/mail/security/classes.dkimcreator.ts +447 -0
- package/ts/mail/security/classes.spfverifier.ts +126 -0
- package/ts/mail/security/index.ts +3 -0
- package/ts/paths.ts +48 -0
- package/ts/plugins.ts +53 -0
- package/ts/security/classes.contentscanner.ts +400 -0
- package/ts/security/classes.ipreputationchecker.ts +315 -0
- package/ts/security/classes.rustsecuritybridge.ts +964 -0
- package/ts/security/classes.securitylogger.ts +299 -0
- package/ts/security/index.ts +40 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { UnifiedDeliveryQueue, type IQueueItem } from './classes.delivery.queue.js';
|
|
3
|
+
import type { UnifiedEmailServer } from '../routing/classes.unified.email.server.js';
|
|
4
|
+
/**
|
|
5
|
+
* Delivery status enumeration
|
|
6
|
+
*/
|
|
7
|
+
export declare enum DeliveryStatus {
|
|
8
|
+
PENDING = "pending",
|
|
9
|
+
DELIVERING = "delivering",
|
|
10
|
+
DELIVERED = "delivered",
|
|
11
|
+
DEFERRED = "deferred",
|
|
12
|
+
FAILED = "failed"
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Delivery handler interface
|
|
16
|
+
*/
|
|
17
|
+
export interface IDeliveryHandler {
|
|
18
|
+
deliver(item: IQueueItem): Promise<any>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Delivery options
|
|
22
|
+
*/
|
|
23
|
+
export interface IMultiModeDeliveryOptions {
|
|
24
|
+
connectionPoolSize?: number;
|
|
25
|
+
socketTimeout?: number;
|
|
26
|
+
concurrentDeliveries?: number;
|
|
27
|
+
sendTimeout?: number;
|
|
28
|
+
verifyCertificates?: boolean;
|
|
29
|
+
tlsMinVersion?: string;
|
|
30
|
+
forwardHandler?: IDeliveryHandler;
|
|
31
|
+
deliveryHandler?: IDeliveryHandler;
|
|
32
|
+
processHandler?: IDeliveryHandler;
|
|
33
|
+
globalRateLimit?: number;
|
|
34
|
+
perPatternRateLimit?: Record<string, number>;
|
|
35
|
+
processBounces?: boolean;
|
|
36
|
+
bounceHandler?: {
|
|
37
|
+
processSmtpFailure: (recipient: string, smtpResponse: string, options: any) => Promise<any>;
|
|
38
|
+
};
|
|
39
|
+
onDeliveryStart?: (item: IQueueItem) => Promise<void>;
|
|
40
|
+
onDeliverySuccess?: (item: IQueueItem, result: any) => Promise<void>;
|
|
41
|
+
onDeliveryFailed?: (item: IQueueItem, error: string) => Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Delivery system statistics
|
|
45
|
+
*/
|
|
46
|
+
export interface IDeliveryStats {
|
|
47
|
+
activeDeliveries: number;
|
|
48
|
+
totalSuccessful: number;
|
|
49
|
+
totalFailed: number;
|
|
50
|
+
avgDeliveryTime: number;
|
|
51
|
+
byMode: {
|
|
52
|
+
forward: {
|
|
53
|
+
successful: number;
|
|
54
|
+
failed: number;
|
|
55
|
+
};
|
|
56
|
+
mta: {
|
|
57
|
+
successful: number;
|
|
58
|
+
failed: number;
|
|
59
|
+
};
|
|
60
|
+
process: {
|
|
61
|
+
successful: number;
|
|
62
|
+
failed: number;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
rateLimiting: {
|
|
66
|
+
currentRate: number;
|
|
67
|
+
globalLimit: number;
|
|
68
|
+
throttled: number;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Handles delivery for all email processing modes
|
|
73
|
+
*/
|
|
74
|
+
export declare class MultiModeDeliverySystem extends EventEmitter {
|
|
75
|
+
private queue;
|
|
76
|
+
private options;
|
|
77
|
+
private stats;
|
|
78
|
+
private deliveryTimes;
|
|
79
|
+
private activeDeliveries;
|
|
80
|
+
private running;
|
|
81
|
+
private throttled;
|
|
82
|
+
private rateLimitLastCheck;
|
|
83
|
+
private rateLimitCounter;
|
|
84
|
+
private emailServer?;
|
|
85
|
+
/**
|
|
86
|
+
* Create a new multi-mode delivery system
|
|
87
|
+
* @param queue Unified delivery queue
|
|
88
|
+
* @param options Delivery options
|
|
89
|
+
* @param emailServer Optional reference to unified email server for outbound delivery
|
|
90
|
+
*/
|
|
91
|
+
constructor(queue: UnifiedDeliveryQueue, options: IMultiModeDeliveryOptions, emailServer?: UnifiedEmailServer);
|
|
92
|
+
/**
|
|
93
|
+
* Start the delivery system
|
|
94
|
+
*/
|
|
95
|
+
start(): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Stop the delivery system
|
|
98
|
+
*/
|
|
99
|
+
stop(): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Process ready items from the queue
|
|
102
|
+
* @param items Queue items ready for processing
|
|
103
|
+
*/
|
|
104
|
+
private processItems;
|
|
105
|
+
/**
|
|
106
|
+
* Deliver an item from the queue
|
|
107
|
+
* @param item Queue item to deliver
|
|
108
|
+
*/
|
|
109
|
+
private deliverItem;
|
|
110
|
+
/**
|
|
111
|
+
* Default handler for forward mode delivery
|
|
112
|
+
* @param item Queue item
|
|
113
|
+
*/
|
|
114
|
+
private handleForwardDelivery;
|
|
115
|
+
/**
|
|
116
|
+
* Resolve MX records for a domain, sorted by priority (lowest first).
|
|
117
|
+
* Falls back to the domain itself as an A record per RFC 5321.
|
|
118
|
+
*/
|
|
119
|
+
private resolveMxForDomain;
|
|
120
|
+
/**
|
|
121
|
+
* Group recipient addresses by their domain part.
|
|
122
|
+
*/
|
|
123
|
+
private groupRecipientsByDomain;
|
|
124
|
+
/**
|
|
125
|
+
* Default handler for MTA mode delivery
|
|
126
|
+
* @param item Queue item
|
|
127
|
+
*/
|
|
128
|
+
private handleMtaDelivery;
|
|
129
|
+
/**
|
|
130
|
+
* Default handler for process mode delivery
|
|
131
|
+
* @param item Queue item
|
|
132
|
+
*/
|
|
133
|
+
private handleProcessDelivery;
|
|
134
|
+
/**
|
|
135
|
+
* Get file extension from filename
|
|
136
|
+
*/
|
|
137
|
+
private getFileExtension;
|
|
138
|
+
/**
|
|
139
|
+
* Apply DKIM signing to an email
|
|
140
|
+
*/
|
|
141
|
+
private applyDkimSigning;
|
|
142
|
+
/**
|
|
143
|
+
* Update delivery time statistics
|
|
144
|
+
*/
|
|
145
|
+
private updateDeliveryTimeStats;
|
|
146
|
+
/**
|
|
147
|
+
* Check if rate limit is exceeded
|
|
148
|
+
* @returns True if rate limited, false otherwise
|
|
149
|
+
*/
|
|
150
|
+
private checkRateLimit;
|
|
151
|
+
/**
|
|
152
|
+
* Update delivery options
|
|
153
|
+
* @param options New options
|
|
154
|
+
*/
|
|
155
|
+
updateOptions(options: Partial<IMultiModeDeliveryOptions>): void;
|
|
156
|
+
/**
|
|
157
|
+
* Get delivery statistics
|
|
158
|
+
*/
|
|
159
|
+
getStats(): IDeliveryStats;
|
|
160
|
+
}
|