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


83

Questa è una domanda canonica su come gestire la posta elettronica inviata dal tuo server che viene classificata 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?


Un elenco di controllo dettagliato e linee guida per la risoluzione dei problemi sono disponibili in una buona risposta a una domanda simile su superuser.com .
MattBianco,

Risposte:


83

Assicurati che le tue e-mail non assomiglino alle tipiche e-mail di spam: non inserire solo un'immagine di grandi dimensioni; verificare che il set di caratteri sia impostato correttamente; non inserire collegamenti "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 batch di invio di grandi dimensioni o attività continue.

Utilizzare metodi di autenticazione e-mail, come SPF e chiavi di dominio per dimostrare che le e-mail e il nome del dominio appartengono insieme. Il piacevole effetto collaterale è che aiuti a prevenire lo spoofing del tuo dominio di posta elettronica. Controlla anche 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. Usa il nome reale completo del destinatario nel campo A, non solo l'indirizzo e-mail (ad es. "John Doe" <john.doe@example.com>) E monitora i tuoi account di abuso, come abuse@example.com e postmaster@example.com .


E usa versioni multipart / alternative della tua email html che contiene solo testo. Significa che lo scanner antispam avrà cose più utili da seguire durante la classificazione.
Matt,

22

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à.


4
Questo è molto interessante. Non sapevo nulla di questi loop di feedback. Tutti i fornitori offrono un tale programma?
kcode

1
Non tutti i fornitori, no. Ma la maggior parte dei principali, tra cui Yahoo, AOL e altri. Tutti i cicli di feedback sui reclami di cui sono a conoscenza richiedono che i messaggi vengano inviati da un dominio autenticato da DKIM o DomainKeys. Credo che alcuni richiedano anche SPF, ma meno comunemente.

15

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 intestazioni falsi, non mentono nelle intestazioni, e assicurarsi che si sta comprese le intestazioni minimi nei messaggi ( Datee Fromsono necessari, ci dovrebbe essere una Subject, Sender, Reply-To, e To/ Cc/ Bcc[a seconda del caso]). 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).


11

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 tua newsletter). Non considero più l'e-mail come il mezzo di trasporto affidabile fino a metà rispetto a una volta.

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 perché non lo uso da nessuna parte, 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).


9

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 in realtà leggendo i tuoi messaggi invece di eliminarli.


Hmm. Non ho mai visto uno spammer usare quella tattica prima ...
Ernie

Generalmente un testo semplice con uno o due link legittimi (non molto cosparso generosamente) tende a passare ... altrimenti non posso inviare tramite e-mail i collegamenti a me stesso o ad altre persone senza che vengano contrassegnati come spam. È come dire che non hai mai visto gli spammer inviare messaggi istantanei con "parolacce" per invogliare le persone a rispondere. Anche il traffico legittimo lo fa. La chiave non deve essere "troppo spammy" ... un nome utente come Bevans probabilmente non è così sospetto come "hottienakedchick69", anche se il contenuto è lo stesso, capisci cosa intendo?
Bart Silverstrim,

7

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

Esempio di situazione: si dispone di un server che esegue un sito Web PHP per example.comcui è necessario inviare e-mail . E noti che le tue e-mail non vengono sempre recapitate. (Grande problema se sei il proprietario di un negozio e i clienti non ricevono le e-mail dopo un acquisto!).

Se segui tutti i passaggi seguenti, dovrebbe risolvere 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 codice PHP invia e-mail, è spesso con la famosa funzione PHP mail(...). Ma cosa fa questa funzione, sotto il cofano? Eseguiamo una test.phppagina contenente <?php echo ini_get('sendmail_path'); ?>. Otterrete ad esempio: /usr/sbin/sendmail -t -i. Buone notizie, ora sappiamo quale programma gestisce davvero le e-mail!
    Ora un'informazione complicata: il nome sendmailpuò essere di vari programmi . Anche se vedi sendmailnel passaggio precedente, potresti avere sendmail o postfix o exim , o qmail, ecc. Installati. Facciamolo dpkg -S /usr/sbin/sendmail. La risposta è postfix: /usr/sbin/sendmail, ok questo significa che abbiamo postfixinstallato .

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

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

  4. Aggiungere la seguente riga nel file di /etc/postfix/main.cffile 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 postfixsolo a ipv4, quindi questo passaggio 4 (che potrebbe non essere necessario per te?).

  5. Record DNS SPF . Per dimostrare che è consentito inviare e-mail da @example.com, è possibile aggiungere un record SPF nei record DNS del dominio example.com. L'ho trovato da qualche parte The DNS record type 99 (SPF) has been deprecated, quindi usiamo invece un record TXT. Aggiungiamo questo come record DNS TXT (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 per inviare la posta come contact@example.com ( vedi screenshot qui ), usando il provider SMTP affidabile Sendgrid . Se non aggiungessi questi include:, Gmail non sarebbe autorizzato a inviare email da @example.com.

  6. Firma digitale DKIM . 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 anche qui ):

    • apt-get install opendkim opendkim-tools

    • Crea le chiavi (puoi anche generare chiavi e il relativo record TXT DNS 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:8891@localhost" # 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 (presente 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'e-mail tramite PHP a auth-results@verifier.port25.com(questo strumento molto utile è reso disponibile da Port25 Solutions):

    $emailfrom = "Example <contact@example.com>";
    $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: example@gmail.com\n";
    mail("check-auth@verifier.port25.com", "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 il problema persiste , una soluzione potrebbe essere quella di esternalizzare la posta elettronica con una soluzione professionale, per evitare giorni e notti di debug (non riuscito). Ecco un buon articolo su questo. Ecco una citazione: "L'invio di e-mail dalla tua app può s ***. La metà delle volte, i messaggi che vengono inviati dal tuo server vengono scaricati nella cartella junk del destinatario." che ho scoperto tristemente 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.

6

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.


Questa è una soluzione alternativa. Una soluzione adeguata sarebbe quella di correggere il sistema difettoso e assicurarsi di disporre almeno di un record SPF corretto nel DNS.
John Gardeniers,

3
In realtà, se l'ISP su cui si trova il tuo server di posta viene contrassegnato in nero come spam, buona fortuna. All'epoca eravamo su Rackspace. L'uso di Google come SMTP ha aiutato poiché Google si è assicurato che non fosse nella lista nera.
Chris K,

2

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

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


Al momento, questo post è essenzialmente solo un link. Per assicurarti che la risposta rimanga utile anche se il collegamento si interrompe, modificalo per includere le informazioni pertinenti.
anx
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.