Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

SMTP timeout notes in smtp.ts and the changelog describe nodemailer 10.0, not 10.1

Aperta Adatta ai principianti
#645 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@agammann ci sta già lavorando.

Dal 25/10/2026.

  • #666 di @agammann — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
82/100
Tipo di issue
Documentazione
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
node.js, typescript
Ambito
backend

Direzione di ricerca

Leggi i commenti sopra SMTP_DNS_TIMEOUT_MS e SMTP_MAX_CONNECTIONS in src/email/smtp.ts, il test indicato in src/email/smtp.test.ts e la voce Unreleased Fixed in CHANGELOG. Aggiorna queste note per descrivere la scadenza condivisa della connessione di 10 secondi, la chiusura delle connessioni inattive del pool dopo quattro minuti e cosa verifica il test; lascia invariati i valori di timeout. Il lavoro è completato quando nessuno di questi punti descrive un timeout per indirizzo o un saluto di 30 secondi.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement good first issue pipeline:ready

What happens

nodemailer 10.1, which #616 brings in, changed what connectionTimeout covers. In 10.0 it bounded only the TCP connect, and it started again for each address a host name resolves to. In 10.1 it is one deadline for setting up the whole session: the DNS lookup, every address tried, the TCP connect, TLS, the server's greeting and the STARTTLS upgrade. nodemailer's pool also now closes a connection itself after 4 minutes idle (its new idleTimeout, default 240 s).

We set that limit to 10 s (SMTP_CONNECTION_TIMEOUT_MS in src/email/smtp.ts), and three places still describe 10.0:

  • The comment above SMTP_DNS_TIMEOUT_MS says the connect limit is per address, so "with three addresses down the sign-in request's own 30 s limit runs out first", and that once a server answers its pace is left to nodemailer's defaults, "30 s for the greeting". Now a host that is down fails in 10 s however many addresses it has, and the greeting has to arrive within what's left of the same 10 s.
  • The test "leaves a server that has answered to nodemailer's defaults" in src/email/smtp.test.ts still passes, since it only checks that greetingTimeout and socketTimeout are unset, but its name now promises more than is true.
  • The CHANGELOG (Unreleased, Fixed, the SMTP_SECURE / port 465 entry) says a host that is down fails "in about 10 seconds for each address its name resolves to (nodemailer tries them in turn)".

Nothing breaks. The tophat on #616 measured it: a server that waits 12 s before its greeting gets the email on 10.0.9, and on 10.1.4 the send fails at 10 s with ETIMEDOUT "Greeting never received". Real submission relays greet in well under a second. The cost is the notes: the next person to tune these limits would start from the wrong model.

Fix, in outline

  • Rewrite the comment above SMTP_DNS_TIMEOUT_MS / SMTP_CONNECTION_TIMEOUT_MS: one 10 s budget runs from the DNS lookup to the end of STARTTLS, across every address, so a host that is down or never greets fails in 10 s, well inside the sign-in request's 30 s (MAGIC_LINK_SEND_TIMEOUT_MS in src/auth/magic-link-send.ts). Keep the reason the later limits are left alone: once the message is being sent, a timeout after the relay took it means a retried reminder and a duplicate email.
  • Keep both values at 10 s. Failing fast is still the point, and it leaves room under the 30 s sign-in limit. Note that nodemailer now uses the smaller of dnsTimeout and connectionTimeout for the lookup.
  • In the pool comment above SMTP_MAX_CONNECTIONS, add that nodemailer closes a pooled connection after 4 minutes idle, and the next email opens a new one. Leave idleTimeout at nodemailer's default.
  • Rename the test to say what it checks, for example "leaves the pace after the greeting to nodemailer's defaults", and adjust its comment to match.
  • Correct the CHANGELOG entry in place (it's still Unreleased): a mail host that is down, or that doesn't greet, now fails a send in about 10 seconds in all.

Watch for

  • Comments, one test name and the changelog only. No value changes, so nothing to tophat.
  • The test "gives up on a host that is down in seconds, not minutes" pins both values at 10 s or less. Leave it as it is.
  • The #333 entry under Changed in the CHANGELOG ("A connection the mail server closes while idle is dropped, and the next email opens a new one") is still true. Add the 4-minute idle close there only if it reads naturally.

Order

After #616, because these notes should describe the nodemailer version on main, and #616 is what brings in 10.1.

Done when

  • The comment in src/email/smtp.ts describes one connection deadline covering DNS, every address, TLS, the greeting and STARTTLS, and the pool's 4-minute idle close. It no longer mentions a per-address limit or a 30 s greeting.
  • The test in src/email/smtp.test.ts has a name that matches what it checks.
  • The CHANGELOG no longer says the 10 s applies per address.
  • pnpm lint && pnpm typecheck && pnpm knip && pnpm test pass.

From the tophat of #616 (nodemailer 10.0.9 → 10.1.4), checked against main at ee0f0d5. Verified by sending through SmtpTransport on both versions to a local Mailpit relay and to a stand-in server that delays its greeting, and by reading nodemailer 10.1.4's smtp-connection and smtp-pool.


Generated by Claude Code

Lingua principale
TypeScript
Stelle
19
Fork
4
Merge medio
21h 3m
PR unite (30g)
176

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di richshaw/OpenSignup

Tutte le issue di richshaw/OpenSignup

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.