@serve.zone/dcrouter 32.6.3 → 32.7.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/deno.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serve.zone/dcrouter",
3
- "version": "32.6.3",
3
+ "version": "32.7.0",
4
4
  "exports": "./binary/dcrouter.ts",
5
5
  "compile": {
6
6
  "include": [
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '32.6.3',
6
+ version: '32.7.0',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
@@ -23,9 +23,9 @@ import { TestingAccessManager } from './testing/classes.testing-access-manager.j
23
23
  import { TestingDnsManager } from './testing/classes.testing-dns-manager.js';
24
24
  import { TestingCertificateManager } from './testing/classes.testing-certificate-manager.js';
25
25
  import { TestingOperationWorker } from './testing/classes.testing-operation-worker.js';
26
- import { AcceptedEmailSpool, CoreMailGatewayManager, EmailDomainManager, EmailRouteBuilder, EmailSettingsManager, GatewayMailDomainStore, MailDnsSync, MailEdgeEligibility, MailEgressCoordinator, SmartMtaBlobStorageManager, SmtpAccountManager, WorkAppMailManager, type ISmartMtaBlobStorageConfig } from './email/index.js';
26
+ import { AcceptedEmailSpool, CoreMailGatewayManager, EmailDomainManager, EmailRouteBuilder, EmailSettingsManager, EmailTlsManager, GatewayMailDomainStore, MailDnsSync, MailEdgeEligibility, MailEgressCoordinator, SmartMtaBlobStorageManager, SmtpAccountManager, WorkAppMailManager, type ISmartMtaBlobStorageConfig } from './email/index.js';
27
27
  import { WebPushManager } from './webpush/index.js';
28
- import type { IEmailOutboundEgressStatus, IEmailPortConfig, IEmailServerSettings, TEmailOutboundMode, TEmailServerSettingsUpdate } from '../dist_ts_interfaces/data/email-settings.js';
28
+ import type { IEmailOutboundEgressStatus, IEmailPortConfig, IEmailServerSettings, IEmailTlsCertificateStatus, TEmailOutboundMode, TEmailServerSettingsUpdate, TEmailTlsSource } from '../dist_ts_interfaces/data/email-settings.js';
29
29
  import type { IDcRouterRouteConfig, IRemoteIngressHubSettings, TRemoteIngressHubSettingsUpdate } from '../dist_ts_interfaces/data/remoteingress.js';
30
30
  /**
31
31
  * dcrouter's superset of SmartMTA's SMTP TLS options.
@@ -250,6 +250,8 @@ export declare class DcRouter {
250
250
  smartAcme?: plugins.smartacme.SmartAcme;
251
251
  dnsServer?: plugins.smartdns.dnsServerMod.DnsServer;
252
252
  emailServer?: UnifiedEmailServer;
253
+ /** Owns the SMTP listener certificate: source resolution, renewal relevance, served status. */
254
+ readonly emailTlsManager: EmailTlsManager;
253
255
  radiusServer?: RadiusServer;
254
256
  opsServer: OpsServer;
255
257
  private opsServerStopped;
@@ -394,26 +396,18 @@ export declare class DcRouter {
394
396
  * This implements the consolidated emailConfig approach
395
397
  */
396
398
  private setupUnifiedEmailHandling;
399
+ /** Effective SMTP certificate source: the DB-backed setting, or the documented default. */
400
+ getEmailTlsSource(): TEmailTlsSource;
401
+ /** The certificate the running SMTP listener serves, checked now; undefined while it is stopped. */
402
+ getEmailTlsCertificateStatus(): IEmailTlsCertificateStatus | undefined;
397
403
  /**
398
- * Resolve the PEM material for the SMTP listener.
404
+ * Push an issued or renewed certificate to the running SMTP listener.
399
405
  *
400
- * SmartMTA consumes `tls.certPem`/`tls.keyPem`; a path-shaped `tls` block is
401
- * ignored, which leaves the Rust listener with no TLS material at all — no
402
- * STARTTLS on the plain submission ports. Resolution order matches the
403
- * RemoteIngress tunnel precedent: explicit paths, then the ACME cert store.
404
- *
405
- * Explicitly configured paths that cannot be read FAIL STARTUP. Silently
406
- * continuing without TLS is what produced a cleartext submission port in
407
- * production, so a broken explicit configuration must be impossible to miss.
408
- */
409
- private resolveEmailTlsMaterial;
410
- /**
411
- * Push renewed TLS material to the running SMTP listener.
412
- *
413
- * Only reacts to the mail hostname, and only when explicit paths are NOT
414
- * configured — an operator-managed file pair is not superseded by an ACME
415
- * renewal for the same name. SmartMTA restarts just the Rust listener when
416
- * the PEM material actually changes.
406
+ * Material is resolved from the source of truth on every call and is never
407
+ * written back into the email configuration, so every renewal applies, not
408
+ * just the first one per process. Configured material is never superseded
409
+ * by an ACME issuance. SmartMTA restarts just the Rust listener when the PEM
410
+ * material actually changes.
417
411
  */
418
412
  private reapplyEmailTlsMaterial;
419
413
  /**