2mail — SMTP relay su infrastruttura belga

SMTP per Python — posta dal tuo script o dalla tua app Django che arriva

Python ha SMTP integrato: con smtplib invii un messaggio in una manciata di righe, e Django lo racchiude in un proprio livello di posta con le impostazioni EMAIL. Ciò che nessuno dei due fornisce è la recapitabilità — quella dipende dal server attraverso cui invii.

Che tu abbia uno script isolato, un'app Flask o un progetto Django: le impostazioni sono gli stessi cinque dati. Li fai puntare al tuo relay e il codice che compone i messaggi resta invariato.

Perché senza relay le cose vanno storte

La posta di Python arriva spesso dal retro: un report notturno, un'attività cron che invia fatture, uno script che avvisa quando una misura esce dai margini. Nessuno ci sta guardando — e quindi nessuno si accorge che il server ricevente le rifiuta in silenzio. Con Django si aggiunge la classica sorpresa del passaggio in produzione: in sviluppo tutto va alla console, in produzione verso provider reali che controllano davvero la reputazione.

Configurare l'SMTP in Python

1

Recupera i dati

Accedi al tuo account 2mail e recupera lì il tuo server SMTP, il nome utente e la password.

2

Inserisci in Python

In un progetto Django imposti le impostazioni EMAIL nei settings: il backend SMTP come backend di posta, l'host del relay, la porta 587, l'opzione STARTTLS attiva, nome utente e password e un indirizzo mittente predefinito sul tuo dominio. Se lavori direttamente con smtplib, ti connetti all'host sulla porta 587, chiami starttls, effettui l'accesso con nome utente e password e invii poi il messaggio. In entrambi i casi leggi i dati da variabili d'ambiente, non dal codice.

3

Autentica il dominio

Assicurati che SPF, DKIM e DMARC siano configurati correttamente per il tuo dominio, così i destinatari possono verificare che il messaggio provenga da te.

4

Prova

Invia un messaggio di prova a un indirizzo presso un grande provider e verifica che arrivi nella posta in arrivo e non nella cartella spam.

I campi richiesti da Python

Ogni piattaforma li chiama in modo leggermente diverso, ma si tratta sempre degli stessi cinque. I valori concreti sono legati al tuo account e li trovi nel tuo account 2mail — recuperali da lì, così sei certo di usare quelli giusti.

Campo Che cosa inserire
Server SMTP (host)Il nome del server dal tuo account 2mail.
PortaLa porta corrispondente alla cifratura scelta; il tuo account indica quale.
CifraturaTLS. Non inviare mai in chiaro — altrimenti le tue credenziali viaggiano leggibili sulla rete.
Nome utenteIl login SMTP del tuo account 2mail.
PasswordLa password corrispondente. Non usare mai la password della casella di posta di un collaboratore.

Quali e-mail invia Python

Una volta configurato il relay, tutte queste passano tramite 2mail — non devi configurarle una per una.

Recupero password e verifica e-mail da Django
Report ed esportazioni pianificati da attività cron
Avvisi da script di monitoraggio e di elaborazione dati
Fatture e conferme da un'applicazione web
Report di errore agli amministratori

Insidie con Python

Opzione TLS e porta devono coincidere

Django prevede due impostazioni TLS separate: una per STARTTLS e una per TLS fin dall'inizio. Attiva solo l'impostazione STARTTLS; è quella corrispondente alla porta 587. Attivarle entrambe genera un errore di configurazione; non attivarne nessuna invia le tue credenziali in chiaro, e un relay giustamente lo rifiuta.

Una connessione per serie, non per messaggio

Uno script che apre una nuova connessione SMTP per ciascuno di mille messaggi si comporta come un aggressore. Apri una connessione, invia la serie, chiudi. Django dispone di una funzione per inviare più messaggi su una sola connessione.

Errori silenziosi nelle attività in background

Un'eccezione in un'attività cron sparisce in un file di log che nessuno legge. Intercetta gli errori di invio e segnalali dove si notano — e collega i webhook di 2mail per recapito e bounce, così vedi anche ciò che va storto <em>dopo</em> la consegna.

SPF, DKIM e DMARC spiegati La recapitabilità

Un'altra piattaforma?

L'SMTP è un protocollo standard: ogni sistema che parla SMTP — un CRM, un ERP, un'applicazione proprietaria o un server — può inviare tramite 2mail con gli stessi cinque campi.

Domande frequenti sull'SMTP per Python

smtplib e Django inviano, ma non forniscono recapitabilità: quella dipende dal server attraverso cui invii. Una funzione mail locale o un server appena creato non ha autenticazione né reputazione. Un SMTP relay con record SPF, DKIM e DMARC corretti risolve la cosa.
Il backend SMTP come backend di posta, l'host del relay, la porta 587, l'opzione STARTTLS attiva, il tuo nome utente e la tua password e un indirizzo mittente predefinito sul tuo dominio. Conserva le credenziali in variabili d'ambiente, non nei settings.
Connettiti all'host sulla porta 587, richiama starttls, effettua l'accesso con nome utente e password e invia il messaggio. Per più messaggi usa la stessa connessione invece di aprirne una nuova per ciascuno.
Nel tuo account 2mail, per ogni applicazione. Sono legati all'account, quindi non li pubblichiamo sul sito. Crea preferibilmente credenziali proprie per ogni script o applicazione, così puoi revocarle a parte e seguire quel traffico separatamente.
Chiama ora
Invia un'e-mail