@push.rocks/smartmta 5.1.2 → 5.2.0

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 (99) hide show
  1. package/changelog.md +14 -0
  2. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  3. package/dist_ts/00_commitinfo_data.js +9 -0
  4. package/dist_ts/index.d.ts +3 -0
  5. package/dist_ts/index.js +4 -0
  6. package/dist_ts/logger.d.ts +17 -0
  7. package/dist_ts/logger.js +76 -0
  8. package/dist_ts/mail/core/classes.bouncemanager.d.ts +185 -0
  9. package/dist_ts/mail/core/classes.bouncemanager.js +569 -0
  10. package/dist_ts/mail/core/classes.email.d.ts +291 -0
  11. package/dist_ts/mail/core/classes.email.js +802 -0
  12. package/dist_ts/mail/core/classes.emailvalidator.d.ts +61 -0
  13. package/dist_ts/mail/core/classes.emailvalidator.js +184 -0
  14. package/dist_ts/mail/core/classes.templatemanager.d.ts +95 -0
  15. package/dist_ts/mail/core/classes.templatemanager.js +240 -0
  16. package/dist_ts/mail/core/index.d.ts +4 -0
  17. package/dist_ts/mail/core/index.js +6 -0
  18. package/dist_ts/mail/delivery/classes.delivery.queue.d.ts +163 -0
  19. package/dist_ts/mail/delivery/classes.delivery.queue.js +488 -0
  20. package/dist_ts/mail/delivery/classes.delivery.system.d.ts +160 -0
  21. package/dist_ts/mail/delivery/classes.delivery.system.js +630 -0
  22. package/dist_ts/mail/delivery/classes.unified.rate.limiter.d.ts +200 -0
  23. package/dist_ts/mail/delivery/classes.unified.rate.limiter.js +820 -0
  24. package/dist_ts/mail/delivery/index.d.ts +4 -0
  25. package/dist_ts/mail/delivery/index.js +6 -0
  26. package/dist_ts/mail/delivery/interfaces.d.ts +140 -0
  27. package/dist_ts/mail/delivery/interfaces.js +17 -0
  28. package/dist_ts/mail/index.d.ts +7 -0
  29. package/dist_ts/mail/index.js +12 -0
  30. package/dist_ts/mail/routing/classes.dkim.manager.d.ts +25 -0
  31. package/dist_ts/mail/routing/classes.dkim.manager.js +127 -0
  32. package/dist_ts/mail/routing/classes.dns.manager.d.ts +79 -0
  33. package/dist_ts/mail/routing/classes.dns.manager.js +415 -0
  34. package/dist_ts/mail/routing/classes.domain.registry.d.ts +54 -0
  35. package/dist_ts/mail/routing/classes.domain.registry.js +119 -0
  36. package/dist_ts/mail/routing/classes.email.action.executor.d.ts +33 -0
  37. package/dist_ts/mail/routing/classes.email.action.executor.js +137 -0
  38. package/dist_ts/mail/routing/classes.email.router.d.ts +171 -0
  39. package/dist_ts/mail/routing/classes.email.router.js +494 -0
  40. package/dist_ts/mail/routing/classes.unified.email.server.d.ts +241 -0
  41. package/dist_ts/mail/routing/classes.unified.email.server.js +935 -0
  42. package/dist_ts/mail/routing/index.d.ts +7 -0
  43. package/dist_ts/mail/routing/index.js +9 -0
  44. package/dist_ts/mail/routing/interfaces.d.ts +187 -0
  45. package/dist_ts/mail/routing/interfaces.js +2 -0
  46. package/dist_ts/mail/security/classes.dkimcreator.d.ts +72 -0
  47. package/dist_ts/mail/security/classes.dkimcreator.js +360 -0
  48. package/dist_ts/mail/security/classes.spfverifier.d.ts +62 -0
  49. package/dist_ts/mail/security/classes.spfverifier.js +87 -0
  50. package/dist_ts/mail/security/index.d.ts +2 -0
  51. package/dist_ts/mail/security/index.js +4 -0
  52. package/dist_ts/paths.d.ts +14 -0
  53. package/dist_ts/paths.js +39 -0
  54. package/dist_ts/plugins.d.ts +24 -0
  55. package/dist_ts/plugins.js +28 -0
  56. package/dist_ts/security/classes.contentscanner.d.ts +130 -0
  57. package/dist_ts/security/classes.contentscanner.js +338 -0
  58. package/dist_ts/security/classes.ipreputationchecker.d.ts +73 -0
  59. package/dist_ts/security/classes.ipreputationchecker.js +263 -0
  60. package/dist_ts/security/classes.rustsecuritybridge.d.ts +398 -0
  61. package/dist_ts/security/classes.rustsecuritybridge.js +484 -0
  62. package/dist_ts/security/classes.securitylogger.d.ts +140 -0
  63. package/dist_ts/security/classes.securitylogger.js +235 -0
  64. package/dist_ts/security/index.d.ts +4 -0
  65. package/dist_ts/security/index.js +5 -0
  66. package/package.json +6 -1
  67. package/readme.md +52 -9
  68. package/ts/00_commitinfo_data.ts +8 -0
  69. package/ts/index.ts +3 -0
  70. package/ts/logger.ts +91 -0
  71. package/ts/mail/core/classes.bouncemanager.ts +731 -0
  72. package/ts/mail/core/classes.email.ts +942 -0
  73. package/ts/mail/core/classes.emailvalidator.ts +239 -0
  74. package/ts/mail/core/classes.templatemanager.ts +320 -0
  75. package/ts/mail/core/index.ts +5 -0
  76. package/ts/mail/delivery/classes.delivery.queue.ts +645 -0
  77. package/ts/mail/delivery/classes.delivery.system.ts +816 -0
  78. package/ts/mail/delivery/classes.unified.rate.limiter.ts +1053 -0
  79. package/ts/mail/delivery/index.ts +5 -0
  80. package/ts/mail/delivery/interfaces.ts +167 -0
  81. package/ts/mail/index.ts +17 -0
  82. package/ts/mail/routing/classes.dkim.manager.ts +157 -0
  83. package/ts/mail/routing/classes.dns.manager.ts +573 -0
  84. package/ts/mail/routing/classes.domain.registry.ts +139 -0
  85. package/ts/mail/routing/classes.email.action.executor.ts +175 -0
  86. package/ts/mail/routing/classes.email.router.ts +575 -0
  87. package/ts/mail/routing/classes.unified.email.server.ts +1207 -0
  88. package/ts/mail/routing/index.ts +9 -0
  89. package/ts/mail/routing/interfaces.ts +202 -0
  90. package/ts/mail/security/classes.dkimcreator.ts +447 -0
  91. package/ts/mail/security/classes.spfverifier.ts +126 -0
  92. package/ts/mail/security/index.ts +3 -0
  93. package/ts/paths.ts +48 -0
  94. package/ts/plugins.ts +53 -0
  95. package/ts/security/classes.contentscanner.ts +400 -0
  96. package/ts/security/classes.ipreputationchecker.ts +315 -0
  97. package/ts/security/classes.rustsecuritybridge.ts +943 -0
  98. package/ts/security/classes.securitylogger.ts +299 -0
  99. 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
+ }