Come connettersi a un server IMAP: host, porte, SSL/TLS e OAuth (Guida 2026)

Definizione

Cos'è effettivamente una connessione al server IMAP

Una connessione server IMAP è una sessione TCP persistente tra un client di posta elettronica e un server di posta che utilizza il protocollo IMAP (Internet Message Access Protocol) per sincronizzare, recuperare e gestire messaggi di posta elettronica memorizzati in remoto, senza scaricarli o eliminarli dal server.

A differenza del POP3, che è stato progettato per scaricare i messaggi localmente e opzionalmente eliminarli dal server, IMAP è stato creato per la sincronizzazione. Ogni lettura, contrassegno, spostamento o eliminazione che si esegue localmente viene riflessa sul server, e quindi su ogni dispositivo connesso alla stessa casella di posta. È per questo che IMAP è diventato il protocollo de facto per i client di posta elettronica moderni.

A livello di rete, una connessione a un server IMAP apre un socket TCP verso un server di posta (tipicamente la porta 993 per SSL/TLS o la porta 143 per STARTTLS), esegue un handshake TLS, autentica l'utente (tramite password, password dell'app o OAuth 2.0 XOAUTH2), quindi entra in una macchina a stati: Non autenticato, Autenticato, Selezionato (all'interno di una cartella della casella di posta), oppure Esci. La maggior parte dei comandi utili - FETCH, SEARCH, STORE, COPY, EXPUNGE - funzionano solo nello stato Selected.

Per gli sviluppatori che creano integrazioni di posta elettronica, una connessione al server IMAP è il blocco di costruzione di livello più basso. La si stabilisce, la si autentica, si SELEZIONA una casella di posta, quindi si interroga o si usa la modalità IDLE per i nuovi messaggi. Questa guida copre ogni passaggio: l'host e la porta corretti per ogni provider, il metodo di autenticazione corretto nel 2026 (OAuth è sempre più obbligatorio) e un riferimento completo per la risoluzione dei problemi per le modalità di errore più comuni.

Riferimento Tecnico

Porte IMAP spiegate: 143, 993 e quando STARTTLS va bene

Ci sono esattamente due porte IMAP in uso attivo: 993 (TLS implicito, lo standard moderno) e 143 (Aggiornamento STARTTLS o testo normale, quest'ultimo non più consentito dalla maggior parte dei server). Conoscere la differenza è importante perché usare la porta sbagliata è una delle cause più comuni di errori di connessione quando si crea un'integrazione IMAP.

Eredità / Condizionale
143
IMAP con aggiornamento STARTTLS

Il client si connette in testo normale, quindi emette un STARTTLS Comando per aggiornare a TLS. La maggior parte dei server moderni richiede questo aggiornamento e rifiuta completamente le sessioni in chiaro.

Accettabile sui server IMAP aziendali e sulla posta auto-ospitata (ad es. Dovecot, Postfix)
Handshake più complesso: il tuo client deve gestire esplicitamente il flusso STARTTLS
Evitare i provider cloud, preferiscono tutti il 993
La porta 143 senza STARTTLS è bloccata da quasi tutti i moderni server di posta.

Raccomandazione 2026: usa sempre la porta 993 con SSL_CONTEXT (TLS implicito). Se stai costruendo contro un server IMAP aziendale che espone solo la porta 143, abilita STARTTLS e verifica il certificato del server. Non connetterti mai a un server IMAP in testo in chiaro in produzione: le credenziali viaggiano in chiaro e la maggior parte dei provider rifiuta tali connessioni del tutto.

Una breve nota su RFC 9051 (IMAP4rev2), pubblicato nell'agosto 2021 come successore di RFC 3501. IMAP4rev2 richiede formalmente TLS per qualsiasi connessione che trasporti credenziali, sconsiglia i meccanismi di autenticazione basati su MD5 e rimuove il ELENCO-ESTESO incompatibilità che causavano bug sottili nei client meno recenti. La maggior parte dei principali provider cloud (Gmail, Outlook) è stata di fatto compatibile con IMAP4rev2 per anni, anche prima che la RFC fosse finalizzata. Ai fini pratici, usa la porta 993 + TLS e sarai conforme alla RFC 9051 per impostazione predefinita.

Unipile - Tabella host e porta IMAP
Tabella di Riferimento

Tabella impostazioni host e porta - Gmail, Outlook, Yahoo, iCloud, Zoho, Fastmail, AOL, ProtonMail Bridge

La tabella sottostante elenca le impostazioni corrette di connessione IMAP per i provider di posta elettronica più diffusi. Tutti i valori sono stati verificati sulla documentazione ufficiale di ogni provider a maggio 2026. Utilizza questo come riferimento rapido quando configuri un client IMAP o crei un Integrazione API IMAP.

Fornitore Host IMAP Porto Crittografia OAuth 2.0 (XOAUTH2) Appunti
Logo di GmailGmail
imap.gmail.com 993 SSL/TLS
Sì (necessario per le nuove app)
Le app password funzionano, ma OAuth è fortemente raccomandato. Abilita prima IMAP nelle impostazioni di Gmail.
Logo di OutlookOutlook / Microsoft 365
outlook.office365.com 993 SSL/TLS
Sì (Basic Auth deprecato Dicembre 2026)
Basic Auth fine ciclo dicembre 2026 per tutti gli tenant. Esegui la migrazione a OAuth ora.
Sì!Yahoo Mail
imap.mail.yahoo.com 993 SSL/TLS
È richiesta una password per le app se il 2FA è abilitato. OAuth tramite il portale sviluppatori di Yahoo.
iCPosta di iCloud
imap.mail.me.com 993 SSL/TLS
No (solo password specifica dell'app)
Apple richiede una password specifica per l'app da appleid.apple.com. Nessun supporto OAuth XOAUTH2.
ZoZoho Mail
imap.zoho.com 993 SSL/TLS
OAuth tramite API di Zoho Accounts. IMAP deve essere abilitato per ogni mailbox nelle impostazioni di Zoho Mail.
FmFastmail
imap.fastmail.com 993 SSL/TLS
Sì (preferito JMAP)
Fastmail supporta nativamente JMAP (più veloce di IMAP) ma IMAP è pienamente supportato. Password per le app disponibili.
AOLPosta AOL
imap.aol.com 993 SSL/TLS
Ora parte di Yahoo Inc. È richiesta una password per le app se è abilitata l'autenticazione a due fattori. OAuth tramite il portale sviluppatori di Yahoo.
PrProtonMail Bridge
127.0.0.1 1143 STARTTLS
No (autenticazione token bridge)
ProtonMail Bridge viene eseguito in locale ed espone un server IMAP locale. Non adatto per integrazioni lato server.
GIMAP generico
your-mail-server.com 993 / 143 SSL/TLS STARTTLS
Varia (controllare configurazione server)
Dovecot, Postfix, Zimbra, Courier. Controlla la risposta CAPABILITY del tuo server per i meccanismi di autenticazione supportati.
Logo di Gmail Gmail
Host IMAP imap.gmail.com
Porto 993
Crittografia SSL/TLS
OAuth 2.0
Sì (necessario per le nuove app)
Le app password funzionano, ma OAuth è fortemente raccomandato. Abilita prima IMAP nelle impostazioni di Gmail.
Logo di Outlook Outlook / Microsoft 365
Host IMAP outlook.office365.com
Porto 993
Crittografia SSL/TLS
OAuth 2.0
Sì (Basic Auth deprecato Dicembre 2026)
Basic Auth fine ciclo dicembre 2026 per tutti gli tenant. Esegui la migrazione a OAuth ora.
Sì! Yahoo Mail
Host IMAP imap.mail.yahoo.com
Porto 993
Crittografia SSL/TLS
OAuth 2.0
È richiesta una password per le app se il 2FA è abilitato. OAuth tramite il portale sviluppatori di Yahoo.
iC Posta di iCloud
Host IMAP imap.mail.me.com
Porto 993
Crittografia SSL/TLS
OAuth 2.0
No (solo password specifica dell'app)
Apple richiede una password specifica per l'app da appleid.apple.com. Nessun supporto OAuth XOAUTH2.
Zo Zoho Mail
Host IMAP imap.zoho.com
Porto 993
Crittografia SSL/TLS
OAuth 2.0
OAuth tramite API di Zoho Accounts. IMAP deve essere abilitato per ogni mailbox nelle impostazioni di Zoho Mail.
Fm Fastmail
Host IMAP imap.fastmail.com
Porto 993
Crittografia SSL/TLS
OAuth 2.0
Sì (preferito JMAP)
Fastmail supporta nativamente JMAP (più veloce di IMAP) ma IMAP è pienamente supportato. Password per le app disponibili.
AOL Posta AOL
Host IMAP imap.aol.com
Porto 993
Crittografia SSL/TLS
OAuth 2.0
Ora parte di Yahoo Inc. È richiesta una password per le app se è abilitata l'autenticazione a due fattori. OAuth tramite il portale sviluppatori di Yahoo.
Pr ProtonMail Bridge
Host IMAP 127.0.0.1
Porto 1143
Crittografia STARTTLS
OAuth 2.0
No (autenticazione token bridge)
ProtonMail Bridge viene eseguito in locale ed espone un server IMAP locale. Non adatto per integrazioni lato server.
G IMAP generico
Host IMAP your-mail-server.com
Porto 993 / 143
Crittografia SSL/TLS STARTTLS
OAuth 2.0
Varia (controllare configurazione server)
Dovecot, Postfix, Zimbra, Courier. Controlla la risposta CAPABILITY del tuo server per i meccanismi di autenticazione supportati.

Nota su ProtonMail: l'architettura Bridge significa che le connessioni IMAP di ProtonMail sono utilizzabili solo per configurazioni desktop a utente singolo. Per integrazioni multi-account o lato server, ProtonMail è di fatto non supportato tramite IMAP standard. Per Gmail e Outlook su larga scala, consulta le nostre guide dedicate su OAuth per le API di posta elettronica e Microsoft Graph API Posta elettronica.

Esempio di codice

Passo dopo passo: apertura di una connessione raw al server IMAP

Di seguito sono riportati esempi minimali e funzionanti su come aprire una connessione a un server IMAP autenticato usando i moduli integrati di Python imaplib e Node.js con imapflow. Entrambi gli esempi si connettono a Gmail sulla porta 993 utilizzando l'autenticazione tramite password dell'app. Per OAuth XOAUTH2, consultare la sezione H2 #7 qui sotto.

Python (imaplib)
Node.js (imapflow)
imap_connect.py
import imaplib import ssl Impostazioni del server IMAP # IMAP_HOST = "imap.gmail.com" IMAP_PORTA = 993 NOME UTENTE = "you@gmail.com" PASSWORD = "tua-password-app" La password dell'app #, non quella del tuo account # Creazione del contesto SSL (verifica dei certificati) contesto = sicurezza.crea_contesto_predefinito() #: apri una connessione SSL sulla porta 993 con imaplib.IMAP4_SSL(IMAP_HOST, IMAP_PORT, contesto_ssl=contesto come imap: # Autenticazione imap.Accedi(NOME UTENTE, PASSWORD) # Seleziona la posta in arrivo (restituisce il numero di messaggi) stato, dati = imap.seleziona("Posta in arrivo") print(La casella di posta ha {data[0].decode()} messaggi") # Alla ricerca di messaggi nascosti stato, msg_ids = imap.ricerca(Nessuno, "INVISIBILE") print(Non visto: {msg_ids[0].decode()}") # Disconnessione (la connessione si chiude al termine del blocco "with")
imap_connect.mjs
// instaura imapflow import { ImapFlow } from 'imapflow'; const client = new ImapFlow({ ospite: 'imap.gmail.com', porto 993, sicuro true, // SSL/TLS sulla porta 993 auth: { Scusi. 'you@gmail.com', pass 'la-tua-password-dell-app' }, logger: falso }); await cliente.connettere(); // Blocca la casella POSTA IN ARRIVO per accesso esclusivo lascia bloccare = await cliente.getMailboxLock('POSTA IN ARRIVO'); tentare { // Recupera le ultime 5 chat (solo intestazioni) per await (lascia messaggio di cliente.fetch('1:5', busta: true })) { console.log(msg.envelope.oggetto); } } finalmente { lucchetto.rilascio(); } await cliente.disconnettersi();

L'esempio Python utilizza IMAP4_SSL - il wrapper SSL di livello superiore che gestisce automaticamente l'handshake TLS. Evita di usare IMAP4 + manuale starttls() per i cloud provider poiché aggiunge complessità senza alcun beneficio. Per Node.js, imapflow è la scelta moderna basata su Promise (la vecchia node-imap la libreria non è più mantenuta dal 2024 e non supporta XOAUTH2).

Entrambi gli esempi utilizzano password per app, che sono il tipo di credenziale più semplice per test rapidi. Per sistemi di produzione che gestiscono più utenti, avrai bisogno di OAuth 2.0, consulta la sezione XOAUTH2 di seguito. Per una soluzione completa pronta per la produzione senza gestire connessioni IMAP grezze, consulta Guida per sviluppatori API IMAP.

Salta il boilerplate IMAP. Unipile ti consente di leggere, inviare e sincronizzare Gmail, Outlook e IMAP in una singola REST API, senza necessità di gestione delle connessioni.

Salta il codice boilerplate di IMAP - Costruiscilo con Unipile
Autenticazione

Autenticazione: password, password dell'app e OAuth 2.0 (XOAUTH2)

Una connessione al server IMAP richiede l'autenticazione dopo l'handshake TLS. Esistono tre metodi di autenticazione in uso oggi, ciascuno con un diverso profilo di sicurezza, livello di complessità e compatibilità con i provider cloud nel 2026.

1
Autenticazione di base (nome utente + password)

Il meccanismo originale IMAP AUTH PLAIN / LOGIN. Inviate l'indirizzo email dell'account e la password dell'account direttamente al server IMAP. Semplice da implementare ma sempre più bloccato dai provider cloud per motivi di sicurezza.

Deprecato per il cloud
2
App Password

Un token di 16 caratteri generato dal provider (Gmail, Yahoo, iCloud) che sostituisce la password reale dell'account. Funziona con lo stesso comando IMAP LOGIN dell'autenticazione di base, ma è limitato in ambito e può essere revocato in modo indipendente. Richiesto quando è abilitato il 2FA.

Accettabile per uso personale
3
OAuth 2.0 (XOAUTH2)

L'utente autorizza la tua app tramite una schermata di consenso. La tua app riceve un token di accesso (di breve durata, tipicamente 1 ora) che codifichi in base64 e passi al comando IMAP AUTHENTICATE XOAUTH2. I token vengono aggiornati con un token di aggiornamento di lunga durata. L'unico metodo valido per app di produzione multiutente.

Richiesto per la produzione

Quando usare quale: Utilizza password per app durante lo sviluppo locale e per strumenti personali. Usa OAuth 2.0 XOAUTH2 per qualsiasi integrazione multi-utente: è l'unico metodo che scala, perché non memorizzi mai le password degli utenti e ogni token può essere revocato senza cambiare la password dell'utente. Per Gmail, Google ha progressivamente limitato l'autenticazione di base per "app meno sicure" dal 2022. Per Microsoft/Outlook, l'obsolescenza dell'autenticazione di base è prevista per dicembre 2026 in tutti gli tenant (vedi la sezione successiva).

Per un approfondimento sui flussi OAuth – inclusi lo scambio di token, la logica di refresh e gli scope – consulta la nostra guida su OAuth per le API di posta elettronica. Per la configurazione di OAuth specifica per Microsoft, vedere Microsoft Graph OAuth per Outlook.

Azione Richiesta 2026

Il problema del 2026: deprecazione di Microsoft Basic Auth (dicembre 2026)

Se la tua integrazione IMAP si connette agli account Microsoft 365 o Outlook utilizzando direttamente nome utente e password, sei in countdown. Microsoft ha annunciato la data di fine vita definitiva per l'autenticazione di base su IMAP, POP3 e SMTP per tutti gli tenant.

Microsoft Basic Auth End-of-Life: Dicembre 2026

Secondo Microsoft Learn e il Annuncio di Microsoft Community Hub, Exchange Online disabiliterà completamente l'autenticazione di base per IMAP, POP3 e SMTP nel dicembre 2026 su tutti gli inquilini, inclusi quelli con esenzioni esistenti. Qualsiasi client IMAP o integrazione lato server che utilizzi ancora l'autenticazione username/password smetterà di funzionare. Non sono disponibili ulteriori estensioni.

Azioni da intraprendere per migrare prima della scadenza

1
Controlla le tue integrazioni

Cerca nel tuo codebase le connessioni IMAP che utilizzano accesso(nomeutente, password) o AUTENTICAZIONE PLAIN. Controlla i log di accesso di Microsoft Entra ID (precedentemente Azure AD) per l'attività di autenticazione di base IMAP.

2
Registra un'app in Microsoft Entra ID

Crea una registrazione di un'app su portal.azure.com con IMAP.AccessAsUser.All (delegato) o IMAP.AccessoComeApp (applicazione) permesso. Vedi Microsoft Graph OAuth per Outlook per una guida passo passo.

3
Implementa l'acquisizione del token OAuth 2.0

Utilizza MSAL (Microsoft Authentication Library) per acquisire i token di accesso. Implementa la logica di rinnovo dei token: i token di Microsoft scadono dopo 1 ora ed è necessario un flusso di refresh token per mantenere sessioni IMAP a lunga durata senza autenticazione utente ripetuta.

4
SOSTITUISCI LOGIN CON AUTHENTICATE XOAUTH2

Sostituisci l'IMAP ACCESSO comando con AUTENTICAZIONE XOAUTH2 utilizzando una stringa token codificata in base64. Vedi l'esempio di codice completo nella sezione XOAUTH2 qui sotto.

5
Test in un tenant di staging prima della scadenza

Microsoft fornisce un modo per disabilitare Basic Auth in anticipo su base per tenant - utilizza questo per testare il tuo flusso OAuth prima del blocco forzato di dicembre 2026, in modo da non dover risolvere problemi di produzione sotto pressione.

Se gestisci connessioni IMAP per più utenti di Microsoft 365 - uno scenario comune per strumenti di CRM, ATS o automazione delle vendite - la complessità della migrazione aumenta rapidamente. Devi gestire i flussi di consenso OAuth per ogni utente, archiviare e aggiornare i token in modo sicuro e affrontare le policy di accesso condizionale che potrebbero bloccare la tua app in alcuni tenant. Questo è uno dei motivi principali per cui gli sviluppatori scelgono un'API IMAP gestita invece di mantenere collegamenti diretti da soli.

La scadenza per l'autenticazione di base di Microsoft si avvicina. Crea oggi stesso un flusso OAuth a prova di futuro con l'API unificata per email di Unipile: gestiamo per te il refresh dei token, l'autenticazione multi-tenant e XOAUTH2.

Costruisci un flusso OAuth a prova di futuro
Blocco di codice Unipile - XOAUTH2
Codice OAuth 2.0

Collegamento tramite OAuth XOAUTH2

XOAUTH2 è il meccanismo SASL che consente di autenticare una connessione al server IMAP utilizzando un token di accesso OAuth 2.0 anziché una password. Il token viene ottenuto tramite il flusso standard di codice di autorizzazione OAuth (o credenziali client per account di servizio), codificato in base64 in un formato specifico e passato al AUTENTICAZIONE XOAUTH2 Comando IMAP.

Logo di GmailGmail (Google)
Logo di OutlookMicrosoft 365
gmail_xoauth2.py
import imaplib, base64, json from google.oauth2.credenziali import Credenziali from google.auth.transport.requests import Richiesta # Carica le credenziali OAuth ottenute in precedenza # (dal flusso google-auth-oauthlib) crediti = Credenziali( gettone=TOKEN_DI_ACCESSO, token_di_aggiornamento=REFRESH_TOKEN, uri_del_token="https://oauth2.googleapis.com/token", ID cliente=CLIENT_ID, segreto del cliente=SEGRETO_CLIENTE, ambiti=["https://mail.google.com/"] ) # Aggiorna il token se è scaduto se creds.scadute: credenziali.ricaricare(Richiesta()) # Crea stringa XOAUTH2: "user={email}\x01auth=Bearer {token}\x01\x01"" indirizzo email utente = "user@gmail.com" auth_string = f"utente={user_email}\x01auth=Bearer {creds.token}\x01\x01" auth_b64 = base64.b64encode(stringa_auth.codificare()).decode() #: apri una connessione IMAP ed esegui l'autenticazione con imaplib.IMAP4_SSL("imap.gmail.com", 993) come imap: imap.autenticare("XOAUTH2", lambda _: auth_b64) imap.seleziona("Posta in arrivo") print(""Connesso tramite XOAUTH2"")
outlook_xoauth2.py
import imaplib, base64 from msal import ApplicazioneClientaRiservata # Acquisizione del token tramite MSAL (flusso con credenziali client per account di servizio) # Per l'accesso delegato dall'utente, utilizzare invece il flusso con codice di autenticazione app = ApplicazioneClientaRiservata( ID cliente=CLIENT_ID, autorità=https://login.microsoftonline.com/{TENANT_ID}", credenziali_del_client=SEGRETO_CLIENT ) risultato = app.acquisisci_token_per_client( ambiti=["https://outlook.office365.com/.default"] ) token_accesso = risultato["token_di_accesso"] # Crea stringa XOAUTH2 indirizzo email utente = "user@company.com" auth_string = f"user={user_email}\x01auth=Bearer {access_token}\x01\x01" auth_b64 = base64.b64encode(stringa_auth.codificare()).decode() #: Connettiti a Outlook tramite IMAP con imaplib.IMAP4_SSL("outlook.office365.com", 993) come imap: imap.autenticare("XOAUTH2", lambda _: auth_b64) imap.seleziona("Posta in arrivo") print("Connesso tramite XOAUTH2 a Outlook")

Differenze chiave tra Gmail e Microsoft XOAUTH2: Gmail richiede il https://mail.google.com/ ambito (accesso completo a Gmail). Microsoft richiede IMAP.AccessAsUser.All (delegato) o IMAP.AccessoComeApp (applicazione). Il formato della stringa XOAUTH2 in base64 è identico per entrambi i provider: email=email\x01auth=Bearer {token}\x01\x01.

Un dettaglio implementativo cruciale: i token scadono dopo 3600 secondi. Una sessione IMAP IDLE di lunga durata (vedi la sezione successiva) riceverà un errore di autenticazione quando il token scade a metà sessione. È necessario gestire questo AUTENTICAZIONE FALLITA errore, aggiornare il token utilizzando il token di aggiornamento, quindi ristabilire la connessione IMAP. Questo ciclo di tentativi non è banale ed è una delle ragioni principali per cui i team scelgono un'API gestita come Guida API email unificata invece delle connessioni IMAP grezze.

Per una guida completa alla configurazione di OAuth per Microsoft, comprese le considerazioni sulle policy di accesso condizionale, consulta la nostra Microsoft Graph OAuth per Outlook guida.

OAuth XOAUTH2 in 10 righe. XOAUTH2 è un meccanismo di autenticazione basato su token per i servizi che utilizzano OAuth 2.0. Permette di autenticarsi a un server di posta elettronica (come Gmail, Office 365) senza fornire la password dell'utente. Invece della password, viene utilizzato un token di accesso OAuth 2.0. Il client ottiene questo token tramite un flusso OAuth 2.0 (ad esempio, Authorization Code Grant). Il client invia il token di accesso al server di posta elettronica nell'header di autenticazione. La sintassi tipica nell'header `Authorization` è: `Authorization: XOAUTH2 `. La stringa codificata contiene l'email dell'utente, il tipo di autenticazione (XOAUTH2) e il token di accesso. Questo aumenta la sicurezza poiché il token può avere una scadenza e revocabile. È un metodo moderno e consigliato per l'accesso programmatico alle caselle di posta. Unipile gestisce automaticamente l'acquisizione, il refresh e la riautenticazione IMAP dei token. Tu ti concentri sulla lettura delle email, non sulla gestione della connessione.

Ecco come creare OAuth XOAUTH2 in 10 righe con Unipile: 1. `const token = await page.evaluate(() => {` 2. ` const credentials = acquireUnipileAuthCredentials();` 3. ` return credentials.accessToken;` 4. `});` 5. `const oauth2 = {` 6. ` xoauth2: {` 7. ` user: 'your_email@example.com',` 8. ` accessToken: token` 9. ` }` 10. `};`
Sincronizzazione in tempo reale

IDLE, polling e notifiche push: mantenere viva la connessione IMAP

Una volta stabilita una connessione autenticata al server IMAP, la sfida successiva è rilevare nuovi messaggi in modo efficiente senza sovraccaricare il server con richieste continue. Esistono tre schemi attualmente in uso, ognuno con latenza, complessità e requisiti infrastrutturali diversi.

Metodo Come funziona Latenza Infrastrutture Il migliore per Valutazione
IMAP IDLE (RFC 2177) Il client invia il comando IDLE; il server invia notifiche EXISTS/RECENT sulla connessione TCP aperta quando arriva una nuova email. Il client deve inviare DONE + reinviare IDLE ogni 29 minuti (timeout del server). ~1-5 secondi 1 connessione TCP persistente per casella di posta. Richiede un thread dedicato o un ciclo asincrono. Strumenti per utente singolo, client desktop, monitoraggio a bassa latenza Bene
Sondaggio (NOOP / CHECK) Il client si riconnette periodicamente, invia SELECT + SEARCH UNSEEN per cercare nuovi messaggi, quindi si disconnette. Semplice e stateless. Uguale all'intervallo di polling (tipicamente 1-15 minuti) Senza stato. Funziona dietro NAT/firewall. Nessuna connessione persistente. Elaborazione batch, latenza elevata accettabile, ambienti in cui le connessioni persistenti sono bloccate Accettabile
Provider push (Gmail Pub/Sub, webhook di MS Graph) Il provider invia una notifica HTTP al tuo endpoint webhook quando arriva una nuova e-mail. Nessuna connessione IMAP necessaria a riposo. Gmail utilizza Google Cloud Pub/Sub; Microsoft utilizza le notifiche di modifica di MS Graph. Quasi in tempo reale(tipicamente inferiore a 1 secondo) Richiede un endpoint HTTPS pubblico e una sottoscrizione Pub/Sub. Nessuna connessione IMAP persistente a riposo. Sistemi di produzione multi-account su larga scala, architetture serverless Il migliore su larga scala

IDLE è la scelta giusta per integrazioni semplici dove si controlla un piccolo numero di account. I principali intoppi: è necessario riconnettersi prima del timeout di inattività di 29 minuti (Gmail lo applica rigorosamente) e sono necessarie connessioni IMAP separate per ogni casella di posta, il che diventa costoso con centinaia o migliaia di account.

Notifiche push del provider sono l'architettura corretta per sistemi multiaccount in produzione. L'integrazione Pub/Sub di Gmail e i webhook di sottoscrizione di Microsoft Graph offrono entrambi notifiche quasi in tempo reale senza richiedere una connessione IMAP persistente per ogni account. Il compromesso: è comunque necessario aprire una connessione IMAP per recuperare il corpo del messaggio effettivo quando si viene notificati, il che significa che il codice della connessione IMAP è ancora necessario, solo che non viene mantenuto aperto continuamente. Per leggere messaggi di posta elettronica tramite API, consultare la nostra guida su leggere email tramite API e invio di email tramite API.

Unipile - Matrice di risoluzione dei problemi IMAP
Risoluzione dei problemi

Matrice di risoluzione dei problemi: timeout, errori di handshake, errori di autenticazione, limiti di velocità

Di seguito è riportato un riferimento strutturato per gli errori di connessione più comuni del server IMAP. Abbina il sintomo (messaggio di errore o comportamento osservabile) alla causa probabile e alla correzione consigliata.

Sintomo / Errore Categoria Causa probabile Risolvi
Connessione rifiutata sulla porta 993 Connessione Host sbagliato, IMAP disabilitato nelle impostazioni del provider o firewall che blocca il traffico in uscita sulla porta 993 Verifica l'host dalla tabella sopra. Abilita IMAP nelle impostazioni del provider (Gmail: Impostazioni > Inoltro e POP/IMAP). Controlla firewall/proxy per TCP 993 in uscita.
Timeout nella negoziazione SSL / CERTIFICATE_VERIFY_FAILED TLS Certificato scaduto o autofirmato, bundle CA obsoleto, porta errata (143 invece di 993) Utilizzo ssl.create_default_context() (Python) - non passare ssl._create_unverified_context() in produzione. Aggiorna il tuo pacchetto di CA (pip install certifi). Conferma che ti stai connettendo alla porta 993.
AUTENTICAZIONEFALLITA / [AUTENTICAZIONEFALLITA] Credenziali non valide Autorizzazione Password errata, password dell'app non generata, 2FA abilitato ma password dell'app non utilizzata, Basic Auth bloccato dal provider Genera una password specifica per l'app dalle impostazioni di sicurezza del provider. Se utilizzi Gmail, assicurati che "Accesso ad app meno sicure" non sia il metodo utilizzato: usa la password per le app o OAuth. Per Microsoft, verifica se l'autenticazione di base è disabilitata per il tenant.
AUTENTICAZIONE XOAUTH2 - token_non_valido OAuth Token di accesso scaduto (i token durano 3600s), stringa XOAUTH2 base64 malformata, ambito errato Aggiornare il token di accesso prima di connettersi. Verificare il formato della stringa XOAUTH2: email=email\x01auth=Bearer {token}\x01\x01. Verifica ambito: Gmail necessita https://mail.google.com/; Outlook necessita IMAP.AccessAsUser.All.
imaplib.error: comando AUTHENTICATE illegale nello stato AUTH Stato Tentativo di autenticazione quando si è già in stato autenticato, o dopo un tentativo di autenticazione fallito senza reimpostare Chiudere e riaprire la connessione IMAP prima di ritentare l'autenticazione. Non ritentare mai l'autenticazione sulla stessa connessione dopo un errore.
La connessione IMAP cade dopo 29 minuti di IDLE INATTIVO Timeout IDLE imposto dal server (predefinito: 30 minuti per RFC 2177). Gmail imposta 29 minuti. Problema FATTO tra i 25 e i 27 minuti, quindi immediatamente riemettere INATTIVO. Usa un thread in background o un'attività asincrona con un timer di heartbeat di 25 minuti.
[FUORI QUOTA] o Troppe connessioni simultanee Limite di utilizzo Hai superato il limite di connessione imposto dal provider. Gmail consente 15 connessioni IMAP simultanee per account; Outlook varia a seconda del piano. Usa il connection pooling. Per Gmail: max 15 connessioni simultanee per account. Chiudi esplicitamente le connessioni inattive (ESCIanziché abbandonare la connessione TCP. Implementa il ritardo esponenziale sugli errori di connessione.
NO [ALLARME] Per favore, effettua l'accesso tramite il tuo browser web Autorizzazione Sfida di sicurezza di Google attivata (schema di accesso insolito, nuovo IP, richiesta captcha) Accedi tramite browser dalla stessa rete per risolvere la sfida di sicurezza. Considera il passaggio a OAuth: l'accesso con password dell'app da IP sconosciuti attiva queste sfide più spesso di OAuth.
Arrivederci Logout Automatico; inattivo per troppo tempo Connessione Connessione IMAP nello stato Autenticato (casella di posta non selezionata) è rimasta inattiva troppo a lungo Dopo l'autenticazione, SELEZIONA immediatamente una casella di posta o emetti IDLE. Implementa la logica di riconnessione quando ricevi BYE.
FETCH restituisce corpo vuoto / parti nulle Protocollo Messaggio cancellato tra SEARCH e FETCH, o mancata corrispondenza UID dopo nuova scansione della cartella Sempre UID recupera (senza numeri di sequenza) per operazioni in più fasi. Gestisci Nessuno gestire i valori di ritorno di FETCH in modo grazioso. Ristampare SEARCH dopo una riconnessione per ottenere UID freschi.
Connessione rifiutata sulla porta 993 Connessione
Causa probabile Host errato, IMAP disabilitato nelle impostazioni del provider o firewall che blocca la porta in uscita 993.
Risolvi Verifica l'host dalla tabella sopra. Abilita IMAP nelle impostazioni del provider (Gmail: Impostazioni > Inoltro e POP/IMAP). Controlla firewall/proxy per TCP 993 in uscita.
Timeout nella negoziazione SSL / CERTIFICATE_VERIFY_FAILED TLS
Causa probabile Certificato scaduto o autofirmato, pacchetto CA obsoleto, porta errata (143 invece di 993).
Risolvi Utilizzo ssl.create_default_context() (Python) - non passare ssl._create_unverified_context() in produzione. Aggiorna il tuo pacchetto di CA (pip install certifi). Conferma che ti stai connettendo alla porta 993.
AUTENTICAZIONE FALLITA / Credenziali non valide Autorizzazione
Causa probabile Password errata, password dell'app non generata, 2FA abilitata ma password dell'app non utilizzata, autenticazione di base bloccata dal provider.
Risolvi Genera una password specifica per l'app dalle impostazioni di sicurezza del provider. Se utilizzi Gmail, assicurati che "Accesso ad app meno sicure" non sia il metodo utilizzato: usa la password per le app o OAuth. Per Microsoft, verifica se l'autenticazione di base è disabilitata per il tenant.
AUTENTICAZIONE XOAUTH2 - token_non_valido OAuth
Causa probabile Token di accesso scaduto (i token durano 3600s), stringa XOAUTH2 base64 malformata, ambito errato.
Risolvi Aggiornare il token di accesso prima di connettersi. Verificare il formato della stringa XOAUTH2: email=email\x01auth=Bearer {token}\x01\x01. Verifica ambito: Gmail necessita https://mail.google.com/; Outlook necessita IMAP.AccessAsUser.All.
imaplib.error: AUTHENTICATE illegale nello stato AUTH Stato
Causa probabile Tentativo di autenticazione quando si è già nello stato Authenticated, o dopo un tentativo di autenticazione fallito senza reimpostazione.
Risolvi Chiudere e riaprire la connessione IMAP prima di ritentare l'autenticazione. Non ritentare mai l'autenticazione sulla stessa connessione dopo un errore.
La connessione IMAP cade dopo 29 minuti di IDLE INATTIVO
Causa probabile Timeout IDLE imposto dal server (predefinito: 30 minuti per RFC 2177). Gmail imposta 29 minuti.
Risolvi Problema FATTO tra i 25 e i 27 minuti, quindi immediatamente riemettere INATTIVO. Usa un thread in background o un'attività asincrona con un timer di heartbeat di 25 minuti.
[FUORI QUOTA] o Troppe connessioni simultanee Limite di utilizzo
Causa probabile Hai superato il limite di connessione imposto dal provider. Gmail consente 15 connessioni IMAP simultanee per account; Outlook varia a seconda del piano.
Risolvi Usa il connection pooling. Per Gmail: max 15 connessioni simultanee per account. Chiudi esplicitamente le connessioni inattive (ESCIanziché abbandonare la connessione TCP. Implementa il ritardo esponenziale sugli errori di connessione.
NO [ALLARME] Per favore, effettua l'accesso tramite il tuo browser web Autorizzazione
Causa probabile Sfida di sicurezza di Google attivata (schema di accesso insolito, nuovo IP, richiesta captcha).
Risolvi Accedi tramite browser dalla stessa rete per risolvere la sfida di sicurezza. Considera il passaggio a OAuth: l'accesso con password dell'app da IP sconosciuti attiva queste sfide più spesso di OAuth.
Arrivederci Logout Automatico; inattivo per troppo tempo Connessione
Causa probabile Connessione IMAP nello stato Autenticato (casella di posta non selezionata) è rimasta inattiva troppo a lungo.
Risolvi Dopo l'autenticazione, SELEZIONA immediatamente una casella di posta o emetti IDLE. Implementa la logica di riconnessione quando ricevi BYE.
FETCH restituisce corpo vuoto / parti nulle Protocollo
Causa probabile Messaggio cancellato tra SEARCH e FETCH, o discrepanza UID dopo la rilettura della cartella.
Risolvi Sempre UID recupera (senza numeri di sequenza) per operazioni in più fasi. Gestisci Nessuno gestire i valori di ritorno di FETCH in modo grazioso. Ristampare SEARCH dopo una riconnessione per ottenere UID freschi.

Smetti di correggere gli errori IMAP. Unipile espone oggetti email puliti tramite REST - nessuna state machine IMAP, nessuna logica di refresh dei token, nessun pooling di connessioni da gestire.

Smetti di fare il debug dell'IMAP - Inizia a costruire
Produzione Reale

Perché l'IMAP a livello di produzione su larga scala è più difficile di quanto sembri

Aprire una singola connessione al server IMAP a una casella di posta Gmail richiede 15 righe di Python. Scalare questo a centinaia o migliaia di utenti in un prodotto SaaS di produzione è un problema di ingegneria fondamentalmente diverso. Di seguito è riportata un'analisi onesta di dove le connessioni IMAP grezze creano complessità non ovvie.

Gestione del ciclo di vita dei token OAuth

I token di accesso scadono ogni 3600 secondi. Per 1.000 account collegati, è necessaria un'attività in background che aggiorni proattivamente i token prima della scadenza, gestisca la rotazione dei token di aggiornamento (Google li ruota in determinate condizioni) e gestisca il caso in cui un utente revochi l'accesso, cosa che si scopre solo al prossimo utilizzo del token.

Stato connessione IMAP multi-account

Ogni sessione IMAP attiva conserva lo stato: casella di posta selezionata corrente, ultimo UID visto, timer IDLE. Se il tuo server si riavvia, perdi tutto questo stato e devi risincronizzare da zero, potenzialmente recuperando migliaia di messaggi che hai già elaborato. Hai bisogno di un archivio di stato persistente per account.

Errore, riprova ed esponenziale backoff

Iscriviti alle notifiche per modifiche ai dati.

Archiviazione delle credenziali e crittografia a riposo

I token di aggiornamento OAuth sono credenziali di lunga durata che garantiscono l'accesso completo alle e-mail. Devono essere crittografati a riposo utilizzando una chiave supportata da KMS, controllati a livello di infrastruttura e ruotati in caso di qualsiasi indicazione di una violazione. Questa è una superficie di attacco di sicurezza significativa che richiede un'infrastruttura di gestione delle chiavi adeguata.

Limitazione del traffico e quote per account

Gmail limita le connessioni IMAP simultanee a 15 per account. Se la tua applicazione apre più connessioni del consentito, riceverà errori OVERQUOTA. Allo stesso tempo, i provider impongono anche limiti di banda sui dati totali trasferiti. Hai bisogno di connection pooling, request throttling e tracciamento del rate per account.

Casi limite specifici del provider

Etichette Gmail vs. cartelle IMAP, la denominazione non standard delle cartelle di Outlook per Inviati/Eliminati, i server IMAP che restituiscono risposte CAPABILITY non corrispondenti a quanto supportano realmente e i server che interrompono silenziosamente le connessioni durante le operazioni FETCH su allegati di grandi dimensioni. Ogni provider ha un insieme unico di stranezze che emergono solo in produzione.

Questo non è un argomento contro la creazione di un'integrazione IMAP personalizzata: per uno strumento a fornitore singolo e utente singolo, l'IMAP grezzo è perfettamente ragionevole. Ma per qualsiasi prodotto che necessiti di leggere e sincronizzare email da più provider e più account utente, il costo operativo di mantenimento di un livello IMAP personalizzato supera in genere il costo dell'utilizzo di un'API di posta elettronica dedicata. Il Guida API email unificata descrive in dettaglio i compromessi architettonici.

Sincronizzazione delle email di produzione senza l'overhead dell'IMAP. Unipile gestisce il connection pooling, il refresh dei token, il retry degli errori e la normalizzazione multi-provider: tu devi solo chiamare l'API.

Costruire su larga scala senza l'overhead di IMAP
Unipile - IMAP BOFU (Leggero)
Guida rapida di 5 minuti

Costruire un'integrazione IMAP senza gestire la connessione: Unipile

Se hai letto fin qui, hai un quadro chiaro di cosa ci vuole per mantenere le connessioni IMAP grezze in produzione: cicli di refresh dei token OAuth, gestione dello stato per account, pooling delle connessioni, logica di retry e peculiarità specifiche del provider per Gmail, Outlook e server IMAP. Unipile astrae questo intero livello e ti fornisce un'unica API REST per leggere, inviare e sincronizzare le email su tutti e tre, con una guida rapida di 5 minuti e meno di 10 righe di codice per operazione.

OAuth gestito per te

Unipile gestisce l'intero flusso OAuth per Gmail e Microsoft 365: acquisizione, refresh e rotazione dei token. Non tocchi mai direttamente un token di refresh.

Gmail, Outlook e IMAP unificati

Un'API, uno schema di risposta. Leggi le email da una casella di posta Gmail e da un server aziendale IMAP con la stessa chiamata GET /emails. Nessun parsing specifico del provider.

Webhook in tempo reale, nessun ciclo di attesa

Ricevi notifiche HTTP quando arrivano nuove email. Nessuna connessione IMAP persistente da gestire, nessun timeout IDLE di 29 minuti da gestire, nessun thread dedicato per account.

Multi-account dal primo giorno

Collega account utente tramite il flusso OAuth ospitato di Unipile. Ogni account collegato ottiene il proprio account_id. Scala da 1 a 10.000 account collegati senza modificare il codice della tua integrazione.

SOC 2 Tipo II + CASA Livello 2

Credenziali crittografate a riposo con chiavi supportate da KMS. Unipile è certificata SOC 2 Type II e valutata CASA Tier 2. Nessuna password IMAP o token OAuth archiviata nel tuo database.

unipile_quickstart.py
import richieste BASE_URL = "https://api7.unipile.com:13047/api/v1" INTÈSTAZIONI = {"X-API-KEY": "la-tua-chiave-api-unipile"} # Fase 1: Elenca tutti gli account collegati conti = richieste.ottenere( f"{BASE_URL}/conti", intestazioni=INTÈSTAZIONI ).json() account_id = conti["articoli"][0]["id"] # Fase 2: Leggi le e-mail nella posta in arrivo e-mail = richieste.ottenere( f"{BASE_URL}/emails", intestazioni=INTESTAZIONI, parametri={"account_id": id_account, "limite": 10} ).json() per e-mail in email"articoli"]: print(email["soggetto", email["dal_partecipante"]) # Nessuna connessione IMAP, nessun aggiornamento del token, #: nessun contesto SSL, nessuna macchina a stati.
Funziona con Gmail, Outlook e IMAP: stesso codice
Funziona con: Gmail Prospettiva IMAP
SOC 2 Tipo II CASA Livello 2 Credenziali crittografate a riposo Conformità al GDPR
FAQ

Domande frequenti

Domande comuni sulla connessione al server IMAP, porte, autenticazione e migrazione OAuth.

1
Che cos'è una connessione a un server IMAP?

Una connessione server IMAP è una sessione TCP persistente tra un client di posta elettronica e un server di posta che utilizza il protocollo Internet Message Access Protocol per sincronizzare, recuperare e gestire messaggi di posta elettronica memorizzati sul server, senza scaricarli o eliminarli localmente. A differenza di POP3, IMAP mantiene i messaggi sul server e sincronizza lo stato (letto, contrassegnato, spostato) su tutti i dispositivi connessi. Per gli sviluppatori, è il protocollo fondamentale per la creazione di integrazioni di posta elettronica che funzionano su Gmail, Outlook e qualsiasi standard. API IMAP.

2
Quale porta devo usare per IMAP: 143 o 993?

Utilizzo porta 993 per IMAP su SSL/TLS (TLS implicito). Questo è lo standard moderno ed è richiesto da tutti i principali provider cloud, inclusi Gmail e Outlook. La porta 143 è per gli aggiornamenti STARTTLS ed è appropriata solo per server di posta auto-ospitati. Non connettersi mai a un server di posta cloud sulla porta 143 in produzione, la maggior parte ora rifiuta del tutto tali connessioni. In caso di dubbi, scegli sempre la porta 993 con ssl=Vero.

3
Ho bisogno di SSL/TLS per IMAP?

Sì, senza eccezioni. SSL/TLS è obbligatorio per qualsiasi connessione al server IMAP che trasmette credenziali. I moderni server di posta rifiutano del tutto le connessioni in chiaro. RFC 9051 (IMAP4rev2) richiede formalmente TLS per tutte le sessioni autenticate. Utilizzare sempre porta 993 con TLS implicito per i provider cloud. Se ci si connette a un server self-hosted sulla porta 143, è necessario eseguire l'aggiornamento a TLS utilizzando il comando STARTTLS e verificare il certificato del server - non utilizzare mai ssl._create_unverified_context() in produzione.

4
L'indirizzo del server IMAP di Gmail è imap.gmail.com.

L'indirizzo del server IMAP per Gmail è imap.gmail.com on porta 993 con SSL/TLS. Prima di connetterti, devi abilitare l'accesso IMAP nelle Impostazioni di Gmail alla voce "Inoltro e POP/IMAP". L'autenticazione richiede una password per le app (se è abilitata l'autenticazione a due fattori) o OAuth 2.0 XOAUTH2 con l'ambito https://mail.google.com/. Google ha limitato l'autenticazione di base per le nuove app e raccomanda vivamente OAuth per qualsiasi accesso programmatico IMAP.

5
Qual è l'indirizzo del server IMAP per Outlook e Microsoft 365?

L'indirizzo del server IMAP sia per gli account Outlook.com personali che per gli account aziendali Microsoft 365 è outlook.office365.com on porta 993 con SSL/TLS. Si noti che Microsoft sta terminando il supporto per l'autenticazione di base (nome utente/password) per IMAP in Dicembre 2026. Tutte le integrazioni devono migrare a OAuth 2.0 XOAUTH2 prima di tale scadenza. Vedi il nostro Microsoft Graph OAuth per Outlook Guida ai passaggi per la migrazione.

6
Hai bisogno di una password per le app per connetterti a IMAP?

È necessario un codice di accesso specifico per l'app se l'account dispone dell'autenticazione a due fattori abilitata e si utilizza l'autenticazione di base per IMAP. I codici di accesso per le app sono token di 16 caratteri generati dalle impostazioni di sicurezza del provider (pagina di sicurezza dell'account Google per Gmail, ID Apple per iCloud) che sostituiscono la password reale senza concedere l'accesso completo all'account. Per le applicazioni multiutente di produzione, OAuth 2.0 è fortemente preferito password dell'app - è più sicuro, non richiede la memorizzazione di alcuna credenziale utente nella tua applicazione ed è l'unico metodo che rimarrà valido dopo la disattivazione dell'autenticazione di base di Microsoft a dicembre 2026.

7
L'autenticazione di base IMAP è deprecata nel 2026?

Sì, per i servizi Microsoft. Microsoft ha confermato la fine definitiva del supporto per l'autenticazione di base su IMAP, POP3 e SMTP in Exchange Online in Dicembre 2026, interessando tutti gli inquilini, inclusi quelli con esenzioni esistenti. Qualsiasi integrazione che utilizzi l'autenticazione nome utente/password contro Outlook o Microsoft 365 IMAP smetterà di funzionare dopo tale data. Google ha già limitato l'accesso all'autenticazione di base (Basic Auth) per Gmail e richiede password per le app o OAuth per qualsiasi accesso programmatico dal 2022. Se la tua integrazione IMAP si collega ad account Microsoft, devi migrare a OAuth 2.0 XOAUTH2 entro dicembre 2026.

8
Come mi connetto a IMAP con OAuth 2.0?

Per connettersi a un server IMAP con OAuth 2.0, si utilizza il meccanismo SASL XOAUTH2. Dopo aver ottenuto un token di accesso tramite il flusso standard di codice di autorizzazione OAuth, codificare la stringa email=email\x01auth=Bearer {token}\x01\x01 come base64, quindi passalo a AUTENTICAZIONE XOAUTH2 IMAP comando. Per Gmail, lo scope richiesto è https://mail.google.com/. Per Microsoft 365, utilizza MSAL per acquisire un token con il IMAP.AccessAsUser.All Le token di accesso scadono dopo 3600 secondi e devono essere rinnovate prima di riconnettersi - implementare un controllo di rinnovo della token prima di ogni nuova sessione IMAP. Vedere i campioni di codice completi nella sezione XOAUTH2 sopra.

Hai ancora domande sull'integrazione IMAP? Il nostro team può aiutarti a navigare le peculiarità dei fornitori, la migrazione OAuth e l'architettura multi-account.

Parlare con un esperto
it_ITIT