Sviluppo software

Come inviare notifiche email istantanee che non finiscano nello SPAM

Una delle funzionalità che quasi sempre è presente nei software su misura che realizziamo è l'invio di notifiche e-mail (es. e-mail con codice per confermare la registrazione, e-mail per confermare la spedizione della merce, e-mail per avvisare il venditore che l'acquirente ha comprato la merce, ecc.).

Requisito comune di queste e-mail di notifica è la necessità che vengano recapitate in modo istantaneo e non finiscano nello SPAM.

Quanto √® spiacevole quando ti registri a un servizio web e non ricevi l'e-mail di conferma subito, o magari finisce nello SPAM. Il pi√Ļ delle volte desisti e ti dimentichi del sito a cui ti volevi registrare.

Nel tempo abbiamo provato varie alternative per l'invio delle e-mail di notifica, fino a raggiungere l'ottimo.

Vediamo in sequenza i vari metodi e quali problemi comportano.

Questo articolo fa parte di una serie che illustra i vari servizi che si possono integrare in una piattaforma software realizzata su misura (es. App, e-commerce, marketplace, gestionale verticale, ecc.). Di seguito il link agli altri articoli della stessa serie.

Approccio ingenuo#

L'approccio ingenuo consiste nel mandare le email senza operare alcuna configurazione particolare e quindi ignorando tutti i metodi moderni di autenticazione, firma e cifratura delle email.

Con questo approccio la probabilità che l'e-mail inviate finiscano nello SPAM è altissimo.

In Gmail √® possibile vedere, in modo semplice, varie informazioni su un'email ricevuta. Alcune subito visibili vicino al men√Ļ a scomparsa del mittente, altre visibili se si sceglie l'opzione "Mostra originale".

Ad esempio nell'immagine seguente un'email ricevuta che è finita nello SPAM. Come si vede non c'è firma, non c'è crittografia, l'SPF non è stato configurato e non c'è autenticazione DKIM .

Usare il server di invio SMTP fornito insieme al dominio#

Quando si acquista un dominio (es. www.gardainformatica.it) è possibile acquistare oltre al dominio anche il servizio posta. Nel servizio di posta è inclusa la possibilità di mandare e-mail tramite il server SMTP del fornitore. Quindi ad esempio, se si acquista il dominio su Aruba, sarà possibile mandare le email attraverso i server SMTP di Aruba.

Le e-mail vengono correttamente recapitate, ma come il flusso di e-mail aumenta, l'invio si blocca e inizia a venir rifiutato l'invio di nuove e-mail.

Il motivo è che i gestori della posta (es. Aruba.it, Register.it, Google Apps, ecc.) non vogliono che i loro servizi vengano utilizzati da spammer o per l'invio massivo (come nel caso delle newsletter), ma solo come caselle di posta personali e di conseguenza limitano il numero di email che si possono inviare nel tempo.

In base ai nostri test si riescono ad inviare circa 60 email/ora per Aruba.it, 40 email/ora per Register.it (con account pro), e circa 80 email/ora per Google.

Naturalmente però, se sviluppiamo un software su misura che deve mandare le e-mail al verificarsi di eventi, può capitare che vengano superati i limiti previsti dal fornitore del servizio SMTP.

Inoltre per le e-mail mandate in questo modo c'è discrepanza tra il dominio di firma e il dominio del mittente. I tempi di consegna sono poi abbastanza alti. Di seguito lo screenshot di un'email ricevuta.

Usare servizi SMTP come turboSMTP, SendGrid e similari#

Tali servizi nascono per consentire l'invio di grosse quantit√† di e-mail e funzionano abbastanza bene, ma sono pensati pi√Ļ per l'invio di Newsletter che di e-mail di notifica.

La differenza è nei tempi.

Se devo inviare una newsletter a 10.000 iscritti e nel giro di due ore sono state inviate tutte le e-mail, posso ritenermi soddisfatto.

Se invece devo mandare un'email di notifica (es. notifica di avvenuta registrazione ad un servizio con il link da seguire per attivare il servizio), ho bisogno che la singola e-mail arrivi entro pochi secondi.

Il problema è che i servizi di invio massivo mettono le e-mail da inviare in code di invio, dove sono presenti sia le email delle newsletter, ma anche le e-mail delle notifiche. Essendo tutte nello stesso calderone, le e-mail delle notifiche vengono penalizzate e capita che in momenti di picco arrivino anche con 15 minuti di ritardo. Inaccettabile.

Poi c'è il discorso filtri anti-SPAM. Quand'anche non fossero un problema i tempi di consegna della posta, bisogna operare a vari livelli per evitare che i messaggi finiscano nello SPAM. Nello specifico bisogna configurare correttamente:

  1. i parametri SPF e DKIM del server SMTP
  2. la reputazione degli IP di invio
  3. i record DNS del dominio riportando i dati SPF e DKIM
  4. il contenuto (envelop, header, body html) dei messaggi di posta inviati

I servizi come turboSMTP si occupano del punto 1, e nella versione professional (a partire da 80 ‚ā¨/mese) anche del punto 2.

Il punto 3, fondamentale, è però a carico dell'utente che non sempre è in grado di configurarlo correttamente.

Il punto 4, infine, richiede competenze da programmatore.

Di seguito l'immagine di un'email ricevuta con evidenziato il problema principale: il tempo di consegna.

Configurare la propria infrastruttura SMTP di invio#

In Garda Informatica, non avendo trovato un servizio conforme alle nostre esigenze, abbiamo configurato i nostri server di invio SMTP con l'obiettivo di porre rimedio alle problematiche sopra esposte.

Di conseguenze, quando l'applicativo sviluppato è ospitato sui nostri server, possiamo inviare e-mail di notifica in modo istantaneo adottando tutti gli accorgimenti necessari affinché le email non finiscano nello SPAM, quali:

  • invio dedicato con IP pulito
  • utilizzo e configurazione dei metodi di autenticazione delle email SPF, DKIM e in casi particolari DMARC.
  • chiave DKIM per singolo dominio (le nostre email vengono firmate in base al dominio di appartenente, mentre, per esempio, le email di Aruba vengono firmate da aruba.it indipendentemente dal dominio di invio).
  • cifratura delle connessioni SMTP con protocollo TLS.
  • configurazione dei parametri DNS e configurazione del reverse DNS.
  • identificazione e filtro dei domini temporanei
  • generazione del contenuto delle e-mail (in doppia versione HTML e ALT BODY) con appositi header scelti a seconda del tipo di e-mail da inviare (es. List-Unsubscribe header per newsletter e servizi che prevedono la possibilit√† di disiscriversi).

Di seguito l'immagine di un'email inviata da un dominio configurato con la nostra infrastruttura. Come si vede Firma, SPF e DKIM valido, e tempo di consegna istantaneo.

Vuoi realizzare un software su misura che, tra le altre cose, deve inviare anche delle notifiche email?

Contattaci, oppure prova il nostro calcolatore online per farti una rapida idea di tempi e costi.

Autore: Giovanni Chiodi
Senior software developer con pi√Ļ di 10 anni di esperienza nello sviluppo di soluzioni web based, enterprise, su misura. Dal 2011 socio fondatore di Garda Informatica Snc condivide questa avventura col fratello Lorenzo.

Promemoria sui Cookie e sulla Privacy

Leggi l'informativa
closeIcona closesearchIcona searchmore vertIcona more vertmenuIcona menushareIcona sharelinkIcona linkarrow upwardIcona arrow upward