Skip to content

chore(deps): bump nodemailer from 8 to 9#456

Merged
joaquimds merged 1 commit into
mainfrom
chore/nodemailer-9
Jul 23, 2026
Merged

chore(deps): bump nodemailer from 8 to 9#456
joaquimds merged 1 commit into
mainfrom
chore/nodemailer-9

Conversation

@joaquimds

Copy link
Copy Markdown
Member

Closes the last high-severity advisory that had no in-range fix. The message-level raw option bypasses disableFileAccess, and the advisory range is <=9.0.0, so 9.0.x is the only way out — npm audit fix cannot reach it.

Why this is low risk

v9 has exactly one breaking change: HTTPS requests made while fetching remote content now validate TLS certificates by default. That covers attachment href/path URLs, OAuth2 token endpoints, and HTTP/HTTPS proxy CONNECT.

None of those apply to src/server/services/mailer.tsx, which is the only place nodemailer is used:

  • sendEmail passes rendered HTML — no attachments, so no remote fetches.
  • Production uses plain SMTP auth against mail.smtp2go.com — no OAuth2.
  • Development uses mailpit on localhost:1025 with ignoreTLS: true.

Verification

Rather than trusting the changelog, I sent a real email through the app's own sendEmail into the local mailpit container and asserted via mailpit's API that it arrived with the right recipient. That test was temporary and is not in this diff — CI has only Postgres and Redis, so a mailpit-dependent test would fail there.

Also: npm run lint, npm run build.

Note

Stacked on #455 — the base will retarget to main automatically once that merges.

🤖 Generated with Claude Code

Fixes the one remaining high advisory that had no in-range fix: the
message-level raw option bypassing disableFileAccess (vulnerable <=9.0.0).

The only breaking change in v9 is that HTTPS requests made while fetching
remote content now validate TLS certificates by default -- attachment
href/path URLs, OAuth2 token endpoints and HTTP proxy CONNECT. None of
those apply here: sendEmail passes rendered HTML with no attachments, the
production transport uses plain SMTP auth against smtp2go, and the
development transport is mailpit on localhost with ignoreTLS.

Verified by sending a real email through sendEmail into the local mailpit
container and asserting it arrived, plus npm run lint and npm run build.

Stacked on top of the Dependabot batch (#455).
Base automatically changed from chore/dependabot-batch to main July 23, 2026 11:24
@joaquimds
joaquimds merged commit d4b8a0f into main Jul 23, 2026
@joaquimds
joaquimds deleted the chore/nodemailer-9 branch July 23, 2026 11:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant