sviluppo-web-qa.it

Come inviare e-mail ed evitare che vengano classificate come spam?

Questa è una domanda canonica su come gestire le email inviate dal tuo server classificate erroneamente come spam. Per ulteriori informazioni potresti trovare utili queste domande simili:

A volte desidero inviare newsletter ai miei clienti. Il problema è che alcune delle e-mail vengono catturate come messaggi spam. Principalmente da Outlook al client (anche nel mio Outlook 2007).

Ora voglio sapere cosa si dovrebbe fare per creare e-mail "buone". Conosco la ricerca inversa, ecc., Ma (per esempio), che dire di un link per annullare l'iscrizione con un ID univoco? Ciò aumenta un punteggio di spam?

84
kcode

Assicurati che le tue email non assomiglino alle tipiche email di spam: non inserire solo un'immagine di grandi dimensioni; verificare che il set di caratteri sia impostato correttamente; non inserire link "Solo indirizzo IP". Scrivi la tua comunicazione come faresti per scrivere una normale e-mail. Semplifica l'annullamento dell'iscrizione o la cancellazione. Altrimenti, i tuoi utenti annulleranno l'iscrizione premendo il pulsante "spam", e ciò influenzerà la tua reputazione.

Dal punto di vista tecnico: se puoi scegliere il tuo server SMTP, assicurati che sia un server SMTP "pulito". Gli indirizzi IP dei server SMTP di spamming sono spesso inseriti nella lista nera di altri provider. Se non si conoscono in anticipo i server SMTP, è consigliabile fornire opzioni di configurazione nell'applicazione per controllare le dimensioni dei lotti e i ritardi tra i lotti. Alcuni server di posta non accettano grandi lotti di invio o attività continue.

Utilizza metodi di autenticazione e-mail, come SPF e Domain Keys per dimostrare che le tue e-mail e il tuo nome di dominio appartengono insieme. L'effetto collaterale Nice è che aiuti a prevenire lo spoofing del tuo dominio di posta elettronica. Inoltre controlla il tuo DNS inverso per assicurarti che l'indirizzo IP del tuo server di posta punti al nome di dominio che usi per inviare la posta.

Assicurati che l'indirizzo di risposta delle tue e-mail sia un indirizzo valido ed esistente. Utilizza il nome reale completo del destinatario nel campo A, non solo l'indirizzo email (ad es. "John Doe" <[email protected]>) e monitorare i tuoi account sugli abusi, come [email protected] e [email protected] .

83
splattne

Annulla automaticamente l'iscrizione ai destinatari del tuo messaggio i cui indirizzi di posta elettronica rimbalzano e stabilisce cicli di feedback sui reclami con i principali fornitori di posta e annulla automaticamente l'iscrizione dei destinatari che segnalano il tuo messaggio come spam/posta indesiderata. Ciò contribuirà notevolmente a migliorare la tua reputazione e capacità.

22
wg

Questa domanda menziona che le basi sono in atto, ma poiché stiamo indicando gli altri a questa come una domanda canonica, voglio solo essere sicuro che copriamo le nostre basi.

Questi minimi sono essenzialmente richiesti in questi giorni:

  1. Assicurati di aver configurato DNS forward e reverse correttamente. Un server di posta deve identificarsi in uno scambio HELO/EHLO, quel nome dovrebbe cercare l'IP che il server sta usando. Allo stesso modo la ricerca inversa di quell'IP dovrebbe restituire il nome.

  2. Assicurati che il tuo server stia effettivamente inviando il nome host in quella stretta di mano. Il tuo server non dovrebbe inviare un indirizzo IP.

  3. Assicurati che il tuo indirizzo IP non sia presente in nessun DNSRBL (blacklist). Se lo è, prenditi cura di te.

  4. Controlla la reputazione del tuo IP con i servizi di reputazione più popolari (SenderScore è grande in questo momento, ma potrebbe non reggere nel tempo). Questi servizi generalmente hanno linee guida per migliorare la tua reputazione, ma non sono un vero e proprio "go/no-go" come gli RBL.

  5. Non falsare le intestazioni, non mentire nelle intestazioni e assicurati di includere le intestazioni minime nei messaggi (Date e From sono obbligatori, ci dovrebbe essere un Subject, Sender, Reply-To e To/Cc/Bcc [come applicabile]). Questo è uno dei miei più grandi pet-peves con newsletter valide che voglio ricevere finendo in Junk perché falsificano un'intestazione di Outlook Express, lasciano fuori la data o qualcosa di simile.

Opzionalmente dovresti considerare di configurare SPF, DKIM e DMARC. Questi aiutano con la consegna, ma non sono richiesti (non dalla stragrande maggioranza dei server di posta elettronica).

15
Chris S

Sfortunatamente ci sono molte tecniche di filtraggio diverse e alcuni dei principali fornitori di posta non pubblicheranno ciò che usano e/o quali pesi vengono dati a vari test/filtri, quindi è difficile sapere come superare. Fondamentalmente lo spam ha spinto gli ISP e gli utenti in una situazione in cui a volte rendono difficile la trasmissione di messaggi legittimi (in particolare messaggi di massa come la newsletter). Non considero più l'e-mail come il mezzo di trasporto affidabile fino a metà rispetto a prima.

Per essere un po 'meno negativo e più utile ... Dato che stai riscontrando problemi specifici con un particolare cliente, potrebbero esserci delle cose che il programma può dirti. Non conosco specificamente Outlook poiché non lo uso da solo, ma molti filtri di posta iniettano le intestazioni nei messaggi per elencare quali filtri sono stati utilizzati, quale è stato il risultato e quale è stata la ponderazione attribuita a quel filtro. Quindi, se guardi alla fonte completa dei messaggi che sono stati spostati in cartelle spazzatura, potresti trovare utili indizi. Ad esempio, i filtri basati su SpamAssassin iniettano le intestazioni del seguente modulo:

X-Spam-Flag: YES
X-Spam-Score: 13.371
X-Spam-Level: *************
X-Spam-Status: Yes, score=13.371 tagged_above=-10 required=5.4
    tests=[BAYES_99=3.5, FB_GET_MEDS=0.803, RCVD_IN_SORBS_WEB=0.619,
    RCVD_IN_XBL=3.033, RDNS_NONE=0.1, URIBL_AB_SURBL=1.86,
    URIBL_BLACK=1.955, URIBL_JP_SURBL=1.501]

(quell'esempio è stato estratto da un messaggio di spam autentico nella mia pila di posta indesiderata)

Ciò non è definito in quanto il filtro bayesiano e altri metodi che prevedono la formazione degli utenti sono comuni - quindi ciò che i filtri passano e falliscono possono differire in modo marcato rispetto agli altri anche se il client è stato configurato in modo identico e pronto all'uso. Potrebbe essere necessario prendere in considerazione qualche altro punto vendita per le tue notizie (molte persone stanno cercando di utilizzare i protocolli di social network per questo, con vari gradi di successo).

11
David Spillett

Come altri hanno detto, vuoi evitare di "apparire" come un messaggio di spam quando invii l'e-mail, ma non puoi necessariamente dire cosa ti farà o non ti farà sembrare spam perché le tecniche variano.

Una cosa che potresti prendere in considerazione è l'invio di una e-mail di testo semplice ai tuoi clienti per ogni newsletter che in realtà contiene una breve descrizione/saluto seguito da un "clicca qui per visualizzare la nostra ultima newsletter!" Messaggio; in questo modo puoi ospitare il tuo messaggio su un server web, stai riducendo la dimensione delle e-mail (e caricarle sul tuo server di posta) e come bonus puoi controllare i log sul tuo server web per ottenere feedback su quanti clienti sono leggendo i tuoi messaggi invece di eliminarli.

9
Bart Silverstrim

Soluzione dettagliata per evitare che le e-mail vengano identificate come spam e/o non arrivino ai destinatari

Esempio di situazione: hai un server che esegue un PHP per example.com Che deve inviare e-mail E noti che le tue e-mail non vengono sempre recapitate (un grosso problema se sei il proprietario di un negozio e i clienti non ricevono le e-mail dopo un acquisto!).

Se segui tutti i seguenti passaggi, dovrebbe risolve il 99,9% dei problemi. (Inizialmente ho pensato che fosse possibile farne solo alcuni e saltare DKIM per esempio, ma alla fine tutti sono stati tenuti a risolvere tutti i problemi che ho avuto).

  1. Prima di tutto, chi sta inviando e-mail?

    Quando il tuo PHP invia e-mail, è spesso con il famoso PHP mail(...). Ma cosa fa questa funzione, sotto il cofano ? Eseguiamo una pagina test.php Contenente <?php echo ini_get('sendmail_path'); ?>. Otterrai ad esempio: /usr/sbin/sendmail -t -i. Buone notizie, ora sappiamo quale programma gestisce davvero le email!
    Ora un'informazione complicata: il nome sendmail può essere vari programmi . Anche se vedi sendmail nel passaggio precedente, potresti avere sendmail o postfix o exim o qmail, ecc. installato. Facciamo dpkg -S /usr/sbin/sendmail. La risposta è postfix: /usr/sbin/sendmail, Ok questo significa abbiamo postfix installato .

  2. Cerca nel file di registro /var/mail/www-data Per sapere quali e-mail non sono state inviate correttamente e perché. Questo potrebbe essere utile per i passaggi successivi.

  3. Come menzionato su blog di Jeff Atwood , è tempo di esaminare i record PTR inversi. (Maggiori dettagli da aggiungere qui).

  4. Aggiungi la seguente riga nel file /etc/postfix/main.cf Del file di configurazione postfix:

    inet_protocols=ipv4
    

    Quindi riavviare postfix con service restart postfix. Perché? Perché ho avuto problemi come questo quando il destinatario è Gmail:

    Il nostro sistema ha rilevato che questo messaggio 550-5.7.1 non soddisfa le linee guida di invio IPv6 relative ai record PTR e all'autenticazione 550-5.7.1. Per ulteriori informazioni, consultare 550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_error per ulteriori informazioni su 550 5.7.1.

    La soluzione più semplice era quindi passare postfix solo a ipv4, quindi questo passaggio 4 (che potrebbe non essere necessario per te?).

  5. Record DNS SPF . Per dimostrare che ti è permesso inviare e-mail da @example.com, Puoi aggiungere un record SPF nei record DNS del dominio example.com. Ho trovato da qualche parte che The DNS record type 99 (SPF) has been deprecated, quindi usiamo un TXT invece. Aggiungiamolo come TXT record DNS (vedi anche nota 1):

    v=spf1 a mx include:_spf.google.com include:sendgrid.net ~all
    

    Perché questi include? Perché il mio server non sarà l'unico a inviare e-mail da @ example.com! Ho configurato Gmail su Invia mail come [email protected] ( vedi screenshot qui ), usando il provider SMTP di fiducia Sendgrid . Se non aggiungessi questi include:, Gmail non sarebbe autorizzato a inviare e-mail da @example.com.

  6. [~ # ~] dkim [~ # ~] firma digitale. Come menzionato qui , l'obiettivo di DKIM è garantire che il contenuto della posta non sia stato manomesso durante la trasmissione. Ecco il processo di installazione in Ubuntu (guida utile qui anche):

    • apt-get install opendkim opendkim-tools

    • Crea le chiavi (puoi anche generare le chiavi e il DNS pertinente TXT con http://dkimcore.org/tools/ ):

      mkdir /etc/opendkim
      cd /etc/opendkim
      opendkim-genkey -t -s mail -d example.com
      
    • Mettiamolo in /etc/opendkim.conf:

      Syslog                 yes
      Domain                 *
      KeyFile                /etc/opendkim/mail.private
      Selector               mail
      AutoRestart            yes
      Background             yes
      Canonicalization       relaxed/relaxed
      DNSTimeout             5
      Mode                   sv
      SubDomains             no
      

      questo in /etc/default/opendkim:

      SOCKET="inet:[email protected]" # Ubuntu default - listen on loopback on port 8891
      

      e infine aggiungilo alla fine del file di configurazione postfix /etc/postfix/main.cf:

      # DKIM
      milter_default_action = accept
      milter_protocol = 2
      smtpd_milters = inet:localhost:8891
      non_smtpd_milters = inet:localhost:8891
      
    • Ora aggiungiamo la chiave pubblica (che si trova in /etc/opendkim/mail.txt) Ai record DNS del tuo dominio:

      mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=OqYHd...waPaQAX"
      

      Ecco come si presenta con il mio registrar Namelynx:

    • Ultimo passaggio per DKIM: riavviare i servizi di posta con service restart opendkim ; service restart postfix.

  7. Verifica se tutto funziona. Il metodo più semplice è inviare un'email via PHP a [email protected] ( questo strumento molto utile è reso disponibile da Port25 Solutions):

    $emailfrom = "Example <[email protected]>";
    $headers  = "MIME-Version: 1.0 \n";
    $headers .= "Content-Transfer-Encoding: 8bit \n";
    $headers .= "Content-type: text/plain; charset=utf-8\n";
    $headers .= "Reply-To: " . $emailfrom . "\n";
    $headers .= "From: " . $emailfrom . "\n";
    $headers .= "Bcc: [email protected]\n";
    mail("[email protected]", "Hello", "Hello!", $headers);
    

    Quindi vedi la risposta di questo strumento, dovrebbe apparire così:

    ==========================================================
    Summary of Results
    ==========================================================
    SPF check:          pass
    DKIM check:         pass
    SpamAssassin check: ham
    

    Anche il servizio mail-tester.com è utile.

  8. (Facoltativo) Prova postmaster.google.com. L'ho usato ma non ricordo se mi ha aiutato o meno.

  9. Se continua a non funzionare , una soluzione potrebbe essere quella di esternalizzare la posta elettronica con una soluzione professionale, per evitare giorni e notti di debug (non riuscito). Qui è un buon articolo su questo. Ecco un preventivo: "L'invio di e-mail dalla tua app può s ***. La metà delle volte, i messaggi che vengono inviati dal tuo server vengono semplicemente scaricati nella cartella junk del destinatario." che I tristemente scoperto vero, dopo settimane di modifiche.


Note aggiuntive:

(1)

-all : Fail: All mail servers not listed in the SPF record are explicitly not authorized to send mail using the sender’s domain.
~all : Soft Fail: All mail servers not listed in the SPF record are not authorized to send mail using the sender’s domain, but the owner of the domain is unwilling to make a strong assertion to that effect.
?all : Neutral: The domain controller cannot or does not want to assert whether or not all mail servers not listed in the SPF record are authorized to send mail using the sender’s domain.
+all : Pass: All mail servers are authorized to send mail on behalf of the sender’s domain.
7
Basj

Il mio business online stava avendo problemi con le email di conferma dell'ordine che andavano allo spam o che non venivano nemmeno recapitate (evitate tramite i server di posta). Queste erano semplici e-mail "ecco un riepilogo del tuo ordine" con un link al dominio del nostro sito. Abbiamo finito per acquistare alcuni account Google Apps per la mia attività. È possibile configurarne uno per fungere da server SMTP. Avere Google come mittente della posta ha risolto tutti questi problemi.

Per quanto riguarda le newsletter via e-mail, usa sicuramente un servizio che gestisce opt-in/-out per te. L'uso di persone diverse da un servizio per inviare posta in blocco probabilmente ti farà bandire.

6
Chris K

C'è una nuova guida che è stata pubblicata su Posta in arrivo e-mail

Il più completo che abbia mai visto. Una lista di controllo di 43 punti diversi che coprono ogni rubinetto di come evitare di essere contrassegnati come spam. Questo è continuamente aggiornato.

Dalla configurazione del DNS, alla configurazione dell'autenticazione, alla configurazione del monitoraggio della reputazione, alla riduzione della frequenza di rimbalzo, al test del contenuto e-mail, ecc.

Dirige la copertura della coda di tutto da ZeroBounce.NET

https://www.zerobounce.net/guide-to-improve-inbox-and-delivery.html

1
Henry