@serve.zone/dcrouter 2.12.4
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/.dockerignore +1 -0
- package/.gitea/workflows/docker_nottags.yaml +71 -0
- package/.gitea/workflows/docker_tags.yaml +106 -0
- package/.vscode/launch.json +11 -0
- package/.vscode/settings.json +26 -0
- package/Dockerfile +46 -0
- package/changelog.md +247 -0
- package/cli.child.js +4 -0
- package/cli.child.ts +4 -0
- package/cli.js +4 -0
- package/cli.ts.js +5 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/classes.dcrouter.d.ts +238 -0
- package/dist_ts/classes.dcrouter.js +1008 -0
- package/dist_ts/config/index.d.ts +1 -0
- package/dist_ts/config/index.js +3 -0
- package/dist_ts/config/validator.d.ts +104 -0
- package/dist_ts/config/validator.js +152 -0
- package/dist_ts/deliverability/classes.ipwarmupmanager.d.ts +253 -0
- package/dist_ts/deliverability/classes.ipwarmupmanager.js +639 -0
- package/dist_ts/deliverability/classes.senderreputationmonitor.d.ts +300 -0
- package/dist_ts/deliverability/classes.senderreputationmonitor.js +961 -0
- package/dist_ts/deliverability/index.d.ts +2 -0
- package/dist_ts/deliverability/index.js +3 -0
- package/dist_ts/errors/base.errors.d.ts +224 -0
- package/dist_ts/errors/base.errors.js +310 -0
- package/dist_ts/errors/email.errors.d.ts +175 -0
- package/dist_ts/errors/email.errors.js +265 -0
- package/dist_ts/errors/error-handler.d.ts +98 -0
- package/dist_ts/errors/error-handler.js +282 -0
- package/dist_ts/errors/error.codes.d.ts +115 -0
- package/dist_ts/errors/error.codes.js +136 -0
- package/dist_ts/errors/index.d.ts +56 -0
- package/dist_ts/errors/index.js +138 -0
- package/dist_ts/errors/mta.errors.d.ts +259 -0
- package/dist_ts/errors/mta.errors.js +472 -0
- package/dist_ts/errors/reputation.errors.d.ts +183 -0
- package/dist_ts/errors/reputation.errors.js +292 -0
- package/dist_ts/index.d.ts +4 -0
- package/dist_ts/index.js +6 -0
- package/dist_ts/logger.d.ts +17 -0
- package/dist_ts/logger.js +77 -0
- package/dist_ts/mail/core/classes.bouncemanager.d.ts +200 -0
- package/dist_ts/mail/core/classes.bouncemanager.js +778 -0
- package/dist_ts/mail/core/classes.email.d.ts +291 -0
- package/dist_ts/mail/core/classes.email.js +780 -0
- package/dist_ts/mail/core/classes.emailvalidator.d.ts +61 -0
- package/dist_ts/mail/core/classes.emailvalidator.js +182 -0
- package/dist_ts/mail/core/classes.templatemanager.d.ts +95 -0
- package/dist_ts/mail/core/classes.templatemanager.js +239 -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 +485 -0
- package/dist_ts/mail/delivery/classes.delivery.system.d.ts +186 -0
- package/dist_ts/mail/delivery/classes.delivery.system.js +846 -0
- package/dist_ts/mail/delivery/classes.emailsendjob.d.ts +84 -0
- package/dist_ts/mail/delivery/classes.emailsendjob.js +362 -0
- package/dist_ts/mail/delivery/classes.emailsignjob.d.ts +18 -0
- package/dist_ts/mail/delivery/classes.emailsignjob.js +44 -0
- package/dist_ts/mail/delivery/classes.mta.config.d.ts +22 -0
- package/dist_ts/mail/delivery/classes.mta.config.js +51 -0
- package/dist_ts/mail/delivery/classes.ratelimiter.d.ts +98 -0
- package/dist_ts/mail/delivery/classes.ratelimiter.js +205 -0
- package/dist_ts/mail/delivery/classes.smtp.client.legacy.d.ts +275 -0
- package/dist_ts/mail/delivery/classes.smtp.client.legacy.js +973 -0
- package/dist_ts/mail/delivery/classes.unified.rate.limiter.d.ts +200 -0
- package/dist_ts/mail/delivery/classes.unified.rate.limiter.js +817 -0
- package/dist_ts/mail/delivery/index.d.ts +12 -0
- package/dist_ts/mail/delivery/index.js +18 -0
- package/dist_ts/mail/delivery/interfaces.d.ts +243 -0
- package/dist_ts/mail/delivery/interfaces.js +17 -0
- package/dist_ts/mail/delivery/smtpclient/auth-handler.d.ts +43 -0
- package/dist_ts/mail/delivery/smtpclient/auth-handler.js +188 -0
- package/dist_ts/mail/delivery/smtpclient/command-handler.d.ts +67 -0
- package/dist_ts/mail/delivery/smtpclient/command-handler.js +276 -0
- package/dist_ts/mail/delivery/smtpclient/connection-manager.d.ts +48 -0
- package/dist_ts/mail/delivery/smtpclient/connection-manager.js +238 -0
- package/dist_ts/mail/delivery/smtpclient/constants.d.ts +129 -0
- package/dist_ts/mail/delivery/smtpclient/constants.js +135 -0
- package/dist_ts/mail/delivery/smtpclient/create-client.d.ts +22 -0
- package/dist_ts/mail/delivery/smtpclient/create-client.js +86 -0
- package/dist_ts/mail/delivery/smtpclient/error-handler.d.ts +28 -0
- package/dist_ts/mail/delivery/smtpclient/error-handler.js +110 -0
- package/dist_ts/mail/delivery/smtpclient/index.d.ts +16 -0
- package/dist_ts/mail/delivery/smtpclient/index.js +21 -0
- package/dist_ts/mail/delivery/smtpclient/interfaces.d.ts +183 -0
- package/dist_ts/mail/delivery/smtpclient/interfaces.js +19 -0
- package/dist_ts/mail/delivery/smtpclient/smtp-client.d.ts +58 -0
- package/dist_ts/mail/delivery/smtpclient/smtp-client.js +279 -0
- package/dist_ts/mail/delivery/smtpclient/tls-handler.d.ts +33 -0
- package/dist_ts/mail/delivery/smtpclient/tls-handler.js +202 -0
- package/dist_ts/mail/delivery/smtpclient/utils/helpers.d.ts +77 -0
- package/dist_ts/mail/delivery/smtpclient/utils/helpers.js +196 -0
- package/dist_ts/mail/delivery/smtpclient/utils/logging.d.ts +46 -0
- package/dist_ts/mail/delivery/smtpclient/utils/logging.js +153 -0
- package/dist_ts/mail/delivery/smtpclient/utils/validation.d.ts +38 -0
- package/dist_ts/mail/delivery/smtpclient/utils/validation.js +139 -0
- package/dist_ts/mail/delivery/smtpserver/certificate-utils.d.ts +45 -0
- package/dist_ts/mail/delivery/smtpserver/certificate-utils.js +345 -0
- package/dist_ts/mail/delivery/smtpserver/command-handler.d.ts +156 -0
- package/dist_ts/mail/delivery/smtpserver/command-handler.js +1159 -0
- package/dist_ts/mail/delivery/smtpserver/connection-manager.d.ts +159 -0
- package/dist_ts/mail/delivery/smtpserver/connection-manager.js +894 -0
- package/dist_ts/mail/delivery/smtpserver/constants.d.ts +130 -0
- package/dist_ts/mail/delivery/smtpserver/constants.js +162 -0
- package/dist_ts/mail/delivery/smtpserver/create-server.d.ts +14 -0
- package/dist_ts/mail/delivery/smtpserver/create-server.js +28 -0
- package/dist_ts/mail/delivery/smtpserver/data-handler.d.ts +123 -0
- package/dist_ts/mail/delivery/smtpserver/data-handler.js +1148 -0
- package/dist_ts/mail/delivery/smtpserver/index.d.ts +20 -0
- package/dist_ts/mail/delivery/smtpserver/index.js +27 -0
- package/dist_ts/mail/delivery/smtpserver/interfaces.d.ts +530 -0
- package/dist_ts/mail/delivery/smtpserver/interfaces.js +10 -0
- package/dist_ts/mail/delivery/smtpserver/secure-server.d.ts +15 -0
- package/dist_ts/mail/delivery/smtpserver/secure-server.js +79 -0
- package/dist_ts/mail/delivery/smtpserver/security-handler.d.ts +86 -0
- package/dist_ts/mail/delivery/smtpserver/security-handler.js +234 -0
- package/dist_ts/mail/delivery/smtpserver/session-manager.d.ts +140 -0
- package/dist_ts/mail/delivery/smtpserver/session-manager.js +469 -0
- package/dist_ts/mail/delivery/smtpserver/smtp-server.d.ts +137 -0
- package/dist_ts/mail/delivery/smtpserver/smtp-server.js +666 -0
- package/dist_ts/mail/delivery/smtpserver/starttls-handler.d.ts +21 -0
- package/dist_ts/mail/delivery/smtpserver/starttls-handler.js +207 -0
- package/dist_ts/mail/delivery/smtpserver/tls-handler.d.ts +66 -0
- package/dist_ts/mail/delivery/smtpserver/tls-handler.js +261 -0
- package/dist_ts/mail/delivery/smtpserver/utils/adaptive-logging.d.ts +117 -0
- package/dist_ts/mail/delivery/smtpserver/utils/adaptive-logging.js +411 -0
- package/dist_ts/mail/delivery/smtpserver/utils/helpers.d.ts +78 -0
- package/dist_ts/mail/delivery/smtpserver/utils/helpers.js +208 -0
- package/dist_ts/mail/delivery/smtpserver/utils/logging.d.ts +106 -0
- package/dist_ts/mail/delivery/smtpserver/utils/logging.js +181 -0
- package/dist_ts/mail/delivery/smtpserver/utils/validation.d.ts +69 -0
- package/dist_ts/mail/delivery/smtpserver/utils/validation.js +360 -0
- package/dist_ts/mail/index.d.ts +8 -0
- package/dist_ts/mail/index.js +13 -0
- package/dist_ts/mail/routing/classes.dns.manager.d.ts +65 -0
- package/dist_ts/mail/routing/classes.dns.manager.js +413 -0
- package/dist_ts/mail/routing/classes.dnsmanager.d.ts +165 -0
- package/dist_ts/mail/routing/classes.dnsmanager.js +430 -0
- package/dist_ts/mail/routing/classes.domain.registry.d.ts +54 -0
- package/dist_ts/mail/routing/classes.domain.registry.js +118 -0
- package/dist_ts/mail/routing/classes.email.config.d.ts +64 -0
- package/dist_ts/mail/routing/classes.email.config.js +2 -0
- package/dist_ts/mail/routing/classes.email.router.d.ts +171 -0
- package/dist_ts/mail/routing/classes.email.router.js +491 -0
- package/dist_ts/mail/routing/classes.unified.email.server.d.ts +426 -0
- package/dist_ts/mail/routing/classes.unified.email.server.js +1454 -0
- package/dist_ts/mail/routing/index.d.ts +5 -0
- package/dist_ts/mail/routing/index.js +7 -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 +68 -0
- package/dist_ts/mail/security/classes.dkimcreator.js +346 -0
- package/dist_ts/mail/security/classes.dkimverifier.d.ts +46 -0
- package/dist_ts/mail/security/classes.dkimverifier.js +317 -0
- package/dist_ts/mail/security/classes.dmarcverifier.d.ts +123 -0
- package/dist_ts/mail/security/classes.dmarcverifier.js +365 -0
- package/dist_ts/mail/security/classes.spfverifier.d.ts +103 -0
- package/dist_ts/mail/security/classes.spfverifier.js +492 -0
- package/dist_ts/mail/security/index.d.ts +4 -0
- package/dist_ts/mail/security/index.js +6 -0
- package/dist_ts/opsserver/classes.opsserver.d.ts +14 -0
- package/dist_ts/opsserver/classes.opsserver.js +37 -0
- package/dist_ts/opsserver/index.d.ts +1 -0
- package/dist_ts/opsserver/index.js +2 -0
- package/dist_ts/paths.d.ts +14 -0
- package/dist_ts/paths.js +39 -0
- package/dist_ts/plugins.d.ts +43 -0
- package/dist_ts/plugins.js +50 -0
- package/dist_ts/security/classes.contentscanner.d.ts +160 -0
- package/dist_ts/security/classes.contentscanner.js +634 -0
- package/dist_ts/security/classes.ipreputationchecker.d.ts +150 -0
- package/dist_ts/security/classes.ipreputationchecker.js +508 -0
- package/dist_ts/security/classes.securitylogger.d.ts +140 -0
- package/dist_ts/security/classes.securitylogger.js +232 -0
- package/dist_ts/security/index.d.ts +3 -0
- package/dist_ts/security/index.js +4 -0
- package/dist_ts/sms/classes.smsservice.d.ts +15 -0
- package/dist_ts/sms/classes.smsservice.js +72 -0
- package/dist_ts/sms/config/sms.config.d.ts +93 -0
- package/dist_ts/sms/config/sms.config.js +2 -0
- package/dist_ts/sms/config/sms.schema.d.ts +5 -0
- package/dist_ts/sms/config/sms.schema.js +121 -0
- package/dist_ts/sms/index.d.ts +1 -0
- package/dist_ts/sms/index.js +2 -0
- package/dist_ts/storage/classes.storagemanager.d.ts +82 -0
- package/dist_ts/storage/classes.storagemanager.js +341 -0
- package/dist_ts/storage/index.d.ts +1 -0
- package/dist_ts/storage/index.js +3 -0
- package/dist_ts/ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/ts/00_commitinfo_data.js +9 -0
- package/dist_ts/ts/classes.dcrouter.d.ts +238 -0
- package/dist_ts/ts/classes.dcrouter.js +1008 -0
- package/dist_ts/ts/config/index.d.ts +1 -0
- package/dist_ts/ts/config/index.js +3 -0
- package/dist_ts/ts/config/validator.d.ts +104 -0
- package/dist_ts/ts/config/validator.js +152 -0
- package/dist_ts/ts/deliverability/classes.ipwarmupmanager.d.ts +253 -0
- package/dist_ts/ts/deliverability/classes.ipwarmupmanager.js +639 -0
- package/dist_ts/ts/deliverability/classes.senderreputationmonitor.d.ts +300 -0
- package/dist_ts/ts/deliverability/classes.senderreputationmonitor.js +961 -0
- package/dist_ts/ts/deliverability/index.d.ts +2 -0
- package/dist_ts/ts/deliverability/index.js +3 -0
- package/dist_ts/ts/errors/base.errors.d.ts +224 -0
- package/dist_ts/ts/errors/base.errors.js +310 -0
- package/dist_ts/ts/errors/email.errors.d.ts +175 -0
- package/dist_ts/ts/errors/email.errors.js +265 -0
- package/dist_ts/ts/errors/error-handler.d.ts +98 -0
- package/dist_ts/ts/errors/error-handler.js +282 -0
- package/dist_ts/ts/errors/error.codes.d.ts +115 -0
- package/dist_ts/ts/errors/error.codes.js +136 -0
- package/dist_ts/ts/errors/index.d.ts +56 -0
- package/dist_ts/ts/errors/index.js +138 -0
- package/dist_ts/ts/errors/mta.errors.d.ts +259 -0
- package/dist_ts/ts/errors/mta.errors.js +472 -0
- package/dist_ts/ts/errors/reputation.errors.d.ts +183 -0
- package/dist_ts/ts/errors/reputation.errors.js +292 -0
- package/dist_ts/ts/index.d.ts +4 -0
- package/dist_ts/ts/index.js +6 -0
- package/dist_ts/ts/logger.d.ts +17 -0
- package/dist_ts/ts/logger.js +77 -0
- package/dist_ts/ts/mail/core/classes.bouncemanager.d.ts +200 -0
- package/dist_ts/ts/mail/core/classes.bouncemanager.js +778 -0
- package/dist_ts/ts/mail/core/classes.email.d.ts +291 -0
- package/dist_ts/ts/mail/core/classes.email.js +780 -0
- package/dist_ts/ts/mail/core/classes.emailvalidator.d.ts +61 -0
- package/dist_ts/ts/mail/core/classes.emailvalidator.js +182 -0
- package/dist_ts/ts/mail/core/classes.templatemanager.d.ts +95 -0
- package/dist_ts/ts/mail/core/classes.templatemanager.js +239 -0
- package/dist_ts/ts/mail/core/index.d.ts +4 -0
- package/dist_ts/ts/mail/core/index.js +6 -0
- package/dist_ts/ts/mail/delivery/classes.delivery.queue.d.ts +163 -0
- package/dist_ts/ts/mail/delivery/classes.delivery.queue.js +485 -0
- package/dist_ts/ts/mail/delivery/classes.delivery.system.d.ts +186 -0
- package/dist_ts/ts/mail/delivery/classes.delivery.system.js +846 -0
- package/dist_ts/ts/mail/delivery/classes.emailsendjob.d.ts +84 -0
- package/dist_ts/ts/mail/delivery/classes.emailsendjob.js +362 -0
- package/dist_ts/ts/mail/delivery/classes.emailsignjob.d.ts +18 -0
- package/dist_ts/ts/mail/delivery/classes.emailsignjob.js +44 -0
- package/dist_ts/ts/mail/delivery/classes.mta.config.d.ts +22 -0
- package/dist_ts/ts/mail/delivery/classes.mta.config.js +51 -0
- package/dist_ts/ts/mail/delivery/classes.ratelimiter.d.ts +98 -0
- package/dist_ts/ts/mail/delivery/classes.ratelimiter.js +205 -0
- package/dist_ts/ts/mail/delivery/classes.smtp.client.legacy.d.ts +275 -0
- package/dist_ts/ts/mail/delivery/classes.smtp.client.legacy.js +973 -0
- package/dist_ts/ts/mail/delivery/classes.unified.rate.limiter.d.ts +200 -0
- package/dist_ts/ts/mail/delivery/classes.unified.rate.limiter.js +817 -0
- package/dist_ts/ts/mail/delivery/index.d.ts +12 -0
- package/dist_ts/ts/mail/delivery/index.js +18 -0
- package/dist_ts/ts/mail/delivery/interfaces.d.ts +243 -0
- package/dist_ts/ts/mail/delivery/interfaces.js +17 -0
- package/dist_ts/ts/mail/delivery/smtpclient/auth-handler.d.ts +43 -0
- package/dist_ts/ts/mail/delivery/smtpclient/auth-handler.js +188 -0
- package/dist_ts/ts/mail/delivery/smtpclient/command-handler.d.ts +67 -0
- package/dist_ts/ts/mail/delivery/smtpclient/command-handler.js +276 -0
- package/dist_ts/ts/mail/delivery/smtpclient/connection-manager.d.ts +48 -0
- package/dist_ts/ts/mail/delivery/smtpclient/connection-manager.js +238 -0
- package/dist_ts/ts/mail/delivery/smtpclient/constants.d.ts +129 -0
- package/dist_ts/ts/mail/delivery/smtpclient/constants.js +135 -0
- package/dist_ts/ts/mail/delivery/smtpclient/create-client.d.ts +22 -0
- package/dist_ts/ts/mail/delivery/smtpclient/create-client.js +86 -0
- package/dist_ts/ts/mail/delivery/smtpclient/error-handler.d.ts +28 -0
- package/dist_ts/ts/mail/delivery/smtpclient/error-handler.js +110 -0
- package/dist_ts/ts/mail/delivery/smtpclient/index.d.ts +16 -0
- package/dist_ts/ts/mail/delivery/smtpclient/index.js +21 -0
- package/dist_ts/ts/mail/delivery/smtpclient/interfaces.d.ts +183 -0
- package/dist_ts/ts/mail/delivery/smtpclient/interfaces.js +19 -0
- package/dist_ts/ts/mail/delivery/smtpclient/smtp-client.d.ts +58 -0
- package/dist_ts/ts/mail/delivery/smtpclient/smtp-client.js +279 -0
- package/dist_ts/ts/mail/delivery/smtpclient/tls-handler.d.ts +33 -0
- package/dist_ts/ts/mail/delivery/smtpclient/tls-handler.js +202 -0
- package/dist_ts/ts/mail/delivery/smtpclient/utils/helpers.d.ts +77 -0
- package/dist_ts/ts/mail/delivery/smtpclient/utils/helpers.js +196 -0
- package/dist_ts/ts/mail/delivery/smtpclient/utils/logging.d.ts +46 -0
- package/dist_ts/ts/mail/delivery/smtpclient/utils/logging.js +153 -0
- package/dist_ts/ts/mail/delivery/smtpclient/utils/validation.d.ts +38 -0
- package/dist_ts/ts/mail/delivery/smtpclient/utils/validation.js +139 -0
- package/dist_ts/ts/mail/delivery/smtpserver/certificate-utils.d.ts +45 -0
- package/dist_ts/ts/mail/delivery/smtpserver/certificate-utils.js +345 -0
- package/dist_ts/ts/mail/delivery/smtpserver/command-handler.d.ts +156 -0
- package/dist_ts/ts/mail/delivery/smtpserver/command-handler.js +1159 -0
- package/dist_ts/ts/mail/delivery/smtpserver/connection-manager.d.ts +159 -0
- package/dist_ts/ts/mail/delivery/smtpserver/connection-manager.js +894 -0
- package/dist_ts/ts/mail/delivery/smtpserver/constants.d.ts +130 -0
- package/dist_ts/ts/mail/delivery/smtpserver/constants.js +162 -0
- package/dist_ts/ts/mail/delivery/smtpserver/create-server.d.ts +14 -0
- package/dist_ts/ts/mail/delivery/smtpserver/create-server.js +28 -0
- package/dist_ts/ts/mail/delivery/smtpserver/data-handler.d.ts +123 -0
- package/dist_ts/ts/mail/delivery/smtpserver/data-handler.js +1148 -0
- package/dist_ts/ts/mail/delivery/smtpserver/index.d.ts +20 -0
- package/dist_ts/ts/mail/delivery/smtpserver/index.js +27 -0
- package/dist_ts/ts/mail/delivery/smtpserver/interfaces.d.ts +530 -0
- package/dist_ts/ts/mail/delivery/smtpserver/interfaces.js +10 -0
- package/dist_ts/ts/mail/delivery/smtpserver/secure-server.d.ts +15 -0
- package/dist_ts/ts/mail/delivery/smtpserver/secure-server.js +79 -0
- package/dist_ts/ts/mail/delivery/smtpserver/security-handler.d.ts +86 -0
- package/dist_ts/ts/mail/delivery/smtpserver/security-handler.js +234 -0
- package/dist_ts/ts/mail/delivery/smtpserver/session-manager.d.ts +140 -0
- package/dist_ts/ts/mail/delivery/smtpserver/session-manager.js +469 -0
- package/dist_ts/ts/mail/delivery/smtpserver/smtp-server.d.ts +137 -0
- package/dist_ts/ts/mail/delivery/smtpserver/smtp-server.js +666 -0
- package/dist_ts/ts/mail/delivery/smtpserver/starttls-handler.d.ts +21 -0
- package/dist_ts/ts/mail/delivery/smtpserver/starttls-handler.js +207 -0
- package/dist_ts/ts/mail/delivery/smtpserver/tls-handler.d.ts +66 -0
- package/dist_ts/ts/mail/delivery/smtpserver/tls-handler.js +261 -0
- package/dist_ts/ts/mail/delivery/smtpserver/utils/adaptive-logging.d.ts +117 -0
- package/dist_ts/ts/mail/delivery/smtpserver/utils/adaptive-logging.js +411 -0
- package/dist_ts/ts/mail/delivery/smtpserver/utils/helpers.d.ts +78 -0
- package/dist_ts/ts/mail/delivery/smtpserver/utils/helpers.js +208 -0
- package/dist_ts/ts/mail/delivery/smtpserver/utils/logging.d.ts +106 -0
- package/dist_ts/ts/mail/delivery/smtpserver/utils/logging.js +181 -0
- package/dist_ts/ts/mail/delivery/smtpserver/utils/validation.d.ts +69 -0
- package/dist_ts/ts/mail/delivery/smtpserver/utils/validation.js +360 -0
- package/dist_ts/ts/mail/index.d.ts +8 -0
- package/dist_ts/ts/mail/index.js +13 -0
- package/dist_ts/ts/mail/routing/classes.dns.manager.d.ts +65 -0
- package/dist_ts/ts/mail/routing/classes.dns.manager.js +413 -0
- package/dist_ts/ts/mail/routing/classes.dnsmanager.d.ts +165 -0
- package/dist_ts/ts/mail/routing/classes.dnsmanager.js +430 -0
- package/dist_ts/ts/mail/routing/classes.domain.registry.d.ts +54 -0
- package/dist_ts/ts/mail/routing/classes.domain.registry.js +118 -0
- package/dist_ts/ts/mail/routing/classes.email.config.d.ts +64 -0
- package/dist_ts/ts/mail/routing/classes.email.config.js +2 -0
- package/dist_ts/ts/mail/routing/classes.email.router.d.ts +171 -0
- package/dist_ts/ts/mail/routing/classes.email.router.js +491 -0
- package/dist_ts/ts/mail/routing/classes.unified.email.server.d.ts +426 -0
- package/dist_ts/ts/mail/routing/classes.unified.email.server.js +1454 -0
- package/dist_ts/ts/mail/routing/index.d.ts +5 -0
- package/dist_ts/ts/mail/routing/index.js +7 -0
- package/dist_ts/ts/mail/routing/interfaces.d.ts +187 -0
- package/dist_ts/ts/mail/routing/interfaces.js +2 -0
- package/dist_ts/ts/mail/security/classes.dkimcreator.d.ts +68 -0
- package/dist_ts/ts/mail/security/classes.dkimcreator.js +346 -0
- package/dist_ts/ts/mail/security/classes.dkimverifier.d.ts +46 -0
- package/dist_ts/ts/mail/security/classes.dkimverifier.js +317 -0
- package/dist_ts/ts/mail/security/classes.dmarcverifier.d.ts +123 -0
- package/dist_ts/ts/mail/security/classes.dmarcverifier.js +365 -0
- package/dist_ts/ts/mail/security/classes.spfverifier.d.ts +103 -0
- package/dist_ts/ts/mail/security/classes.spfverifier.js +492 -0
- package/dist_ts/ts/mail/security/index.d.ts +4 -0
- package/dist_ts/ts/mail/security/index.js +6 -0
- package/dist_ts/ts/opsserver/classes.opsserver.d.ts +20 -0
- package/dist_ts/ts/opsserver/classes.opsserver.js +44 -0
- package/dist_ts/ts/opsserver/handlers/admin.handler.d.ts +31 -0
- package/dist_ts/ts/opsserver/handlers/admin.handler.js +177 -0
- package/dist_ts/ts/opsserver/handlers/config.handler.d.ts +10 -0
- package/dist_ts/ts/opsserver/handlers/config.handler.js +100 -0
- package/dist_ts/ts/opsserver/handlers/index.d.ts +5 -0
- package/dist_ts/ts/opsserver/handlers/index.js +6 -0
- package/dist_ts/ts/opsserver/handlers/logs.handler.d.ts +10 -0
- package/dist_ts/ts/opsserver/handlers/logs.handler.js +121 -0
- package/dist_ts/ts/opsserver/handlers/security.handler.d.ts +11 -0
- package/dist_ts/ts/opsserver/handlers/security.handler.js +118 -0
- package/dist_ts/ts/opsserver/handlers/stats.handler.d.ts +13 -0
- package/dist_ts/ts/opsserver/handlers/stats.handler.js +233 -0
- package/dist_ts/ts/opsserver/helpers/guards.d.ts +25 -0
- package/dist_ts/ts/opsserver/helpers/guards.js +41 -0
- package/dist_ts/ts/opsserver/index.d.ts +1 -0
- package/dist_ts/ts/opsserver/index.js +2 -0
- package/dist_ts/ts/paths.d.ts +14 -0
- package/dist_ts/ts/paths.js +39 -0
- package/dist_ts/ts/plugins.d.ts +46 -0
- package/dist_ts/ts/plugins.js +53 -0
- package/dist_ts/ts/security/classes.contentscanner.d.ts +160 -0
- package/dist_ts/ts/security/classes.contentscanner.js +634 -0
- package/dist_ts/ts/security/classes.ipreputationchecker.d.ts +150 -0
- package/dist_ts/ts/security/classes.ipreputationchecker.js +508 -0
- package/dist_ts/ts/security/classes.securitylogger.d.ts +140 -0
- package/dist_ts/ts/security/classes.securitylogger.js +232 -0
- package/dist_ts/ts/security/index.d.ts +3 -0
- package/dist_ts/ts/security/index.js +4 -0
- package/dist_ts/ts/sms/classes.smsservice.d.ts +15 -0
- package/dist_ts/ts/sms/classes.smsservice.js +72 -0
- package/dist_ts/ts/sms/config/sms.config.d.ts +93 -0
- package/dist_ts/ts/sms/config/sms.config.js +2 -0
- package/dist_ts/ts/sms/config/sms.schema.d.ts +5 -0
- package/dist_ts/ts/sms/config/sms.schema.js +121 -0
- package/dist_ts/ts/sms/index.d.ts +1 -0
- package/dist_ts/ts/sms/index.js +2 -0
- package/dist_ts/ts/storage/classes.storagemanager.d.ts +82 -0
- package/dist_ts/ts/storage/classes.storagemanager.js +341 -0
- package/dist_ts/ts/storage/index.d.ts +1 -0
- package/dist_ts/ts/storage/index.js +3 -0
- package/dist_ts/ts_interfaces/data/auth.d.ts +8 -0
- package/dist_ts/ts_interfaces/data/auth.js +2 -0
- package/dist_ts/ts_interfaces/data/index.d.ts +2 -0
- package/dist_ts/ts_interfaces/data/index.js +3 -0
- package/dist_ts/ts_interfaces/data/stats.d.ts +93 -0
- package/dist_ts/ts_interfaces/data/stats.js +2 -0
- package/dist_ts/ts_interfaces/index.d.ts +5 -0
- package/dist_ts/ts_interfaces/index.js +8 -0
- package/dist_ts/ts_interfaces/plugins.d.ts +2 -0
- package/dist_ts/ts_interfaces/plugins.js +4 -0
- package/dist_ts/ts_interfaces/requests/admin.d.ts +31 -0
- package/dist_ts/ts_interfaces/requests/admin.js +3 -0
- package/dist_ts/ts_interfaces/requests/config.d.ts +25 -0
- package/dist_ts/ts_interfaces/requests/config.js +3 -0
- package/dist_ts/ts_interfaces/requests/index.d.ts +4 -0
- package/dist_ts/ts_interfaces/requests/index.js +5 -0
- package/dist_ts/ts_interfaces/requests/logs.d.ts +34 -0
- package/dist_ts/ts_interfaces/requests/logs.js +4 -0
- package/dist_ts/ts_interfaces/requests/stats.d.ts +131 -0
- package/dist_ts/ts_interfaces/requests/stats.js +4 -0
- package/html/index.html +121 -0
- package/npmextra.json +45 -0
- package/package.json +83 -0
- package/readme.hints.md +906 -0
- package/readme.md +1253 -0
- package/readme.opsserver.md +351 -0
- package/test/helpers/server.loader.ts +347 -0
- package/test/helpers/smtp.client.ts +209 -0
- package/test/helpers/utils.ts +311 -0
- package/test/readme.md +443 -0
- package/test/suite/smtpclient_commands/test.ccmd-01.ehlo-helo-sending.ts +168 -0
- package/test/suite/smtpclient_commands/test.ccmd-02.mail-from-parameters.ts +277 -0
- package/test/suite/smtpclient_commands/test.ccmd-03.rcpt-to-multiple.ts +283 -0
- package/test/suite/smtpclient_commands/test.ccmd-04.data-transmission.ts +274 -0
- package/test/suite/smtpclient_commands/test.ccmd-05.auth-mechanisms.ts +306 -0
- package/test/suite/smtpclient_commands/test.ccmd-06.command-pipelining.ts +233 -0
- package/test/suite/smtpclient_commands/test.ccmd-07.response-parsing.ts +243 -0
- package/test/suite/smtpclient_commands/test.ccmd-08.rset-command.ts +333 -0
- package/test/suite/smtpclient_commands/test.ccmd-09.noop-command.ts +339 -0
- package/test/suite/smtpclient_commands/test.ccmd-10.vrfy-expn.ts +457 -0
- package/test/suite/smtpclient_commands/test.ccmd-11.help-command.ts +409 -0
- package/test/suite/smtpclient_connection/test.ccm-01.basic-tcp-connection.ts +150 -0
- package/test/suite/smtpclient_connection/test.ccm-02.tls-connection.ts +140 -0
- package/test/suite/smtpclient_connection/test.ccm-03.starttls-upgrade.ts +208 -0
- package/test/suite/smtpclient_connection/test.ccm-04.connection-pooling.ts +250 -0
- package/test/suite/smtpclient_connection/test.ccm-05.connection-reuse.ts +288 -0
- package/test/suite/smtpclient_connection/test.ccm-06.connection-timeout.ts +267 -0
- package/test/suite/smtpclient_connection/test.ccm-07.automatic-reconnection.ts +324 -0
- package/test/suite/smtpclient_connection/test.ccm-08.dns-resolution.ts +139 -0
- package/test/suite/smtpclient_connection/test.ccm-09.ipv6-dual-stack.ts +167 -0
- package/test/suite/smtpclient_connection/test.ccm-10.proxy-support.ts +305 -0
- package/test/suite/smtpclient_connection/test.ccm-11.keepalive.ts +299 -0
- package/test/suite/smtpclient_edge-cases/test.cedge-01.unusual-server-responses.ts +529 -0
- package/test/suite/smtpclient_edge-cases/test.cedge-02.malformed-commands.ts +438 -0
- package/test/suite/smtpclient_edge-cases/test.cedge-03.protocol-violations.ts +446 -0
- package/test/suite/smtpclient_edge-cases/test.cedge-04.resource-constraints.ts +530 -0
- package/test/suite/smtpclient_edge-cases/test.cedge-05.encoding-issues.ts +145 -0
- package/test/suite/smtpclient_edge-cases/test.cedge-06.large-headers.ts +180 -0
- package/test/suite/smtpclient_edge-cases/test.cedge-07.concurrent-operations.ts +204 -0
- package/test/suite/smtpclient_email-composition/test.cep-01.basic-headers.ts +245 -0
- package/test/suite/smtpclient_email-composition/test.cep-02.mime-multipart.ts +321 -0
- package/test/suite/smtpclient_email-composition/test.cep-03.attachment-encoding.ts +334 -0
- package/test/suite/smtpclient_email-composition/test.cep-04.bcc-handling.ts +187 -0
- package/test/suite/smtpclient_email-composition/test.cep-05.reply-to-return-path.ts +277 -0
- package/test/suite/smtpclient_email-composition/test.cep-06.utf8-international.ts +235 -0
- package/test/suite/smtpclient_email-composition/test.cep-07.html-inline-images.ts +489 -0
- package/test/suite/smtpclient_email-composition/test.cep-08.custom-headers.ts +293 -0
- package/test/suite/smtpclient_email-composition/test.cep-09.priority-importance.ts +314 -0
- package/test/suite/smtpclient_email-composition/test.cep-10.receipts-dsn.ts +411 -0
- package/test/suite/smtpclient_error-handling/test.cerr-01.4xx-errors.ts +232 -0
- package/test/suite/smtpclient_error-handling/test.cerr-02.5xx-errors.ts +309 -0
- package/test/suite/smtpclient_error-handling/test.cerr-03.network-failures.ts +299 -0
- package/test/suite/smtpclient_error-handling/test.cerr-04.greylisting-handling.ts +255 -0
- package/test/suite/smtpclient_error-handling/test.cerr-05.quota-exceeded.ts +273 -0
- package/test/suite/smtpclient_error-handling/test.cerr-06.invalid-recipients.ts +320 -0
- package/test/suite/smtpclient_error-handling/test.cerr-07.message-size-limits.ts +320 -0
- package/test/suite/smtpclient_error-handling/test.cerr-08.rate-limiting.ts +261 -0
- package/test/suite/smtpclient_error-handling/test.cerr-09.connection-pool-errors.ts +299 -0
- package/test/suite/smtpclient_error-handling/test.cerr-10.partial-failure.ts +373 -0
- package/test/suite/smtpclient_performance/test.cperf-01.bulk-sending.ts +332 -0
- package/test/suite/smtpclient_performance/test.cperf-02.message-throughput.ts +304 -0
- package/test/suite/smtpclient_performance/test.cperf-03.memory-usage.ts +332 -0
- package/test/suite/smtpclient_performance/test.cperf-04.cpu-utilization.ts +373 -0
- package/test/suite/smtpclient_performance/test.cperf-05.network-efficiency.ts +181 -0
- package/test/suite/smtpclient_performance/test.cperf-06.caching-strategies.ts +190 -0
- package/test/suite/smtpclient_performance/test.cperf-07.queue-management.ts +171 -0
- package/test/suite/smtpclient_performance/test.cperf-08.dns-caching.ts +50 -0
- package/test/suite/smtpclient_reliability/test.crel-01.reconnection-logic.ts +305 -0
- package/test/suite/smtpclient_reliability/test.crel-02.network-interruption.ts +207 -0
- package/test/suite/smtpclient_reliability/test.crel-03.queue-persistence.ts +469 -0
- package/test/suite/smtpclient_reliability/test.crel-04.crash-recovery.ts +520 -0
- package/test/suite/smtpclient_reliability/test.crel-05.memory-leaks.ts +503 -0
- package/test/suite/smtpclient_reliability/test.crel-06.concurrency-safety.ts +558 -0
- package/test/suite/smtpclient_reliability/test.crel-07.resource-cleanup.ts +52 -0
- package/test/suite/smtpclient_rfc-compliance/test.crfc-01.rfc5321-client.ts +283 -0
- package/test/suite/smtpclient_rfc-compliance/test.crfc-02.esmtp-compliance.ts +77 -0
- package/test/suite/smtpclient_rfc-compliance/test.crfc-03.command-syntax.ts +67 -0
- package/test/suite/smtpclient_rfc-compliance/test.crfc-04.response-codes.ts +54 -0
- package/test/suite/smtpclient_rfc-compliance/test.crfc-05.state-machine.ts +703 -0
- package/test/suite/smtpclient_rfc-compliance/test.crfc-06.protocol-negotiation.ts +688 -0
- package/test/suite/smtpclient_rfc-compliance/test.crfc-07.interoperability.ts +728 -0
- package/test/suite/smtpclient_rfc-compliance/test.crfc-08.smtp-extensions.ts +656 -0
- package/test/suite/smtpclient_security/test.csec-01.tls-verification.ts +88 -0
- package/test/suite/smtpclient_security/test.csec-02.oauth2-authentication.ts +132 -0
- package/test/suite/smtpclient_security/test.csec-03.dkim-signing.ts +138 -0
- package/test/suite/smtpclient_security/test.csec-04.spf-compliance.ts +163 -0
- package/test/suite/smtpclient_security/test.csec-05.dmarc-policy.ts +200 -0
- package/test/suite/smtpclient_security/test.csec-06.certificate-validation.ts +145 -0
- package/test/suite/smtpclient_security/test.csec-07.cipher-suites.ts +153 -0
- package/test/suite/smtpclient_security/test.csec-08.authentication-fallback.ts +154 -0
- package/test/suite/smtpclient_security/test.csec-09.relay-restrictions.ts +166 -0
- package/test/suite/smtpclient_security/test.csec-10.anti-spam-measures.ts +196 -0
- package/test/suite/smtpserver_commands/test.cmd-01.ehlo-command.ts +193 -0
- package/test/suite/smtpserver_commands/test.cmd-02.mail-from.ts +330 -0
- package/test/suite/smtpserver_commands/test.cmd-03.rcpt-to.ts +296 -0
- package/test/suite/smtpserver_commands/test.cmd-04.data-command.ts +395 -0
- package/test/suite/smtpserver_commands/test.cmd-05.noop-command.ts +320 -0
- package/test/suite/smtpserver_commands/test.cmd-06.rset-command.ts +399 -0
- package/test/suite/smtpserver_commands/test.cmd-07.vrfy-command.ts +391 -0
- package/test/suite/smtpserver_commands/test.cmd-08.expn-command.ts +450 -0
- package/test/suite/smtpserver_commands/test.cmd-09.size-extension.ts +465 -0
- package/test/suite/smtpserver_commands/test.cmd-10.help-command.ts +454 -0
- package/test/suite/smtpserver_commands/test.cmd-11.command-pipelining.ts +334 -0
- package/test/suite/smtpserver_commands/test.cmd-12.helo-command.ts +420 -0
- package/test/suite/smtpserver_commands/test.cmd-13.quit-command.ts +384 -0
- package/test/suite/smtpserver_connection/test.cm-01.tls-connection.ts +61 -0
- package/test/suite/smtpserver_connection/test.cm-02.multiple-connections.ts +112 -0
- package/test/suite/smtpserver_connection/test.cm-03.connection-timeout.ts +134 -0
- package/test/suite/smtpserver_connection/test.cm-04.connection-limits.ts +374 -0
- package/test/suite/smtpserver_connection/test.cm-05.connection-rejection.ts +296 -0
- package/test/suite/smtpserver_connection/test.cm-06.starttls-upgrade.ts +468 -0
- package/test/suite/smtpserver_connection/test.cm-07.abrupt-disconnection.ts +321 -0
- package/test/suite/smtpserver_connection/test.cm-08.tls-versions.ts +361 -0
- package/test/suite/smtpserver_connection/test.cm-09.tls-ciphers.ts +556 -0
- package/test/suite/smtpserver_connection/test.cm-10.plain-connection.ts +293 -0
- package/test/suite/smtpserver_connection/test.cm-11.keepalive.ts +382 -0
- package/test/suite/smtpserver_edge-cases/test.edge-01.very-large-email.ts +239 -0
- package/test/suite/smtpserver_edge-cases/test.edge-02.very-small-email.ts +389 -0
- package/test/suite/smtpserver_edge-cases/test.edge-03.invalid-character-handling.ts +479 -0
- package/test/suite/smtpserver_edge-cases/test.edge-04.empty-commands.ts +430 -0
- package/test/suite/smtpserver_edge-cases/test.edge-05.extremely-long-lines.ts +425 -0
- package/test/suite/smtpserver_edge-cases/test.edge-06.extremely-long-headers.ts +404 -0
- package/test/suite/smtpserver_edge-cases/test.edge-07.unusual-mime-types.ts +333 -0
- package/test/suite/smtpserver_edge-cases/test.edge-08.nested-mime-structures.ts +379 -0
- package/test/suite/smtpserver_email-processing/test.ep-01.basic-email-sending.ts +338 -0
- package/test/suite/smtpserver_email-processing/test.ep-02.invalid-email-addresses.ts +315 -0
- package/test/suite/smtpserver_email-processing/test.ep-03.multiple-recipients.ts +493 -0
- package/test/suite/smtpserver_email-processing/test.ep-04.large-email.ts +528 -0
- package/test/suite/smtpserver_email-processing/test.ep-05.mime-handling.ts +515 -0
- package/test/suite/smtpserver_email-processing/test.ep-06.attachment-handling.ts +629 -0
- package/test/suite/smtpserver_email-processing/test.ep-07.special-character-handling.ts +462 -0
- package/test/suite/smtpserver_email-processing/test.ep-08.email-routing.ts +527 -0
- package/test/suite/smtpserver_email-processing/test.ep-09.delivery-status-notifications.ts +486 -0
- package/test/suite/smtpserver_error-handling/test.err-01.syntax-errors.ts +475 -0
- package/test/suite/smtpserver_error-handling/test.err-02.invalid-sequence.ts +450 -0
- package/test/suite/smtpserver_error-handling/test.err-03.temporary-failures.ts +453 -0
- package/test/suite/smtpserver_error-handling/test.err-04.permanent-failures.ts +325 -0
- package/test/suite/smtpserver_error-handling/test.err-05.resource-exhaustion.ts +302 -0
- package/test/suite/smtpserver_error-handling/test.err-06.malformed-mime.ts +374 -0
- package/test/suite/smtpserver_error-handling/test.err-07.exception-handling.ts +333 -0
- package/test/suite/smtpserver_error-handling/test.err-08.error-logging.ts +324 -0
- package/test/suite/smtpserver_performance/test.perf-01.throughput.ts +183 -0
- package/test/suite/smtpserver_performance/test.perf-02.concurrency.ts +388 -0
- package/test/suite/smtpserver_performance/test.perf-03.cpu-utilization.ts +245 -0
- package/test/suite/smtpserver_performance/test.perf-04.memory-usage.ts +238 -0
- package/test/suite/smtpserver_performance/test.perf-05.connection-processing-time.ts +363 -0
- package/test/suite/smtpserver_performance/test.perf-06.message-processing-time.ts +252 -0
- package/test/suite/smtpserver_performance/test.perf-07.resource-cleanup.ts +317 -0
- package/test/suite/smtpserver_reliability/test.rel-01.long-running-operation.ts +344 -0
- package/test/suite/smtpserver_reliability/test.rel-02.restart-recovery.ts +328 -0
- package/test/suite/smtpserver_reliability/test.rel-03.resource-leak-detection.ts +394 -0
- package/test/suite/smtpserver_reliability/test.rel-04.error-recovery.ts +401 -0
- package/test/suite/smtpserver_reliability/test.rel-05.dns-resolution-failure.ts +335 -0
- package/test/suite/smtpserver_reliability/test.rel-06.network-interruption.ts +410 -0
- package/test/suite/smtpserver_rfc-compliance/test.rfc-01.rfc5321-compliance.ts +382 -0
- package/test/suite/smtpserver_rfc-compliance/test.rfc-02.rfc5322-compliance.ts +428 -0
- package/test/suite/smtpserver_rfc-compliance/test.rfc-03.rfc7208-spf-compliance.ts +330 -0
- package/test/suite/smtpserver_rfc-compliance/test.rfc-04.rfc6376-dkim-compliance.ts +450 -0
- package/test/suite/smtpserver_rfc-compliance/test.rfc-05.rfc7489-dmarc-compliance.ts +408 -0
- package/test/suite/smtpserver_rfc-compliance/test.rfc-06.rfc8314-tls-compliance.ts +366 -0
- package/test/suite/smtpserver_rfc-compliance/test.rfc-07.rfc3461-dsn-compliance.ts +399 -0
- package/test/suite/smtpserver_security/test.sec-01.authentication.ts +218 -0
- package/test/suite/smtpserver_security/test.sec-02.authorization.ts +286 -0
- package/test/suite/smtpserver_security/test.sec-03.dkim-processing.ts +414 -0
- package/test/suite/smtpserver_security/test.sec-04.spf-checking.ts +280 -0
- package/test/suite/smtpserver_security/test.sec-05.dmarc-policy.ts +374 -0
- package/test/suite/smtpserver_security/test.sec-06.ip-reputation.ts +303 -0
- package/test/suite/smtpserver_security/test.sec-07.content-scanning.ts +409 -0
- package/test/suite/smtpserver_security/test.sec-08.rate-limiting.ts +324 -0
- package/test/suite/smtpserver_security/test.sec-09.tls-certificate-validation.ts +312 -0
- package/test/suite/smtpserver_security/test.sec-10.header-injection-prevention.ts +332 -0
- package/test/suite/smtpserver_security/test.sec-11.bounce-management.ts +363 -0
- package/test/test.base.ts +65 -0
- package/test/test.bouncemanager.ts +196 -0
- package/test/test.config.md +175 -0
- package/test/test.contentscanner.ts +265 -0
- package/test/test.dcrouter.email.ts +201 -0
- package/test/test.deliverability.ts +55 -0
- package/test/test.dns-manager-creation.ts +141 -0
- package/test/test.dns-mode-switching.ts +257 -0
- package/test/test.dns-server-config.ts +140 -0
- package/test/test.dns-socket-handler.ts +169 -0
- package/test/test.dns-validation.ts +283 -0
- package/test/test.email-socket-handler.ts +228 -0
- package/test/test.email.integration.ts +377 -0
- package/test/test.email.router.ts +283 -0
- package/test/test.emailauth.ts +195 -0
- package/test/test.errors.ts +408 -0
- package/test/test.integration.storage.ts +313 -0
- package/test/test.integration.ts +75 -0
- package/test/test.ipreputationchecker.ts +179 -0
- package/test/test.ipwarmupmanager.ts +323 -0
- package/test/test.jwt-auth.ts +130 -0
- package/test/test.minimal.ts +66 -0
- package/test/test.opsserver-api.ts +83 -0
- package/test/test.protected-endpoint.ts +115 -0
- package/test/test.rate-limiting-integration.ts +236 -0
- package/test/test.ratelimiter.ts +141 -0
- package/test/test.reputationmonitor.ts +262 -0
- package/test/test.smartmail.ts +248 -0
- package/test/test.smtp.client.compatibility.ts +154 -0
- package/test/test.smtp.client.ts +191 -0
- package/test/test.smtp.server.ts +180 -0
- package/test/test.socket-handler-integration.ts +240 -0
- package/test/test.socket-handler-unit.ts +198 -0
- package/test/test.storagemanager.ts +289 -0
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/classes.dcrouter.ts +1310 -0
- package/ts/config/index.ts +2 -0
- package/ts/config/validator.ts +266 -0
- package/ts/deliverability/classes.ipwarmupmanager.ts +896 -0
- package/ts/deliverability/classes.senderreputationmonitor.ts +1244 -0
- package/ts/deliverability/index.ts +13 -0
- package/ts/errors/base.errors.ts +525 -0
- package/ts/errors/email.errors.ts +383 -0
- package/ts/errors/error-handler.ts +412 -0
- package/ts/errors/error.codes.ts +165 -0
- package/ts/errors/index.ts +195 -0
- package/ts/errors/mta.errors.ts +681 -0
- package/ts/errors/reputation.errors.ts +422 -0
- package/ts/index.ts +7 -0
- package/ts/logger.ts +91 -0
- package/ts/mail/core/classes.bouncemanager.ts +965 -0
- package/ts/mail/core/classes.email.ts +941 -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 +1089 -0
- package/ts/mail/delivery/classes.emailsendjob.ts +447 -0
- package/ts/mail/delivery/classes.emailsendjob.ts.backup +691 -0
- package/ts/mail/delivery/classes.emailsignjob.ts +67 -0
- package/ts/mail/delivery/classes.mta.config.ts +73 -0
- package/ts/mail/delivery/classes.ratelimiter.ts +281 -0
- package/ts/mail/delivery/classes.smtp.client.legacy.ts +1422 -0
- package/ts/mail/delivery/classes.unified.rate.limiter.ts +1053 -0
- package/ts/mail/delivery/index.ts +24 -0
- package/ts/mail/delivery/interfaces.ts +291 -0
- package/ts/mail/delivery/smtpclient/auth-handler.ts +232 -0
- package/ts/mail/delivery/smtpclient/command-handler.ts +343 -0
- package/ts/mail/delivery/smtpclient/connection-manager.ts +289 -0
- package/ts/mail/delivery/smtpclient/constants.ts +145 -0
- package/ts/mail/delivery/smtpclient/create-client.ts +94 -0
- package/ts/mail/delivery/smtpclient/error-handler.ts +141 -0
- package/ts/mail/delivery/smtpclient/index.ts +24 -0
- package/ts/mail/delivery/smtpclient/interfaces.ts +242 -0
- package/ts/mail/delivery/smtpclient/smtp-client.ts +357 -0
- package/ts/mail/delivery/smtpclient/tls-handler.ts +254 -0
- package/ts/mail/delivery/smtpclient/utils/helpers.ts +224 -0
- package/ts/mail/delivery/smtpclient/utils/logging.ts +212 -0
- package/ts/mail/delivery/smtpclient/utils/validation.ts +170 -0
- package/ts/mail/delivery/smtpserver/certificate-utils.ts +398 -0
- package/ts/mail/delivery/smtpserver/command-handler.ts +1340 -0
- package/ts/mail/delivery/smtpserver/connection-manager.ts +1045 -0
- package/ts/mail/delivery/smtpserver/constants.ts +181 -0
- package/ts/mail/delivery/smtpserver/create-server.ts +31 -0
- package/ts/mail/delivery/smtpserver/data-handler.ts +1283 -0
- package/ts/mail/delivery/smtpserver/index.ts +32 -0
- package/ts/mail/delivery/smtpserver/interfaces.ts +655 -0
- package/ts/mail/delivery/smtpserver/secure-server.ts +97 -0
- package/ts/mail/delivery/smtpserver/security-handler.ts +345 -0
- package/ts/mail/delivery/smtpserver/session-manager.ts +557 -0
- package/ts/mail/delivery/smtpserver/smtp-server.ts +804 -0
- package/ts/mail/delivery/smtpserver/starttls-handler.ts +262 -0
- package/ts/mail/delivery/smtpserver/tls-handler.ts +346 -0
- package/ts/mail/delivery/smtpserver/utils/adaptive-logging.ts +514 -0
- package/ts/mail/delivery/smtpserver/utils/helpers.ts +246 -0
- package/ts/mail/delivery/smtpserver/utils/logging.ts +246 -0
- package/ts/mail/delivery/smtpserver/utils/validation.ts +436 -0
- package/ts/mail/index.ts +19 -0
- package/ts/mail/routing/classes.dns.manager.ts +563 -0
- package/ts/mail/routing/classes.dnsmanager.ts +559 -0
- package/ts/mail/routing/classes.domain.registry.ts +139 -0
- package/ts/mail/routing/classes.email.config.ts +82 -0
- package/ts/mail/routing/classes.email.router.ts +575 -0
- package/ts/mail/routing/classes.unified.email.server.ts +1873 -0
- package/ts/mail/routing/index.ts +6 -0
- package/ts/mail/routing/interfaces.ts +202 -0
- package/ts/mail/security/classes.dkimcreator.ts +431 -0
- package/ts/mail/security/classes.dkimverifier.ts +382 -0
- package/ts/mail/security/classes.dmarcverifier.ts +478 -0
- package/ts/mail/security/classes.spfverifier.ts +606 -0
- package/ts/mail/security/index.ts +5 -0
- package/ts/opsserver/classes.opsserver.ts +65 -0
- package/ts/opsserver/handlers/admin.handler.ts +240 -0
- package/ts/opsserver/handlers/config.handler.ts +150 -0
- package/ts/opsserver/handlers/index.ts +5 -0
- package/ts/opsserver/handlers/logs.handler.ts +195 -0
- package/ts/opsserver/handlers/security.handler.ts +208 -0
- package/ts/opsserver/handlers/stats.handler.ts +344 -0
- package/ts/opsserver/helpers/guards.ts +56 -0
- package/ts/opsserver/index.ts +1 -0
- package/ts/paths.ts +48 -0
- package/ts/plugins.ts +94 -0
- package/ts/security/classes.contentscanner.ts +739 -0
- package/ts/security/classes.ipreputationchecker.ts +592 -0
- package/ts/security/classes.securitylogger.ts +299 -0
- package/ts/security/index.ts +21 -0
- package/ts/sms/classes.smsservice.ts +98 -0
- package/ts/sms/config/sms.config.ts +109 -0
- package/ts/sms/config/sms.schema.ts +122 -0
- package/ts/sms/index.ts +1 -0
- package/ts/storage/classes.storagemanager.ts +400 -0
- package/ts/storage/index.ts +2 -0
- package/ts/tspublish.json +3 -0
- package/ts_interfaces/data/auth.ts +8 -0
- package/ts_interfaces/data/index.ts +2 -0
- package/ts_interfaces/data/stats.ts +101 -0
- package/ts_interfaces/index.ts +9 -0
- package/ts_interfaces/plugins.ts +6 -0
- package/ts_interfaces/requests/admin.ts +46 -0
- package/ts_interfaces/requests/config.ts +35 -0
- package/ts_interfaces/requests/index.ts +4 -0
- package/ts_interfaces/requests/logs.ts +44 -0
- package/ts_interfaces/requests/stats.ts +162 -0
- package/ts_interfaces/tspublish.json +3 -0
- package/ts_web/00_commitinfo_data.ts +8 -0
- package/ts_web/appstate.ts +361 -0
- package/ts_web/elements/index.ts +7 -0
- package/ts_web/elements/ops-dashboard.ts +165 -0
- package/ts_web/elements/ops-view-config.ts +268 -0
- package/ts_web/elements/ops-view-logs.ts +207 -0
- package/ts_web/elements/ops-view-overview.ts +222 -0
- package/ts_web/elements/ops-view-security.ts +471 -0
- package/ts_web/elements/ops-view-stats.ts +299 -0
- package/ts_web/elements/shared/css.ts +10 -0
- package/ts_web/elements/shared/index.ts +2 -0
- package/ts_web/elements/shared/ops-sectionheading.ts +42 -0
- package/ts_web/index.ts +9 -0
- package/ts_web/plugins.ts +11 -0
- package/ts_web/tspublish.json +3 -0
- package/tsconfig.json +15 -0
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import { tap, expect } from '@git.zone/tstest/tapbundle';
|
|
2
|
+
import { startTestServer, stopTestServer, type ITestServer } from '../../helpers/server.loader.js';
|
|
3
|
+
import { createSmtpClient } from '../../../ts/mail/delivery/smtpclient/index.js';
|
|
4
|
+
import type { SmtpClient } from '../../../ts/mail/delivery/smtpclient/smtp-client.js';
|
|
5
|
+
import { Email } from '../../../ts/mail/core/classes.email.js';
|
|
6
|
+
|
|
7
|
+
let testServer: ITestServer;
|
|
8
|
+
let smtpClient: SmtpClient;
|
|
9
|
+
|
|
10
|
+
tap.test('setup test SMTP server', async () => {
|
|
11
|
+
testServer = await startTestServer({
|
|
12
|
+
port: 2551,
|
|
13
|
+
tlsEnabled: false,
|
|
14
|
+
authRequired: false
|
|
15
|
+
});
|
|
16
|
+
expect(testServer).toBeTruthy();
|
|
17
|
+
expect(testServer.port).toBeGreaterThan(0);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
tap.test('CCMD-11: Server capabilities discovery', async () => {
|
|
21
|
+
// Test server capabilities which is what HELP provides info about
|
|
22
|
+
smtpClient = createSmtpClient({
|
|
23
|
+
host: testServer.hostname,
|
|
24
|
+
port: testServer.port,
|
|
25
|
+
secure: false,
|
|
26
|
+
connectionTimeout: 5000
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
console.log('Testing server capabilities discovery (HELP equivalent):\n');
|
|
30
|
+
|
|
31
|
+
// Send a test email to see server capabilities in action
|
|
32
|
+
const testEmail = new Email({
|
|
33
|
+
from: 'sender@example.com',
|
|
34
|
+
to: ['recipient@example.com'],
|
|
35
|
+
subject: 'Capability test',
|
|
36
|
+
text: 'Testing server capabilities'
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
await smtpClient.sendMail(testEmail);
|
|
40
|
+
console.log('Email sent successfully - server supports basic SMTP commands');
|
|
41
|
+
|
|
42
|
+
// Test different configurations to understand server behavior
|
|
43
|
+
const capabilities = {
|
|
44
|
+
basicSMTP: true,
|
|
45
|
+
multiplRecipients: false,
|
|
46
|
+
largeMessages: false,
|
|
47
|
+
internationalDomains: false
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// Test multiple recipients
|
|
51
|
+
try {
|
|
52
|
+
const multiEmail = new Email({
|
|
53
|
+
from: 'sender@example.com',
|
|
54
|
+
to: ['recipient1@example.com', 'recipient2@example.com', 'recipient3@example.com'],
|
|
55
|
+
subject: 'Multi-recipient test',
|
|
56
|
+
text: 'Testing multiple recipients'
|
|
57
|
+
});
|
|
58
|
+
await smtpClient.sendMail(multiEmail);
|
|
59
|
+
capabilities.multiplRecipients = true;
|
|
60
|
+
console.log('✓ Server supports multiple recipients');
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.log('✗ Multiple recipients not supported');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
console.log('\nDetected capabilities:', capabilities);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
tap.test('CCMD-11: Error message diagnostics', async () => {
|
|
69
|
+
// Test error messages which HELP would explain
|
|
70
|
+
console.log('Testing error message diagnostics:\n');
|
|
71
|
+
|
|
72
|
+
const errorTests = [
|
|
73
|
+
{
|
|
74
|
+
description: 'Invalid sender address',
|
|
75
|
+
email: {
|
|
76
|
+
from: 'invalid-sender',
|
|
77
|
+
to: ['recipient@example.com'],
|
|
78
|
+
subject: 'Test',
|
|
79
|
+
text: 'Test'
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
description: 'Empty recipient list',
|
|
84
|
+
email: {
|
|
85
|
+
from: 'sender@example.com',
|
|
86
|
+
to: [],
|
|
87
|
+
subject: 'Test',
|
|
88
|
+
text: 'Test'
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
description: 'Null subject',
|
|
93
|
+
email: {
|
|
94
|
+
from: 'sender@example.com',
|
|
95
|
+
to: ['recipient@example.com'],
|
|
96
|
+
subject: null as any,
|
|
97
|
+
text: 'Test'
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
];
|
|
101
|
+
|
|
102
|
+
for (const test of errorTests) {
|
|
103
|
+
console.log(`Testing: ${test.description}`);
|
|
104
|
+
try {
|
|
105
|
+
const email = new Email(test.email);
|
|
106
|
+
await smtpClient.sendMail(email);
|
|
107
|
+
console.log(' Unexpectedly succeeded');
|
|
108
|
+
} catch (error) {
|
|
109
|
+
console.log(` Error: ${error.message}`);
|
|
110
|
+
console.log(` This would be explained in HELP documentation`);
|
|
111
|
+
}
|
|
112
|
+
console.log('');
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
tap.test('CCMD-11: Connection configuration help', async () => {
|
|
117
|
+
// Test different connection configurations
|
|
118
|
+
console.log('Testing connection configurations:\n');
|
|
119
|
+
|
|
120
|
+
const configs = [
|
|
121
|
+
{
|
|
122
|
+
name: 'Standard connection',
|
|
123
|
+
config: {
|
|
124
|
+
host: testServer.hostname,
|
|
125
|
+
port: testServer.port,
|
|
126
|
+
secure: false,
|
|
127
|
+
connectionTimeout: 5000
|
|
128
|
+
},
|
|
129
|
+
shouldWork: true
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'With greeting timeout',
|
|
133
|
+
config: {
|
|
134
|
+
host: testServer.hostname,
|
|
135
|
+
port: testServer.port,
|
|
136
|
+
secure: false,
|
|
137
|
+
connectionTimeout: 5000,
|
|
138
|
+
greetingTimeout: 3000
|
|
139
|
+
},
|
|
140
|
+
shouldWork: true
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'With socket timeout',
|
|
144
|
+
config: {
|
|
145
|
+
host: testServer.hostname,
|
|
146
|
+
port: testServer.port,
|
|
147
|
+
secure: false,
|
|
148
|
+
connectionTimeout: 5000,
|
|
149
|
+
socketTimeout: 10000
|
|
150
|
+
},
|
|
151
|
+
shouldWork: true
|
|
152
|
+
}
|
|
153
|
+
];
|
|
154
|
+
|
|
155
|
+
for (const testConfig of configs) {
|
|
156
|
+
console.log(`Testing: ${testConfig.name}`);
|
|
157
|
+
try {
|
|
158
|
+
const client = createSmtpClient(testConfig.config);
|
|
159
|
+
const email = new Email({
|
|
160
|
+
from: 'sender@example.com',
|
|
161
|
+
to: ['recipient@example.com'],
|
|
162
|
+
subject: 'Config test',
|
|
163
|
+
text: `Testing ${testConfig.name}`
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
await client.sendMail(email);
|
|
167
|
+
console.log(` ✓ Configuration works`);
|
|
168
|
+
} catch (error) {
|
|
169
|
+
console.log(` ✗ Error: ${error.message}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
tap.test('CCMD-11: Protocol flow documentation', async () => {
|
|
175
|
+
// Document the protocol flow (what HELP would explain)
|
|
176
|
+
console.log('SMTP Protocol Flow (as HELP would document):\n');
|
|
177
|
+
|
|
178
|
+
const protocolSteps = [
|
|
179
|
+
'1. Connection established',
|
|
180
|
+
'2. Server sends greeting (220)',
|
|
181
|
+
'3. Client sends EHLO',
|
|
182
|
+
'4. Server responds with capabilities',
|
|
183
|
+
'5. Client sends MAIL FROM',
|
|
184
|
+
'6. Server accepts sender (250)',
|
|
185
|
+
'7. Client sends RCPT TO',
|
|
186
|
+
'8. Server accepts recipient (250)',
|
|
187
|
+
'9. Client sends DATA',
|
|
188
|
+
'10. Server ready for data (354)',
|
|
189
|
+
'11. Client sends message content',
|
|
190
|
+
'12. Client sends . to end',
|
|
191
|
+
'13. Server accepts message (250)',
|
|
192
|
+
'14. Client can send more or QUIT'
|
|
193
|
+
];
|
|
194
|
+
|
|
195
|
+
console.log('Standard SMTP transaction flow:');
|
|
196
|
+
protocolSteps.forEach(step => console.log(` ${step}`));
|
|
197
|
+
|
|
198
|
+
// Demonstrate the flow
|
|
199
|
+
console.log('\nDemonstrating flow with actual email:');
|
|
200
|
+
const email = new Email({
|
|
201
|
+
from: 'demo@example.com',
|
|
202
|
+
to: ['recipient@example.com'],
|
|
203
|
+
subject: 'Protocol flow demo',
|
|
204
|
+
text: 'Demonstrating SMTP protocol flow'
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
await smtpClient.sendMail(email);
|
|
208
|
+
console.log('✓ Protocol flow completed successfully');
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
tap.test('CCMD-11: Command availability matrix', async () => {
|
|
212
|
+
// Test what commands are available (HELP info)
|
|
213
|
+
console.log('Testing command availability:\n');
|
|
214
|
+
|
|
215
|
+
// Test various email features to determine support
|
|
216
|
+
const features = {
|
|
217
|
+
plainText: { supported: false, description: 'Plain text emails' },
|
|
218
|
+
htmlContent: { supported: false, description: 'HTML emails' },
|
|
219
|
+
attachments: { supported: false, description: 'File attachments' },
|
|
220
|
+
multipleRecipients: { supported: false, description: 'Multiple recipients' },
|
|
221
|
+
ccRecipients: { supported: false, description: 'CC recipients' },
|
|
222
|
+
bccRecipients: { supported: false, description: 'BCC recipients' },
|
|
223
|
+
customHeaders: { supported: false, description: 'Custom headers' },
|
|
224
|
+
priorities: { supported: false, description: 'Email priorities' }
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
// Test plain text
|
|
228
|
+
try {
|
|
229
|
+
await smtpClient.sendMail(new Email({
|
|
230
|
+
from: 'sender@example.com',
|
|
231
|
+
to: ['recipient@example.com'],
|
|
232
|
+
subject: 'Plain text test',
|
|
233
|
+
text: 'Plain text content'
|
|
234
|
+
}));
|
|
235
|
+
features.plainText.supported = true;
|
|
236
|
+
} catch (e) {}
|
|
237
|
+
|
|
238
|
+
// Test HTML
|
|
239
|
+
try {
|
|
240
|
+
await smtpClient.sendMail(new Email({
|
|
241
|
+
from: 'sender@example.com',
|
|
242
|
+
to: ['recipient@example.com'],
|
|
243
|
+
subject: 'HTML test',
|
|
244
|
+
html: '<p>HTML content</p>'
|
|
245
|
+
}));
|
|
246
|
+
features.htmlContent.supported = true;
|
|
247
|
+
} catch (e) {}
|
|
248
|
+
|
|
249
|
+
// Test multiple recipients
|
|
250
|
+
try {
|
|
251
|
+
await smtpClient.sendMail(new Email({
|
|
252
|
+
from: 'sender@example.com',
|
|
253
|
+
to: ['recipient1@example.com', 'recipient2@example.com'],
|
|
254
|
+
subject: 'Multiple recipients test',
|
|
255
|
+
text: 'Test'
|
|
256
|
+
}));
|
|
257
|
+
features.multipleRecipients.supported = true;
|
|
258
|
+
} catch (e) {}
|
|
259
|
+
|
|
260
|
+
// Test CC
|
|
261
|
+
try {
|
|
262
|
+
await smtpClient.sendMail(new Email({
|
|
263
|
+
from: 'sender@example.com',
|
|
264
|
+
to: ['recipient@example.com'],
|
|
265
|
+
cc: ['cc@example.com'],
|
|
266
|
+
subject: 'CC test',
|
|
267
|
+
text: 'Test'
|
|
268
|
+
}));
|
|
269
|
+
features.ccRecipients.supported = true;
|
|
270
|
+
} catch (e) {}
|
|
271
|
+
|
|
272
|
+
// Test BCC
|
|
273
|
+
try {
|
|
274
|
+
await smtpClient.sendMail(new Email({
|
|
275
|
+
from: 'sender@example.com',
|
|
276
|
+
to: ['recipient@example.com'],
|
|
277
|
+
bcc: ['bcc@example.com'],
|
|
278
|
+
subject: 'BCC test',
|
|
279
|
+
text: 'Test'
|
|
280
|
+
}));
|
|
281
|
+
features.bccRecipients.supported = true;
|
|
282
|
+
} catch (e) {}
|
|
283
|
+
|
|
284
|
+
console.log('Feature support matrix:');
|
|
285
|
+
Object.entries(features).forEach(([key, value]) => {
|
|
286
|
+
console.log(` ${value.description}: ${value.supported ? '✓ Supported' : '✗ Not supported'}`);
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
tap.test('CCMD-11: Error code reference', async () => {
|
|
291
|
+
// Document error codes (HELP would explain these)
|
|
292
|
+
console.log('SMTP Error Code Reference (as HELP would provide):\n');
|
|
293
|
+
|
|
294
|
+
const errorCodes = [
|
|
295
|
+
{ code: '220', meaning: 'Service ready', type: 'Success' },
|
|
296
|
+
{ code: '221', meaning: 'Service closing transmission channel', type: 'Success' },
|
|
297
|
+
{ code: '250', meaning: 'Requested action completed', type: 'Success' },
|
|
298
|
+
{ code: '251', meaning: 'User not local; will forward', type: 'Success' },
|
|
299
|
+
{ code: '354', meaning: 'Start mail input', type: 'Intermediate' },
|
|
300
|
+
{ code: '421', meaning: 'Service not available', type: 'Temporary failure' },
|
|
301
|
+
{ code: '450', meaning: 'Mailbox unavailable', type: 'Temporary failure' },
|
|
302
|
+
{ code: '451', meaning: 'Local error in processing', type: 'Temporary failure' },
|
|
303
|
+
{ code: '452', meaning: 'Insufficient storage', type: 'Temporary failure' },
|
|
304
|
+
{ code: '500', meaning: 'Syntax error', type: 'Permanent failure' },
|
|
305
|
+
{ code: '501', meaning: 'Syntax error in parameters', type: 'Permanent failure' },
|
|
306
|
+
{ code: '502', meaning: 'Command not implemented', type: 'Permanent failure' },
|
|
307
|
+
{ code: '503', meaning: 'Bad sequence of commands', type: 'Permanent failure' },
|
|
308
|
+
{ code: '550', meaning: 'Mailbox not found', type: 'Permanent failure' },
|
|
309
|
+
{ code: '551', meaning: 'User not local', type: 'Permanent failure' },
|
|
310
|
+
{ code: '552', meaning: 'Storage allocation exceeded', type: 'Permanent failure' },
|
|
311
|
+
{ code: '553', meaning: 'Mailbox name not allowed', type: 'Permanent failure' },
|
|
312
|
+
{ code: '554', meaning: 'Transaction failed', type: 'Permanent failure' }
|
|
313
|
+
];
|
|
314
|
+
|
|
315
|
+
console.log('Common SMTP response codes:');
|
|
316
|
+
errorCodes.forEach(({ code, meaning, type }) => {
|
|
317
|
+
console.log(` ${code} - ${meaning} (${type})`);
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
// Test triggering some errors
|
|
321
|
+
console.log('\nDemonstrating error handling:');
|
|
322
|
+
|
|
323
|
+
// Invalid email format
|
|
324
|
+
try {
|
|
325
|
+
await smtpClient.sendMail(new Email({
|
|
326
|
+
from: 'invalid-email-format',
|
|
327
|
+
to: ['recipient@example.com'],
|
|
328
|
+
subject: 'Test',
|
|
329
|
+
text: 'Test'
|
|
330
|
+
}));
|
|
331
|
+
} catch (error) {
|
|
332
|
+
console.log(`Invalid format error: ${error.message}`);
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
tap.test('CCMD-11: Debugging assistance', async () => {
|
|
337
|
+
// Test debugging features (HELP assists with debugging)
|
|
338
|
+
console.log('Debugging assistance features:\n');
|
|
339
|
+
|
|
340
|
+
// Create client with debug enabled
|
|
341
|
+
const debugClient = createSmtpClient({
|
|
342
|
+
host: testServer.hostname,
|
|
343
|
+
port: testServer.port,
|
|
344
|
+
secure: false,
|
|
345
|
+
connectionTimeout: 5000,
|
|
346
|
+
debug: true
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
console.log('Sending email with debug mode enabled:');
|
|
350
|
+
console.log('(Debug output would show full SMTP conversation)\n');
|
|
351
|
+
|
|
352
|
+
const debugEmail = new Email({
|
|
353
|
+
from: 'debug@example.com',
|
|
354
|
+
to: ['recipient@example.com'],
|
|
355
|
+
subject: 'Debug test',
|
|
356
|
+
text: 'Testing with debug mode'
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
// The debug output will be visible in the console
|
|
360
|
+
await debugClient.sendMail(debugEmail);
|
|
361
|
+
|
|
362
|
+
console.log('\nDebug mode helps troubleshoot:');
|
|
363
|
+
console.log('- Connection issues');
|
|
364
|
+
console.log('- Authentication problems');
|
|
365
|
+
console.log('- Message formatting errors');
|
|
366
|
+
console.log('- Server response codes');
|
|
367
|
+
console.log('- Protocol violations');
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
tap.test('CCMD-11: Performance benchmarks', async () => {
|
|
371
|
+
// Performance info (HELP might mention performance tips)
|
|
372
|
+
console.log('Performance benchmarks:\n');
|
|
373
|
+
|
|
374
|
+
const messageCount = 10;
|
|
375
|
+
const startTime = Date.now();
|
|
376
|
+
|
|
377
|
+
for (let i = 0; i < messageCount; i++) {
|
|
378
|
+
const email = new Email({
|
|
379
|
+
from: 'perf@example.com',
|
|
380
|
+
to: ['recipient@example.com'],
|
|
381
|
+
subject: `Performance test ${i + 1}`,
|
|
382
|
+
text: 'Testing performance'
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
await smtpClient.sendMail(email);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
const totalTime = Date.now() - startTime;
|
|
389
|
+
const avgTime = totalTime / messageCount;
|
|
390
|
+
|
|
391
|
+
console.log(`Sent ${messageCount} emails in ${totalTime}ms`);
|
|
392
|
+
console.log(`Average time per email: ${avgTime.toFixed(2)}ms`);
|
|
393
|
+
console.log(`Throughput: ${(1000 / avgTime).toFixed(2)} emails/second`);
|
|
394
|
+
|
|
395
|
+
console.log('\nPerformance tips:');
|
|
396
|
+
console.log('- Use connection pooling for multiple emails');
|
|
397
|
+
console.log('- Enable pipelining when supported');
|
|
398
|
+
console.log('- Batch recipients when possible');
|
|
399
|
+
console.log('- Use appropriate timeouts');
|
|
400
|
+
console.log('- Monitor connection limits');
|
|
401
|
+
});
|
|
402
|
+
|
|
403
|
+
tap.test('cleanup test SMTP server', async () => {
|
|
404
|
+
if (testServer) {
|
|
405
|
+
await stopTestServer(testServer);
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
|
|
409
|
+
export default tap.start();
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { tap, expect } from '@git.zone/tstest/tapbundle';
|
|
2
|
+
import { startTestServer, stopTestServer, type ITestServer } from '../../helpers/server.loader.js';
|
|
3
|
+
import { createSmtpClient } from '../../../ts/mail/delivery/smtpclient/index.js';
|
|
4
|
+
import type { SmtpClient } from '../../../ts/mail/delivery/smtpclient/smtp-client.js';
|
|
5
|
+
|
|
6
|
+
let testServer: ITestServer;
|
|
7
|
+
let smtpClient: SmtpClient;
|
|
8
|
+
|
|
9
|
+
tap.test('setup - start SMTP server for basic connection test', async () => {
|
|
10
|
+
testServer = await startTestServer({
|
|
11
|
+
port: 2525,
|
|
12
|
+
tlsEnabled: false,
|
|
13
|
+
authRequired: false
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
expect(testServer.port).toEqual(2525);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
tap.test('CCM-01: Basic TCP Connection - should connect to SMTP server', async () => {
|
|
20
|
+
const startTime = Date.now();
|
|
21
|
+
|
|
22
|
+
try {
|
|
23
|
+
// Create SMTP client
|
|
24
|
+
smtpClient = createSmtpClient({
|
|
25
|
+
host: testServer.hostname,
|
|
26
|
+
port: testServer.port,
|
|
27
|
+
secure: false,
|
|
28
|
+
connectionTimeout: 5000,
|
|
29
|
+
debug: true
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// Verify connection
|
|
33
|
+
const isConnected = await smtpClient.verify();
|
|
34
|
+
expect(isConnected).toBeTrue();
|
|
35
|
+
|
|
36
|
+
const duration = Date.now() - startTime;
|
|
37
|
+
console.log(`✅ Basic TCP connection established in ${duration}ms`);
|
|
38
|
+
|
|
39
|
+
} catch (error) {
|
|
40
|
+
const duration = Date.now() - startTime;
|
|
41
|
+
console.error(`❌ Basic TCP connection failed after ${duration}ms:`, error);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
tap.test('CCM-01: Basic TCP Connection - should report connection status', async () => {
|
|
47
|
+
// After verify(), connection is closed, so isConnected should be false
|
|
48
|
+
expect(smtpClient.isConnected()).toBeFalse();
|
|
49
|
+
|
|
50
|
+
const poolStatus = smtpClient.getPoolStatus();
|
|
51
|
+
console.log('📊 Connection pool status:', poolStatus);
|
|
52
|
+
|
|
53
|
+
// After verify(), pool should be empty
|
|
54
|
+
expect(poolStatus.total).toEqual(0);
|
|
55
|
+
expect(poolStatus.active).toEqual(0);
|
|
56
|
+
|
|
57
|
+
// Test that connection status is correct during actual email send
|
|
58
|
+
const email = new (await import('../../../ts/mail/core/classes.email.js')).Email({
|
|
59
|
+
from: 'sender@example.com',
|
|
60
|
+
to: ['recipient@example.com'],
|
|
61
|
+
subject: 'Connection status test',
|
|
62
|
+
text: 'Testing connection status'
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// During sendMail, connection should be established
|
|
66
|
+
const sendPromise = smtpClient.sendMail(email);
|
|
67
|
+
|
|
68
|
+
// Check status while sending (might be too fast to catch)
|
|
69
|
+
const duringStatus = smtpClient.getPoolStatus();
|
|
70
|
+
console.log('📊 Pool status during send:', duringStatus);
|
|
71
|
+
|
|
72
|
+
await sendPromise;
|
|
73
|
+
|
|
74
|
+
// After send, connection might be pooled or closed
|
|
75
|
+
const afterStatus = smtpClient.getPoolStatus();
|
|
76
|
+
console.log('📊 Pool status after send:', afterStatus);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
tap.test('CCM-01: Basic TCP Connection - should handle multiple connect/disconnect cycles', async () => {
|
|
80
|
+
// Close existing connection
|
|
81
|
+
await smtpClient.close();
|
|
82
|
+
expect(smtpClient.isConnected()).toBeFalse();
|
|
83
|
+
|
|
84
|
+
// Create new client and test reconnection
|
|
85
|
+
for (let i = 0; i < 3; i++) {
|
|
86
|
+
const cycleClient = createSmtpClient({
|
|
87
|
+
host: testServer.hostname,
|
|
88
|
+
port: testServer.port,
|
|
89
|
+
secure: false,
|
|
90
|
+
connectionTimeout: 5000
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
const isConnected = await cycleClient.verify();
|
|
94
|
+
expect(isConnected).toBeTrue();
|
|
95
|
+
|
|
96
|
+
await cycleClient.close();
|
|
97
|
+
expect(cycleClient.isConnected()).toBeFalse();
|
|
98
|
+
|
|
99
|
+
console.log(`✅ Connection cycle ${i + 1} completed`);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
tap.test('CCM-01: Basic TCP Connection - should fail with invalid host', async () => {
|
|
104
|
+
const invalidClient = createSmtpClient({
|
|
105
|
+
host: 'invalid.host.that.does.not.exist',
|
|
106
|
+
port: 2525,
|
|
107
|
+
secure: false,
|
|
108
|
+
connectionTimeout: 3000
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// verify() returns false on connection failure, doesn't throw
|
|
112
|
+
const result = await invalidClient.verify();
|
|
113
|
+
expect(result).toBeFalse();
|
|
114
|
+
console.log('✅ Correctly failed to connect to invalid host');
|
|
115
|
+
|
|
116
|
+
await invalidClient.close();
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
tap.test('CCM-01: Basic TCP Connection - should timeout on unresponsive port', async () => {
|
|
120
|
+
const startTime = Date.now();
|
|
121
|
+
|
|
122
|
+
const timeoutClient = createSmtpClient({
|
|
123
|
+
host: testServer.hostname,
|
|
124
|
+
port: 9999, // Port that's not listening
|
|
125
|
+
secure: false,
|
|
126
|
+
connectionTimeout: 2000
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// verify() returns false on connection failure, doesn't throw
|
|
130
|
+
const result = await timeoutClient.verify();
|
|
131
|
+
expect(result).toBeFalse();
|
|
132
|
+
|
|
133
|
+
const duration = Date.now() - startTime;
|
|
134
|
+
expect(duration).toBeLessThan(3000); // Should timeout within 3 seconds
|
|
135
|
+
console.log(`✅ Connection timeout working correctly (${duration}ms)`);
|
|
136
|
+
|
|
137
|
+
await timeoutClient.close();
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
tap.test('cleanup - close SMTP client', async () => {
|
|
141
|
+
if (smtpClient && smtpClient.isConnected()) {
|
|
142
|
+
await smtpClient.close();
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
tap.test('cleanup - stop SMTP server', async () => {
|
|
147
|
+
await stopTestServer(testServer);
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
export default tap.start();
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { tap, expect } from '@git.zone/tstest/tapbundle';
|
|
2
|
+
import { startTestServer, stopTestServer, type ITestServer } from '../../helpers/server.loader.js';
|
|
3
|
+
import { createSmtpClient } from '../../../ts/mail/delivery/smtpclient/index.js';
|
|
4
|
+
import type { SmtpClient } from '../../../ts/mail/delivery/smtpclient/smtp-client.js';
|
|
5
|
+
import { Email } from '../../../ts/mail/core/classes.email.js';
|
|
6
|
+
|
|
7
|
+
let testServer: ITestServer;
|
|
8
|
+
let smtpClient: SmtpClient;
|
|
9
|
+
|
|
10
|
+
tap.test('setup - start SMTP server with TLS', async () => {
|
|
11
|
+
testServer = await startTestServer({
|
|
12
|
+
port: 2526,
|
|
13
|
+
tlsEnabled: true,
|
|
14
|
+
authRequired: false
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
expect(testServer.port).toEqual(2526);
|
|
18
|
+
expect(testServer.config.tlsEnabled).toBeTrue();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
tap.test('CCM-02: TLS Connection - should establish secure connection via STARTTLS', async () => {
|
|
22
|
+
const startTime = Date.now();
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
// Create SMTP client with STARTTLS (not direct TLS)
|
|
26
|
+
smtpClient = createSmtpClient({
|
|
27
|
+
host: testServer.hostname,
|
|
28
|
+
port: testServer.port,
|
|
29
|
+
secure: false, // Start with plain connection
|
|
30
|
+
connectionTimeout: 10000,
|
|
31
|
+
tls: {
|
|
32
|
+
rejectUnauthorized: false // For self-signed test certificates
|
|
33
|
+
},
|
|
34
|
+
debug: true
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// Verify connection (will upgrade to TLS via STARTTLS)
|
|
38
|
+
const isConnected = await smtpClient.verify();
|
|
39
|
+
expect(isConnected).toBeTrue();
|
|
40
|
+
|
|
41
|
+
const duration = Date.now() - startTime;
|
|
42
|
+
console.log(`✅ STARTTLS connection established in ${duration}ms`);
|
|
43
|
+
|
|
44
|
+
} catch (error) {
|
|
45
|
+
const duration = Date.now() - startTime;
|
|
46
|
+
console.error(`❌ STARTTLS connection failed after ${duration}ms:`, error);
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
tap.test('CCM-02: TLS Connection - should send email over secure connection', async () => {
|
|
52
|
+
const email = new Email({
|
|
53
|
+
from: 'test@example.com',
|
|
54
|
+
to: 'recipient@example.com',
|
|
55
|
+
subject: 'TLS Connection Test',
|
|
56
|
+
text: 'This email was sent over a secure TLS connection',
|
|
57
|
+
html: '<p>This email was sent over a <strong>secure TLS connection</strong></p>'
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
const result = await smtpClient.sendMail(email);
|
|
61
|
+
|
|
62
|
+
expect(result).toBeTruthy();
|
|
63
|
+
expect(result.success).toBeTrue();
|
|
64
|
+
expect(result.messageId).toBeTruthy();
|
|
65
|
+
|
|
66
|
+
console.log(`✅ Email sent over TLS with message ID: ${result.messageId}`);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
tap.test('CCM-02: TLS Connection - should reject invalid certificates when required', async () => {
|
|
70
|
+
// Create new client with strict certificate validation
|
|
71
|
+
const strictClient = createSmtpClient({
|
|
72
|
+
host: testServer.hostname,
|
|
73
|
+
port: testServer.port,
|
|
74
|
+
secure: false,
|
|
75
|
+
tls: {
|
|
76
|
+
rejectUnauthorized: true // Strict validation
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// Should fail with self-signed certificate
|
|
81
|
+
const result = await strictClient.verify();
|
|
82
|
+
expect(result).toBeFalse();
|
|
83
|
+
|
|
84
|
+
console.log('✅ Correctly rejected self-signed certificate with strict validation');
|
|
85
|
+
|
|
86
|
+
await strictClient.close();
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
tap.test('CCM-02: TLS Connection - should work with direct TLS if supported', async () => {
|
|
90
|
+
// Try direct TLS connection (might fail if server doesn't support it)
|
|
91
|
+
const directTlsClient = createSmtpClient({
|
|
92
|
+
host: testServer.hostname,
|
|
93
|
+
port: testServer.port,
|
|
94
|
+
secure: true, // Direct TLS from start
|
|
95
|
+
connectionTimeout: 5000,
|
|
96
|
+
tls: {
|
|
97
|
+
rejectUnauthorized: false
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
const result = await directTlsClient.verify();
|
|
102
|
+
|
|
103
|
+
if (result) {
|
|
104
|
+
console.log('✅ Direct TLS connection supported and working');
|
|
105
|
+
} else {
|
|
106
|
+
console.log('ℹ️ Direct TLS not supported, STARTTLS is the way');
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
await directTlsClient.close();
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
tap.test('CCM-02: TLS Connection - should verify TLS cipher suite', async () => {
|
|
113
|
+
// Send email and check connection details
|
|
114
|
+
const email = new Email({
|
|
115
|
+
from: 'cipher-test@example.com',
|
|
116
|
+
to: 'recipient@example.com',
|
|
117
|
+
subject: 'TLS Cipher Test',
|
|
118
|
+
text: 'Testing TLS cipher suite'
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// The actual cipher info would be in debug logs
|
|
122
|
+
console.log('ℹ️ TLS cipher information available in debug logs');
|
|
123
|
+
|
|
124
|
+
const result = await smtpClient.sendMail(email);
|
|
125
|
+
expect(result.success).toBeTrue();
|
|
126
|
+
|
|
127
|
+
console.log('✅ Email sent successfully over encrypted connection');
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
tap.test('cleanup - close SMTP client', async () => {
|
|
131
|
+
if (smtpClient) {
|
|
132
|
+
await smtpClient.close();
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
tap.test('cleanup - stop SMTP server', async () => {
|
|
137
|
+
await stopTestServer(testServer);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
export default tap.start();
|