// come risolvere
SMTP "421 Too many connections" o limite di frequenza: come risolvere
Il server ricevente risponde 421 too many connections o rate limit? Rallenta i tuoi invii con meno connessioni, oppure regola i limiti di Postfix.
Cosa significa
Una risposta 421 significa "non ora, riprova più tardi". Il server ricevente chiude la connessione perché ne hai aperte troppe contemporaneamente, o hai inviato troppo in fretta. È un errore temporaneo: un normale server di posta conserva il messaggio e riprova. Sui server Postfix, il messaggio di solito è simile a questo:
421 4.7.0 mx.example.com Error: too many connections from 203.0.113.10
Altri server lo dicono in modo diverso ("Too many concurrent SMTP connections", "Try again later, closing connection", "rate limited"). Un messaggio Postfix simile è 450 4.7.1 Error: too much mail from 203.0.113.10 (limite di frequenza dei messaggi).
Alcuni grandi provider hanno codici propri, con guide dedicate: Gmail 421 4.7.28 e Microsoft 451 4.7.500; Yahoo ha i suoi codici TSS.
Perché succede
- Troppe connessioni in parallelo. La tua app o il tuo server apre molte connessioni insieme (una newsletter, o uno script che invia ogni email in una connessione separata).
- Troppi messaggi al minuto da un solo IP o da un solo account.
- Reputazione bassa o nuova. I destinatari accettano meno dagli IP che non conoscono, quindi un volume che va bene per un vecchio IP fa scattare i limiti su uno nuovo.
- IP condiviso. Altri clienti sullo stesso IP consumano parte della quota.
- I limiti del tuo stesso server, se è il tuo server a rispondere 421 alle tue app o a un partner.
- Limiti dell'account di invio. I provider di posta limitano le sessioni SMTP e i messaggi per account; un
421o un4.7.0durante un grosso invio da una normale casella è frequente.
Come verificare
- Scopri chi risponde. L'hostname nella riga 421 ti dice se si tratta del server del destinatario, del relay del tuo provider o del tuo stesso server.
- Sul tuo Postfix di invio, guarda i messaggi rimandati:
postqueue -p | grep -i "too many" | sort | uniq -c grep "421" /var/log/mail.log | tail
- Sul tuo Postfix di ricezione, il servizio
anvilregistra i picchi:grep "anvil" /var/log/mail.log | tail postconf smtpd_client_connection_count_limit smtpd_client_connection_rate_limit smtpd_client_message_rate_limit anvil_rate_time_unit
- Controlla la reputazione: cerca il tuo IP di invio nelle blacklist e invia un test all'indirizzo unico indicato nella home page di Delivmail. Un report pulito significa che il limite riguarda il volume, non un blocco.
Come risolvere
Se sei il mittente: invia più lentamente
In un'app con nodemailer, riusa poche connessioni invece di aprirne una per messaggio:
const transporter = nodemailer.createTransport({
host: 'smtp.example.com',
port: 587,
pool: true, // reuse connections
maxConnections: 2, // parallel connections
maxMessages: 100, // messages per connection
rateDelta: 1000, // time window in ms
rateLimit: 5, // messages per window
auth: { user: 'you@yourdomain.com', pass: process.env.SMTP_PASS }
});Con Postfix, rallenta solo la destinazione che si lamenta, usando un transport dedicato. In master.cf:
slow unix - - n - 2 smtp
In main.cf:
transport_maps = hash:/etc/postfix/transport slow_destination_concurrency_limit = 2 slow_destination_rate_delay = 1s
E in /etc/postfix/transport, poi postmap /etc/postfix/transport e systemctl reload postfix:
example.com slow:
Distribuisci le grandi campagne nel tempo e, se il tuo IP o il tuo dominio sono nuovi, aumenta il volume per gradi (vedi riscaldare un nuovo dominio o IP). Non alternare IP o account per aggirare i limiti: i destinatari se ne accorgono e la tua reputazione ne risente.
Se è il tuo server a rispondere 421
I valori predefiniti (smtpd_client_connection_count_limit = 50 per client, limiti di frequenza disattivati) vanno bene per la maggior parte dei server. Se hai impostato limiti più severi, alzali, oppure escludi i mittenti fidati come le tue app:
smtpd_client_event_limit_exceptions = $mynetworks, 203.0.113.10
Per le app, una soluzione migliore è inviare tramite la porta submission con un pool di poche connessioni, come sopra.
Verifica che sia risolto
Osserva il log durante il prossimo invio: i messaggi rimandati devono lasciare la coda con status=sent e le nuove righe 421 devono cessare. Invia un nuovo test Delivmail per confermare che autenticazione e reputazione sono pulite, poi reinvia all'indirizzo per cui il messaggio era stato rimandato, se alla fine è rimbalzato.
Verifica che sia risolto
Una modifica DNS può richiedere da pochi minuti a qualche ora. Poi invia una nuova email di test o scansiona di nuovo il tuo dominio.
Guide correlate
- Le tue email finiscono nello spam di GmailQuando Gmail mette le tue email nello spam, la causa è quasi sempre l'autenticazione, la reputazione o il contenuto. Ecco come capire quale e risolvere.
- Le tue email finiscono nella posta indesiderata di Outlook o HotmailOutlook.com, Hotmail e Live mettono molti nuovi mittenti nella Posta indesiderata. Controlla la tua configurazione, poi usa gli strumenti gratuiti di Microsoft per i mittenti: SNDS, JMRP e il portale di rimozione.
- Errore Gmail "550 5.7.26": email non autenticataGmail ha rifiutato la tua email perché non ha potuto confermare che arriva dal tuo dominio. SPF, DKIM o DMARC manca o fallisce. Ecco come risolvere.
- Errore "550 5.7.1": messaggio rifiutato o bloccato da una policyUn bounce 5.7.1 significa che il server di destinazione ha rifiutato la tua email di proposito. Impara a leggere i messaggi di errore, trovare il vero motivo e risolverlo.
- Riscaldare un nuovo dominio o indirizzo IPUn nuovo dominio o IP non ha ancora reputazione. Inviare una grande campagna il primo giorno sembra spam. Inizia in piccolo e aumenta il volume passo dopo passo.