From 5524cd9d0d786b64b2157d9a94b8678be229c1a1 Mon Sep 17 00:00:00 2001 From: neon <18559658+neonsolstice@users.noreply.github.com> Date: Mon, 18 May 2026 12:38:22 -0600 Subject: [PATCH] fix(email): add skip-TLS-verification option and surface provider delete errors (#35) Node.js inside Docker validates the full TLS certificate chain against its bundled CA store. When the chain cannot be verified (e.g. outdated CA bundle, self-signed cert, or Let's Encrypt chain not trusted), nodemailer reports a misleading error like "certificate has expired". Add a per-provider tlsRejectUnauthorized flag (default: true) that passes tls.rejectUnauthorized=false to nodemailer when disabled, letting self-hosted SMTP servers opt out of cert verification. A visible warning is shown in the provider form whenever the flag is turned off. The delete provider API already returned a clear 400 message explaining that the system designation must be removed first, but the frontend threw a hardcoded "Failed to delete provider" string and never read the response body. Fix the composable to parse and rethrow the actual API error message. Also disable the delete button for system providers with a tooltip stating the constraint, so users cannot trigger the error in the first place. Adds tlsRejectUnauthorized boolean column (NOT NULL DEFAULT true) to email_providers via Drizzle migration 0004. Closes #26 --- .../email/components/ProvidersTab.vue | 27 +- .../email/composables/useEmailProviders.ts | 7 +- ...reject_unauthorized_to_email_providers.sql | 3 + .../src/db/migrations/meta/0004_snapshot.json | 10415 ++++++++++++++++ server/src/db/migrations/meta/_journal.json | 9 +- server/src/db/schema/email-providers.ts | 1 + .../email/dto/create-email-provider.dto.ts | 3 + .../email/dto/email-dto-validation.test.ts | 18 + .../email/dto/update-email-provider.dto.ts | 4 + .../email/email-provider-resolver.test.ts | 10 + .../modules/email/email-provider-resolver.ts | 1 + .../email/email-provider.controller.test.ts | 1 + .../email/email-provider.service.test.ts | 49 +- .../modules/email/email-provider.service.ts | 3 + .../email/email-transport.service.test.ts | 27 +- .../modules/email/email-transport.service.ts | 2 + .../modules/email/system-mail.service.test.ts | 2 + .../src/modules/email/system-mail.service.ts | 1 + 18 files changed, 10574 insertions(+), 9 deletions(-) create mode 100644 server/src/db/migrations/0004_add_tls_reject_unauthorized_to_email_providers.sql create mode 100644 server/src/db/migrations/meta/0004_snapshot.json diff --git a/client/src/features/email/components/ProvidersTab.vue b/client/src/features/email/components/ProvidersTab.vue index 267e32ec8..36ad9d8d8 100644 --- a/client/src/features/email/components/ProvidersTab.vue +++ b/client/src/features/email/components/ProvidersTab.vue @@ -1,7 +1,7 @@