SMTP timeout notes in smtp.ts and the changelog describe nodemailer 10.0, not 10.1
I maintainer di solito rispondono entro 1 giorno
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
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_MSsays 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.tsstill passes, since it only checks thatgreetingTimeoutandsocketTimeoutare 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_MSinsrc/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
dnsTimeoutandconnectionTimeoutfor 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. LeaveidleTimeoutat 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.tsdescribes 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.tshas 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 testpass.
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
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di richshaw/OpenSignup
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
richshaw/OpenSignup#654 ·
I maintainer di solito rispondono entro 1 giorno
-
The help pages never say "pause", so organizers looking for it miss Close or reopen a signupForse già presa @richshaw l’ha presa oggi. Apertaenhancement pipeline:building pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
richshaw/OpenSignup#653 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
richshaw/OpenSignup#652 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
richshaw/OpenSignup#589 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement pipeline:proposed pipeline:ux
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
richshaw/OpenSignup#588 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di richshaw/OpenSignup
Issue simili
-
New icon: `filter-clear`Apertacalcite-ui-icons enhancement impact - p3 - not time sensitive needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
Esri/calcite-design-system#15467 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
diegosouzapw/OmniRoute#18390 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 86/100
guilhermerodz/input-otp#157 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
davidjerleke/embla-carousel#1414 ·
I maintainer di solito rispondono entro 4 giorni