Skip to content

Conversation

depfu[bot]
Copy link

@depfu depfu bot commented Oct 7, 2025


Welcome to Depfu 👋

This is one of the first three pull requests with dependency updates we've sent your way. We tried to start with a few easy patch-level updates. Hopefully your tests will pass and you can merge this pull request without too much risk. This should give you an idea how Depfu works in general.

After you merge your first pull request, we'll send you a few more. We'll never open more than seven PRs at the same time so you're not getting overwhelmed with updates.

Let us know if you have any questions. Thanks so much for giving Depfu a try!



🚨 Your current dependencies have known security vulnerabilities 🚨

This dependency update fixes known security vulnerabilities. Please see the details below and assess their impact carefully. We recommend to merge and deploy this as soon as possible!


Here is everything you need to know about this upgrade. Please take a good look at what changed and the test results before merging this pull request.

What changed?

✳️ nodemailer (6.10.0 → 7.0.9) · Repo · Changelog

Security Advisories 🚨

🚨 Nodemailer: Email to an unintended domain can occur due to Interpretation Conflict

The email parsing library incorrectly handles quoted local-parts containing @. This leads to misrouting of email recipients, where the parser extracts and routes to an unintended domain instead of the RFC-compliant target.

Payload: "[email protected] x"@internal.domain
Using the following code to send mail

const nodemailer = require("nodemailer");

let transporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: "",
pass: "",
},
});

let mailOptions = {
from: '"Test Sender" <[email protected]>',
to: ""[email protected] x"@internal.domain",
subject: "Hello from Nodemailer",
text: "This is a test email sent using Gmail SMTP and Nodemailer!",
};

transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log("Error: ", error);
}
console.log("Message sent: %s", info.messageId);

});

(async () => {
const parser = await import("@sparser/email-address-parser");
const { EmailAddress, ParsingOptions } = parser.default;
const parsed = EmailAddress.parse(mailOptions.to /*, new ParsingOptions(true) */);

if (!parsed) {
console.error("Invalid email address:", mailOptions.to);
return;
}

console.log("Parsed email:", {
address: ${parsed.localPart}@${parsed.domain},
local: parsed.localPart,
domain: parsed.domain,
});
})();

Running the script and seeing how this mail is parsed according to RFC

Parsed email: {
  address: '"[email protected] x"@internal.domain',
  local: '"[email protected] x"',
  domain: 'internal.domain'
}

But the email is sent to [email protected]

Image

Impact:

  • Misdelivery / Data leakage: Email is sent to psres.net instead of test.com.

  • Filter evasion: Logs and anti-spam systems may be bypassed by hiding recipients inside quoted local-parts.

  • Potential compliance issue: Violates RFC 5321/5322 parsing rules.

  • Domain based access control bypass in downstream applications using your library to send mails

Recommendations

  • Fix parser to correctly treat quoted local-parts per RFC 5321/5322.

  • Add strict validation rejecting local-parts containing embedded @ unless fully compliant with quoting.

Release Notes

7.0.7

7.0.7 (2025-10-05)

Bug Fixes

  • addressparser: Fixed addressparser handling of quoted nested email addresses (1150d99)
  • dns: add memory leak prevention for DNS cache (0240d67)
  • linter: Updated eslint and created prettier formatting task (df13b74)
  • refresh expired DNS cache on error (#1759) (ea0fc5a)
  • resolve linter errors in DNS cache tests (3b8982c)

7.0.6

7.0.6 (2025-08-27)

Bug Fixes

  • encoder: avoid silent data loss by properly flushing trailing base64 (#1747) (01ae76f)
  • handle multiple XOAUTH2 token requests correctly (#1754) (dbe0028)
  • ReDoS vulnerability in parseDataURI and _processDataUrl (#1755) (90b3e24)

7.0.5

7.0.5 (2025-07-07)

Bug Fixes

  • updated well known delivery service list (fa2724b)

7.0.4

7.0.4 (2025-06-29)

Bug Fixes

  • pools: Emit 'clear' once transporter is idle and all connections are closed (839e286)
  • smtp-connection: jsdoc public annotation for socket (#1741) (c45c84f)
  • well-known-services: Added AliyunQiye (bb9e6da)

7.0.3

7.0.3 (2025-05-08)

Bug Fixes

  • attachments: Set the default transfer encoding for message/rfc822 attachments as '7bit' (007d5f3)

7.0.2

7.0.2 (2025-05-04)

Bug Fixes

  • ses: Fixed structured from header (faa9a5e)

7.0.1

7.0.1 (2025-05-04)

Bug Fixes

  • ses: Use formatted FromEmailAddress for SES emails (821cd09)

7.0.0

7.0.0 (2025-05-03)

⚠ BREAKING CHANGES

  • SESv2 SDK support, removed older SES SDK v2 and v3 , removed SES rate limiting and idling features

See SES Transport Docs for updated usage details

Features

  • SESv2 SDK support, removed older SES SDK v2 and v3 , removed SES rate limiting and idling features (15db667)

6.10.1

6.10.1 (2025-02-06)

Bug Fixes

Does any of this look wrong? Please let us know.

Commits

See the full diff on Github. The new version differs by 49 commits:

🆕 @​msgpackr-extract/msgpackr-extract-darwin-arm64 (added, 3.0.3)

🆕 @​msgpackr-extract/msgpackr-extract-darwin-x64 (added, 3.0.3)

🆕 @​msgpackr-extract/msgpackr-extract-linux-arm (added, 3.0.3)

🆕 @​msgpackr-extract/msgpackr-extract-linux-arm64 (added, 3.0.3)

🆕 @​msgpackr-extract/msgpackr-extract-linux-x64 (added, 3.0.3)

🆕 @​msgpackr-extract/msgpackr-extract-win32-x64 (added, 3.0.3)

🆕 msgpackr (added, 1.11.5)

🆕 msgpackr-extract (added, 3.0.3)

🆕 node-gyp-build-optional-packages (added, 5.2.2)


👉 No CI detected

You don't seem to have any Continuous Integration service set up!

Without a service that will test the Depfu branches and pull requests, we can't inform you if incoming updates actually work with your app. We think that this degrades the service we're trying to provide down to a point where it is more or less meaningless.

This is fine if you just want to give Depfu a quick try. If you want to really let Depfu help you keep your app up-to-date, we recommend setting up a CI system:

* [Circle CI](https://circleci.com), [Semaphore ](https://semaphoreci.com) and [Github Actions](https://docs.github.com/actions) are all excellent options. * If you use something like Jenkins, make sure that you're using the Github integration correctly so that it reports status data back to Github. * If you have already set up a CI for this repository, you might need to check your configuration. Make sure it will run on all new branches. If you don’t want it to run on every branch, you can whitelist branches starting with `depfu/`.

Depfu Status

Depfu will automatically keep this PR conflict-free, as long as you don't add any commits to this branch yourself. You can also trigger a rebase manually by commenting with @depfu rebase.

All Depfu comment commands
@​depfu rebase
Rebases against your default branch and redoes this update
@​depfu recreate
Recreates this PR, overwriting any edits that you've made to it
@​depfu merge
Merges this PR once your tests are passing and conflicts are resolved
@​depfu cancel merge
Cancels automatic merging of this PR
@​depfu close
Closes this PR and deletes the branch
@​depfu reopen
Restores the branch and reopens this PR (if it's closed)
@​depfu pause
Ignores all future updates for this dependency and closes this PR
@​depfu pause [minor|major]
Ignores all future minor/major updates for this dependency and closes this PR
@​depfu resume
Future versions of this dependency will create PRs again (leaves this PR as is)

@depfu depfu bot added the depfu label Oct 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants