@serve.zone/coremail 1.1.0 → 1.3.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.
- package/changelog.md +43 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.auth.d.ts +19 -0
- package/dist_ts/classes.auth.js +58 -1
- package/dist_ts/classes.coremail.d.ts +3 -0
- package/dist_ts/classes.coremail.js +11 -4
- package/dist_ts/classes.gateway.d.ts +11 -1
- package/dist_ts/classes.gateway.js +101 -63
- package/dist_ts/classes.inbound.d.ts +10 -1
- package/dist_ts/classes.inbound.js +45 -7
- package/dist_ts/classes.maintenance.js +16 -1
- package/dist_ts/classes.models.d.ts +24 -2
- package/dist_ts/classes.models.js +72 -2
- package/dist_ts/classes.server.d.ts +6 -2
- package/dist_ts/classes.server.js +18 -68
- package/dist_ts/classes.smtpsubmission.d.ts +85 -0
- package/dist_ts/classes.smtpsubmission.js +379 -0
- package/dist_ts/classes.storage.d.ts +9 -0
- package/dist_ts/classes.storage.js +44 -1
- package/dist_ts/classes.submissions.d.ts +27 -1
- package/dist_ts/classes.submissions.js +164 -14
- package/dist_ts/coremail.errors.d.ts +18 -0
- package/dist_ts/coremail.errors.js +84 -0
- package/dist_ts/coremail.log.d.ts +1 -1
- package/dist_ts/coremail.log.js +1 -1
- package/dist_ts/coremail.mime.d.ts +15 -0
- package/dist_ts/coremail.mime.js +76 -1
- package/dist_ts/coremail.persistence.d.ts +38 -1
- package/dist_ts/coremail.persistence.js +124 -40
- package/dist_ts/coremail.stats.d.ts +72 -0
- package/dist_ts/coremail.stats.js +242 -0
- package/dist_ts/coremail.validation.d.ts +15 -2
- package/dist_ts/coremail.validation.js +26 -78
- package/dist_ts/interfaces.d.ts +18 -0
- package/dist_ts/plugins.d.ts +1 -0
- package/dist_ts/plugins.js +2 -1
- package/package.json +12 -11
- package/readme.md +51 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.auth.ts +77 -0
- package/ts/classes.coremail.ts +20 -0
- package/ts/classes.gateway.ts +121 -66
- package/ts/classes.inbound.ts +71 -6
- package/ts/classes.maintenance.ts +14 -0
- package/ts/classes.models.ts +67 -1
- package/ts/classes.server.ts +23 -80
- package/ts/classes.smtpsubmission.ts +466 -0
- package/ts/classes.storage.ts +54 -0
- package/ts/classes.submissions.ts +247 -12
- package/ts/coremail.errors.ts +111 -0
- package/ts/coremail.log.ts +1 -0
- package/ts/coremail.mime.ts +89 -0
- package/ts/coremail.persistence.ts +196 -48
- package/ts/coremail.stats.ts +342 -0
- package/ts/coremail.validation.ts +31 -103
- package/ts/interfaces.ts +20 -0
- package/ts/plugins.ts +1 -0
package/changelog.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026-09-15 - 1.3.0
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- accept authenticated SMTP submissions and report per-service mail statistics (msa)
|
|
8
|
+
- Add `CoreMailSubmissionService.submitRaw()`, the exact-byte outbound entry point: it enforces the same binding authority, sender authorization, serialized-MIME byte budget and minute/day quota the API path enforces, stores the submitted bytes verbatim as the submission's immutable MIME, and leaves the record in exactly the state `finalize()` leaves an API submission in, so the existing outbound worker and gateway hand it off unchanged.
|
|
9
|
+
- Record how each submission entered CoreMail (`source: 'api' | 'smtp'`) and expose it on the wire. Records persisted before the discriminator existed are read as API submissions. An SMTP submission has no part descriptors, which is the only place the parts rules are relaxed.
|
|
10
|
+
- Add `CoreMailSmtpSubmissionServer`, a smartmta-backed SMTP submission listener (MSA) driven by `ICoreMailDesiredState.smtp`. It runs only when the listener is enabled and both PEM secrets resolve, restarts when the smtp section changes, and joins shutdown. SMTP AUTH uses the binding id as the username and any accepted binding credential as the password, verified through the same argon2id code and per-identity limiter the socket path uses. smartmta owns the transport only: nothing is stored, queued or forwarded by it.
|
|
11
|
+
- Report the listener on `GET /ready` as `smtpSubmission`. An enabled listener that cannot present certificate material stays down and is reported unavailable rather than falling open to cleartext.
|
|
12
|
+
- Add per-binding daily mail counters and the control-session `coreMailGetServiceMailStatistics` method with an opaque composite cursor and a bounded page size. Every counter increment commits in the same transaction as the durable transition it counts, so replayed transitions never double-count. Counter rows are retained for 90 days.
|
|
13
|
+
- Answer gateway-facing handlers with the same privacy-safe typed error envelope the workload handlers use, so the transport can distinguish `QUOTA_EXCEEDED` from `STATE_CONFLICT`.
|
|
14
|
+
- Populate inbound `messageId` and `subject` from a bounded prefix of the stored message, which the gateway message descriptor cannot carry.
|
|
15
|
+
- Adopt the contract package's `normalizeCoreMailGatewayMessage` and `normalizeCoreMailConnectionInfo` in place of local copies, pinned by a routing-handle digest regression test.
|
|
16
|
+
|
|
17
|
+
### Fixes
|
|
18
|
+
|
|
19
|
+
- Consume @push.rocks/smartmta 9.6.1, which ships the third-party notices for the statically linked mailer-bin the Docker image redistributes.
|
|
20
|
+
|
|
21
|
+
### Maintenance
|
|
22
|
+
|
|
23
|
+
- Update tstest to 6.1.0 for the release.
|
|
24
|
+
|
|
25
|
+
## 2026-09-15 - 1.2.0
|
|
26
|
+
|
|
27
|
+
### Features
|
|
28
|
+
|
|
29
|
+
- move the control transport onto the mesh majors (transport)
|
|
30
|
+
- Raise `@api.global/typedserver` ^8.10.0 → ^11.4.1, `@api.global/typedsocket` ^5.1.1 → ^8.2.1, `@api.global/typedrequest` ^3.7.0 → ^8.0.4, `@api.global/typedrequest-interfaces` ^4.0.0 → ^7.1.0 and pin `@serve.zone/interfaces` to 30.12.0, as one coherent set. The package was the last holdout on typedsocket 5: an 8.x client rejects in `onopen` with `TypedSocketHandshakeError` unless the server answers `__typedsocket_checkVersion`, which 5.1.1 never registered, so `SzCoreMailConnector.init()` failed before sending anything and the outbound gateway link broke identically.
|
|
31
|
+
- Type `addHandler`'s callback as typedrequest's own `THandlerFunction`. Since typedrequest 8 both sides are wrapped in the `TReverseVirtualStreamDirections` mapped type, which does not reduce inside a generic wrapper, so a restated signature is no longer assignable. The 14 registrations are unchanged — concrete request types reduce normally.
|
|
32
|
+
- Add `test/test.socket.node.ts`: a real typedsocket client against a real listener, covering the version handshake, `websocketAdmission` state reaching the peer, the exact seven-key authentication envelope, session storage against the real peer, the observed failure mode of a bad credential, typed error-envelope round-tripping, and the pre-auth sweep terminating a real socket. Verified red before this change with the exact production symptom and green after. Every other suite hands the server hand-written peer literals and therefore cannot observe the transport at all — which is how the mismatch survived unnoticed.
|
|
33
|
+
- Record two contract facts the new coverage established: a failed workload authentication closes the socket (`peer.close(4401)` wins the race against the error) so callers see a disconnect rather than an `AUTHENTICATION_FAILED` envelope; and typed error data does survive the v8 wire intact on paths that leave the peer open.
|
|
34
|
+
- Add `test/readme.hints.md` with the transport background and the open platformclient follow-up. It sits under `test/` rather than the package root because npm-packlist force-includes every root `readme.*` regardless of the `files` array, and this package publishes publicly.
|
|
35
|
+
|
|
36
|
+
### Fixes
|
|
37
|
+
|
|
38
|
+
- update test and mongo development dependencies (deps-dev)
|
|
39
|
+
- Update @git.zone/tstest from ^3.6.7 to 6.0.0
|
|
40
|
+
- Update @push.rocks/smartmongo from ^7.0.0 to 9.0.0
|
|
41
|
+
|
|
42
|
+
### Maintenance
|
|
43
|
+
|
|
44
|
+
- Update pnpm to 12.4.0, tsbuild to 4.4.3, tsdocker to 3.5.8 and Node typings to 26.5.0 for the release.
|
|
45
|
+
|
|
3
46
|
## 2026-08-03 - 1.1.0
|
|
4
47
|
|
|
5
48
|
### Features
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@serve.zone/coremail',
|
|
6
|
-
version: '1.
|
|
6
|
+
version: '1.3.0',
|
|
7
7
|
description: 'Authenticated mail persistence and delivery orchestration for serve.zone workloads.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHFGQUFxRjtDQUNuRyxDQUFBIn0=
|
|
@@ -54,6 +54,25 @@ export declare class CoreMailAuth {
|
|
|
54
54
|
private requireSecretShape;
|
|
55
55
|
private verify;
|
|
56
56
|
authenticateControl(peerArg: ICoreMailPeer, requestArg: plugins.serveZoneInterfaces.requests.coremail.IReq_CoreMailAuthenticateControl['request']): Promise<ICoreMailControlSession>;
|
|
57
|
+
/**
|
|
58
|
+
* Verify an SMTP submission credential.
|
|
59
|
+
*
|
|
60
|
+
* SMTP AUTH carries no credential id, so every currently accepted verifier
|
|
61
|
+
* of the binding is tried. Verification, the argon2id code and the
|
|
62
|
+
* per-identity limiter are the socket path's: the identity key is the same
|
|
63
|
+
* `workload:<bindingId>`, so a brute force cannot escape the limit by
|
|
64
|
+
* switching surface.
|
|
65
|
+
*
|
|
66
|
+
* Returns undefined for every refusal — an unknown binding, a binding that
|
|
67
|
+
* is not active or not outbound-capable, and a wrong secret are deliberately
|
|
68
|
+
* indistinguishable to the caller.
|
|
69
|
+
*/
|
|
70
|
+
authenticateSmtpSubmission(bindingIdArg: string, secretArg: string): Promise<{
|
|
71
|
+
binding: plugins.serveZoneInterfaces.data.ICoreMailBindingDesiredState;
|
|
72
|
+
configEpoch: number;
|
|
73
|
+
credentialId: string;
|
|
74
|
+
credentialVersion: number;
|
|
75
|
+
} | undefined>;
|
|
57
76
|
authenticateWorkload(peerArg: ICoreMailPeer, requestArg: plugins.serveZoneInterfaces.requests.coremail.IReq_CoreMailAuthenticateWorkload['request']): Promise<ICoreMailWorkloadSession>;
|
|
58
77
|
requireControlSession(peerArg: ICoreMailPeer): ICoreMailControlSession;
|
|
59
78
|
requireWorkloadSession(peerArg: ICoreMailPeer, operationArg: plugins.serveZoneInterfaces.data.TCoreMailWorkloadOperation): Promise<{
|
package/dist_ts/classes.auth.js
CHANGED
|
@@ -215,6 +215,63 @@ export class CoreMailAuth {
|
|
|
215
215
|
throw new CoreMailAuthenticationError();
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* Verify an SMTP submission credential.
|
|
220
|
+
*
|
|
221
|
+
* SMTP AUTH carries no credential id, so every currently accepted verifier
|
|
222
|
+
* of the binding is tried. Verification, the argon2id code and the
|
|
223
|
+
* per-identity limiter are the socket path's: the identity key is the same
|
|
224
|
+
* `workload:<bindingId>`, so a brute force cannot escape the limit by
|
|
225
|
+
* switching surface.
|
|
226
|
+
*
|
|
227
|
+
* Returns undefined for every refusal — an unknown binding, a binding that
|
|
228
|
+
* is not active or not outbound-capable, and a wrong secret are deliberately
|
|
229
|
+
* indistinguishable to the caller.
|
|
230
|
+
*/
|
|
231
|
+
async authenticateSmtpSubmission(bindingIdArg, secretArg) {
|
|
232
|
+
let failureCode = 'INVALID_INPUT';
|
|
233
|
+
try {
|
|
234
|
+
const desiredState = await this.getActiveDesiredState();
|
|
235
|
+
const bindingId = requireCoreMailIdentifier(bindingIdArg, 'bindingId');
|
|
236
|
+
const secret = this.requireSecretShape(secretArg);
|
|
237
|
+
failureCode = 'UNKNOWN_BINDING';
|
|
238
|
+
const binding = desiredState?.bindings.find((bindingArg) => bindingArg.bindingId === bindingId
|
|
239
|
+
&& bindingArg.state === 'active'
|
|
240
|
+
&& bindingArg.capabilities.includes('outbound'));
|
|
241
|
+
if (!desiredState || !binding) {
|
|
242
|
+
throw new CoreMailAuthenticationError();
|
|
243
|
+
}
|
|
244
|
+
failureCode = 'UNKNOWN_CREDENTIAL';
|
|
245
|
+
const accepted = binding.credentials.filter((credentialArg) => findAcceptedVerifier(binding.credentials, credentialArg.credentialId, credentialArg.version, this.now()) !== undefined);
|
|
246
|
+
if (accepted.length === 0) {
|
|
247
|
+
throw new CoreMailAuthenticationError();
|
|
248
|
+
}
|
|
249
|
+
failureCode = 'VERIFIER_REJECTED';
|
|
250
|
+
for (const verifier of accepted) {
|
|
251
|
+
try {
|
|
252
|
+
await this.verify(verifier, secret, `workload:${bindingId}`);
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
if (error instanceof CoreMailAuthLimitError)
|
|
256
|
+
throw error;
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
return {
|
|
260
|
+
binding,
|
|
261
|
+
configEpoch: desiredState.configEpoch,
|
|
262
|
+
credentialId: verifier.credentialId,
|
|
263
|
+
credentialVersion: verifier.version,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
throw new CoreMailAuthenticationError();
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
await logCoreMailFailure('auth', error instanceof CoreMailAuthLimitError
|
|
270
|
+
? 'LIMITER_EXHAUSTED'
|
|
271
|
+
: failureCode, undefined, { surface: 'smtp' }).catch(() => undefined);
|
|
272
|
+
return undefined;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
218
275
|
async authenticateWorkload(peerArg, requestArg) {
|
|
219
276
|
this.requireFreshPeer(peerArg);
|
|
220
277
|
let failureCode = 'INVALID_INPUT';
|
|
@@ -310,4 +367,4 @@ export class CoreMailAuth {
|
|
|
310
367
|
return { session, binding };
|
|
311
368
|
}
|
|
312
369
|
}
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBUXhDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsMEJBQTBCLEdBQzNCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFPdkQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsZ0NBQWdDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsNEJBQTRCLENBQUM7QUFFdkUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLEtBQUs7SUFDcEQ7UUFDRSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSwyQkFBMkI7SUFDckU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLEtBQUs7SUFDbkQ7UUFDRSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLDRCQUE0QixDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxLQUFLO0lBQ3REO1FBQ0UsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRywrQkFBK0IsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUF1QkQsTUFBTSxPQUFPLG1CQUFtQjtJQUNiLGVBQWUsQ0FBUztJQUN4QixjQUFjLENBQVM7SUFDdkIsYUFBYSxDQUFTO0lB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
|
|
370
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBUXhDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsMEJBQTBCLEdBQzNCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFPdkQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsZ0NBQWdDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsNEJBQTRCLENBQUM7QUFFdkUsTUFBTSxPQUFPLDJCQUE0QixTQUFRLEtBQUs7SUFDcEQ7UUFDRSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSwyQkFBMkI7SUFDckU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLEtBQUs7SUFDbkQ7UUFDRSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLDRCQUE0QixDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxLQUFLO0lBQ3REO1FBQ0UsS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRywrQkFBK0IsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUF1QkQsTUFBTSxPQUFPLG1CQUFtQjtJQUNiLGVBQWUsQ0FBUztJQUN4QixjQUFjLENBQVM7SUFDdkIsYUFBYSxDQUFTO0lB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
|
|
@@ -6,6 +6,7 @@ import { CoreMailInboundService } from './classes.inbound.js';
|
|
|
6
6
|
import { CoreMailMaintenanceService } from './classes.maintenance.js';
|
|
7
7
|
import { type ICoreMailModels } from './classes.models.js';
|
|
8
8
|
import { CoreMailServer } from './classes.server.js';
|
|
9
|
+
import { CoreMailSmtpSubmissionServer } from './classes.smtpsubmission.js';
|
|
9
10
|
import { CoreMailStorage } from './classes.storage.js';
|
|
10
11
|
import { CoreMailSubmissionService } from './classes.submissions.js';
|
|
11
12
|
import { CoreMailTransferService } from './classes.transfer.js';
|
|
@@ -22,6 +23,7 @@ export declare class CoreMail {
|
|
|
22
23
|
readonly inbound: CoreMailInboundService;
|
|
23
24
|
readonly maintenance: CoreMailMaintenanceService;
|
|
24
25
|
readonly gateway: CoreMailGateway;
|
|
26
|
+
readonly smtpSubmission: CoreMailSmtpSubmissionServer;
|
|
25
27
|
readonly server: CoreMailServer;
|
|
26
28
|
readonly outboundWorker: CoreMailOutboundWorker;
|
|
27
29
|
private lifecycleState;
|
|
@@ -30,6 +32,7 @@ export declare class CoreMail {
|
|
|
30
32
|
private databaseStarted;
|
|
31
33
|
private storageStarted;
|
|
32
34
|
private gatewayStarted;
|
|
35
|
+
private smtpSubmissionStarted;
|
|
33
36
|
private serverStarted;
|
|
34
37
|
private workerStarted;
|
|
35
38
|
private maintenanceStarted;
|
|
@@ -7,6 +7,7 @@ import { CoreMailInboundService } from './classes.inbound.js';
|
|
|
7
7
|
import { CoreMailMaintenanceService } from './classes.maintenance.js';
|
|
8
8
|
import { createCoreMailModels, prepareCoreMailModelsForTransactions, } from './classes.models.js';
|
|
9
9
|
import { CoreMailServer } from './classes.server.js';
|
|
10
|
+
import { CoreMailSmtpSubmissionServer } from './classes.smtpsubmission.js';
|
|
10
11
|
import { CoreMailStorage } from './classes.storage.js';
|
|
11
12
|
import { CoreMailSubmissionService } from './classes.submissions.js';
|
|
12
13
|
import { CoreMailTransferService } from './classes.transfer.js';
|
|
@@ -22,6 +23,7 @@ export class CoreMail {
|
|
|
22
23
|
inbound;
|
|
23
24
|
maintenance;
|
|
24
25
|
gateway;
|
|
26
|
+
smtpSubmission;
|
|
25
27
|
server;
|
|
26
28
|
outboundWorker;
|
|
27
29
|
lifecycleState = 'new';
|
|
@@ -30,6 +32,7 @@ export class CoreMail {
|
|
|
30
32
|
databaseStarted = false;
|
|
31
33
|
storageStarted = false;
|
|
32
34
|
gatewayStarted = false;
|
|
35
|
+
smtpSubmissionStarted = false;
|
|
33
36
|
serverStarted = false;
|
|
34
37
|
workerStarted = false;
|
|
35
38
|
maintenanceStarted = false;
|
|
@@ -43,10 +46,11 @@ export class CoreMail {
|
|
|
43
46
|
this.desiredState = new CoreMailDesiredStateService(this.database, this.models, this.storage, this.transfers, configArg.replica, (bindingArg, configEpochArg) => server?.activeSessionCounts(bindingArg, configEpochArg) ?? []);
|
|
44
47
|
this.auth = new CoreMailAuth(configArg.controlBootstrap, this.desiredState.getActiveDesiredState);
|
|
45
48
|
this.submissions = new CoreMailSubmissionService(this.database, this.models, this.storage, this.transfers);
|
|
46
|
-
this.inbound = new CoreMailInboundService(this.database, this.models, this.transfers, configArg.replica.serviceId, this.desiredState.getActiveDesiredState, configArg.resolveRuntimeSecret);
|
|
47
|
-
this.gateway = new CoreMailGateway(configArg, this.models, this.transfers, this.inbound, this.desiredState.getActiveDesiredState);
|
|
49
|
+
this.inbound = new CoreMailInboundService(this.database, this.models, this.transfers, this.storage, configArg.replica.serviceId, this.desiredState.getActiveDesiredState, configArg.resolveRuntimeSecret);
|
|
50
|
+
this.gateway = new CoreMailGateway(configArg, this.database, this.models, this.transfers, this.inbound, this.desiredState.getActiveDesiredState);
|
|
51
|
+
this.smtpSubmission = new CoreMailSmtpSubmissionServer(configArg, this.auth, this.submissions, this.desiredState.getActiveDesiredState);
|
|
48
52
|
this.maintenance = new CoreMailMaintenanceService(this.models, this.storage);
|
|
49
|
-
this.server = server = new CoreMailServer(configArg, this.database, this.storage, this.transfers, this.desiredState, this.auth, this.submissions, this.inbound, this.gateway);
|
|
53
|
+
this.server = server = new CoreMailServer(configArg, this.database, this.models, this.storage, this.transfers, this.desiredState, this.auth, this.submissions, this.inbound, this.gateway, this.smtpSubmission);
|
|
50
54
|
this.outboundWorker = new CoreMailOutboundWorker(this.models, this.transfers, this.gateway, configArg.replica.taskId, configArg.replica.serviceId);
|
|
51
55
|
}
|
|
52
56
|
async start() {
|
|
@@ -93,6 +97,8 @@ export class CoreMail {
|
|
|
93
97
|
await this.desiredState.start();
|
|
94
98
|
this.gateway.start();
|
|
95
99
|
this.gatewayStarted = true;
|
|
100
|
+
this.smtpSubmission.start();
|
|
101
|
+
this.smtpSubmissionStarted = true;
|
|
96
102
|
await this.server.start();
|
|
97
103
|
this.serverStarted = true;
|
|
98
104
|
this.maintenance.start();
|
|
@@ -143,6 +149,7 @@ export class CoreMail {
|
|
|
143
149
|
await stopOne(this.workerStarted, () => this.outboundWorker.stop(), () => { this.workerStarted = false; });
|
|
144
150
|
await stopOne(this.serverStarted, () => this.server.stop(), () => { this.serverStarted = false; });
|
|
145
151
|
await stopOne(this.maintenanceStarted, () => this.maintenance.stop(), () => { this.maintenanceStarted = false; });
|
|
152
|
+
await stopOne(this.smtpSubmissionStarted, () => this.smtpSubmission.stop(), () => { this.smtpSubmissionStarted = false; });
|
|
146
153
|
await stopOne(this.gatewayStarted, () => this.gateway.stop(), () => { this.gatewayStarted = false; });
|
|
147
154
|
await this.transfers.stop().catch((error) => errors.push(error));
|
|
148
155
|
await stopOne(this.storageStarted, () => this.storage.stop(), () => { this.storageStarted = false; });
|
|
@@ -152,4 +159,4 @@ export class CoreMail {
|
|
|
152
159
|
}
|
|
153
160
|
}
|
|
154
161
|
}
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jb3JlbWFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMuY29yZW1haWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hFLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysc0JBQXNCLEdBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixvQ0FBb0MsR0FFckMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBV2hFLE1BQU0sT0FBTyxRQUFRO0lBQ0gsTUFBTSxDQUFrQjtJQUN4QixRQUFRLENBQWdDO0lBQ3hDLE1BQU0sQ0FBa0I7SUFDeEIsT0FBTyxDQUFrQjtJQUN6QixTQUFTLENBQTBCO0lBQ25DLFlBQVksQ0FBOEI7SUFDMUMsSUFBSSxDQUFlO0lBQ25CLFdBQVcsQ0FBNEI7SUFDdkMsT0FBTyxDQUF5QjtJQUNoQyxXQUFXLENBQTZCO0lBQ3hDLE9BQU8sQ0FBa0I7SUFDekIsY0FBYyxDQUErQjtJQUM3QyxNQUFNLENBQWlCO0lBQ3ZCLGNBQWMsQ0FBeUI7SUFFL0MsY0FBYyxHQUFvQixLQUFLLENBQUM7SUFDeEMsWUFBWSxHQUF5QixJQUFJLENBQUM7SUFDMUMsV0FBVyxHQUF5QixJQUFJLENBQUM7SUFDekMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4QixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDdkIscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQzlCLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEIsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFFbkMsWUFBbUIsWUFBNkIsa0JBQWtCLEVBQUU7UUFDbEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUNoQyxTQUFTLENBQUMsaUJBQWlCLEVBQzNCLFNBQVMsQ0FBQyxVQUFVLENBQ3JCLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEUsSUFBSSxNQUFrQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSwyQkFBMkIsQ0FDakQsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLFNBQVMsRUFDZCxTQUFTLENBQUMsT0FBTyxFQUNqQixDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsRUFBRSxDQUM3QixNQUFNLEVBQUUsbUJBQW1CLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FDaEUsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxZQUFZLENBQzFCLFNBQVMsQ0FBQyxnQkFBZ0IsRUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FDeEMsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBeUIsQ0FDOUMsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLFNBQVMsQ0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHNCQUFzQixDQUN2QyxJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsT0FBTyxFQUNaLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUN2QyxTQUFTLENBQUMsb0JBQW9CLENBQy9CLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUNoQyxTQUFTLEVBQ1QsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUN4QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLDRCQUE0QixDQUNwRCxTQUFTLEVBQ1QsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUN4QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksY0FBYyxDQUN2QyxTQUFTLEVBQ1QsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsY0FBYyxDQUNwQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHNCQUFzQixDQUM5QyxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxTQUFTLEVBQ2QsSUFBSSxDQUFDLE9BQU8sRUFDWixTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFDeEIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQzlDLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDeEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7UUFDMUYsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO1FBQ2pDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksQ0FBQztZQUNuQixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUNsQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztZQUNsQyxDQUFDO1lBQUMsT0FBTyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxjQUFjLENBQ3RCLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxFQUNyQiwyQ0FBMkMsQ0FDNUMsQ0FBQztZQUNKLENBQUM7WUFDRCxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWE7UUFDekIsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUM5RCxDQUFDO1FBQ0YsTUFBTSxvQ0FBb0MsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNsQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQzlDLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUM7UUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLENBQUM7WUFDbEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDbEMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztZQUMvQixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLG9CQUFvQjtRQUNoQyxNQUFNLE1BQU0sR0FBYyxFQUFFLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUNuQixVQUFtQixFQUNuQixPQUE0QixFQUM1QixjQUEwQixFQUMxQixFQUFFO1lBQ0YsSUFBSSxDQUFDLFVBQVU7Z0JBQUUsT0FBTztZQUN4QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLEVBQUUsQ0FBQztnQkFDaEIsY0FBYyxFQUFFLENBQUM7WUFDbkIsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxPQUFPLENBQ1gsSUFBSSxDQUFDLGFBQWEsRUFDbEIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFDaEMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3RDLENBQUM7UUFDRixNQUFNLE9BQU8sQ0FDWCxJQUFJLENBQUMsYUFBYSxFQUNsQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUN4QixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDdEMsQ0FBQztRQUNGLE1BQU0sT0FBTyxDQUNYLElBQUksQ0FBQyxrQkFBa0IsRUFDdkIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFDN0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDM0MsQ0FBQztRQUNGLE1BQU0sT0FBTyxDQUNYLElBQUksQ0FBQyxxQkFBcUIsRUFDMUIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFDaEMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDOUMsQ0FBQztRQUNGLE1BQU0sT0FBTyxDQUNYLElBQUksQ0FBQyxjQUFjLEVBQ25CLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQ3pCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUN2QyxDQUFDO1FBQ0YsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sT0FBTyxDQUNYLElBQUksQ0FBQyxjQUFjLEVBQ25CLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQ3pCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUN2QyxDQUFDO1FBQ0YsTUFBTSxPQUFPLENBQ1gsSUFBSSxDQUFDLGVBQWUsRUFDcEIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFDM0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3hDLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUscUNBQXFDLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -11,6 +11,7 @@ export declare const stableStringify: (valueArg: unknown) => string;
|
|
|
11
11
|
export declare const requireMatchingCoreMailTransferOrigin: (valueArg: unknown, expectedArg: string) => string;
|
|
12
12
|
export declare class CoreMailGateway {
|
|
13
13
|
private readonly config;
|
|
14
|
+
private readonly database;
|
|
14
15
|
private readonly models;
|
|
15
16
|
private readonly transfers;
|
|
16
17
|
private readonly inbound;
|
|
@@ -25,13 +26,22 @@ export declare class CoreMailGateway {
|
|
|
25
26
|
private statusSubscription;
|
|
26
27
|
private authenticationTask;
|
|
27
28
|
private authenticatingSignature;
|
|
28
|
-
constructor(config: ICoreMailConfig, models: ICoreMailModels, transfers: CoreMailTransferService, inbound: CoreMailInboundService, getDesiredState: () => Promise<TDesiredState | null>, now?: () => number);
|
|
29
|
+
constructor(config: ICoreMailConfig, database: plugins.smartdata.SmartdataDb, models: ICoreMailModels, transfers: CoreMailTransferService, inbound: CoreMailInboundService, getDesiredState: () => Promise<TDesiredState | null>, now?: () => number);
|
|
29
30
|
start(): void;
|
|
30
31
|
stop(): Promise<void>;
|
|
31
32
|
isReady(): boolean;
|
|
32
33
|
getTransferOrigin(): string | null;
|
|
33
34
|
private runReconciliationLoop;
|
|
34
35
|
private connect;
|
|
36
|
+
/**
|
|
37
|
+
* The gateway-facing router.
|
|
38
|
+
*
|
|
39
|
+
* Every handler goes through the same privacy-safe envelope the workload
|
|
40
|
+
* router uses, so dcrouter observes the typed `ICoreMailErrorData` code —
|
|
41
|
+
* `QUOTA_EXCEEDED` versus `STATE_CONFLICT` decides whether it defers a
|
|
42
|
+
* message or rejects it — instead of an opaque error string.
|
|
43
|
+
*/
|
|
44
|
+
createGatewayRouter(signatureArg: string): plugins.typedrequest.TypedRouter;
|
|
35
45
|
private queueAuthentication;
|
|
36
46
|
private requireAuthenticated;
|
|
37
47
|
private disconnect;
|