Comment envoyer des emails et les éviter d'être classés comme spam?

Il s'agit d'une question canonique sur la façon de traiter le courrier électronique envoyé par votre server en erreur dans la mauvaise classification. Pour plus d'informations, vous pouvez find ces questions similaires utiles:

  • Meilleures pratiques pour vous empêcher de ressembler à un spammeur
  • Lutte contre le spam – Que puis-je faire en tant que: Administrateur d'emails, Propriétaire du domaine ou Utilisateur?

Parfois, je souhaite envoyer des bulletins d'information à mes clients. Le problème, c'est que certains des courriels sont pris en charge en tant que spam. Principalement par Outlook au client (même dans mon Outlook 2007).

Maintenant, je veux savoir ce qu'il faut faire pour créer des "bons" courriels. Je connais la search inversée, etc. (mais par exemple), un lien de désinscription avec un identifiant unique? Est-ce que cela augmente une cote de spam?

Assurez-vous que vos emails ne ressemblent pas à des courriers indésirables typiques: n'insérez pas seulement une grande image; vérifiez que le jeu de caractères est défini correctement; n'insérez pas les liens "adresse IP uniquement". Écrivez votre communication car vous rédigeriez un courriel normal. Il est très facile de vous désabonner ou de vous désinscrire. Sinon, vos users se désabonner en appuyant sur le button "spam", et cela affectera votre réputation.

Du côté technique: si vous pouvez choisir votre server SMTP, assurez-vous qu'il s'agit d'un server SMTP "propre". Les adresses IP des servers SMTP de spam sont souvent listées sur la list noire par d'autres fournisseurs. Si vous ne connaissez pas vos servers SMTP à l'avance, il est recommandé de fournir des options de configuration dans votre application pour contrôler la taille des lots et les retards entre les lots. Certains servers de messagerie n'acceptent pas de gros lots d'envoi ou une activité continue.

Utilisez des methods d'authentification par courrier électronique telles que SPF et Domain Keys pour prouver que vos emails et votre nom de domaine appartiennent set. Le bon effet secondaire est votre aide pour empêcher que votre domaine de messagerie ne soit falsifié. Vérifiez également votre DNS inverse pour vous assurer que l'adresse IP de votre server de messagerie indique le nom de domaine que vous utilisez pour l'envoi de courrier.

Assurez-vous que l'adresse de réponse de vos emails soit une adresse valide et existante. Utilisez le nom complet et réel du destinataire dans le champ À, pas seulement l'adresse électronique (par exemple, "John Doe" <john.doe@example.com> ) et surveillez vos counts d'abus, tels que abuse@example.com et postmaster@example.com .

Désabonnez-vous automatiquement les destinataires de votre message dont les adresses de courrier électronique rebondissent et établissez des loops de rétroaction avec les principaux fournisseurs de courrier électronique et annulez automatiquement les destinataires qui déclarent votre message comme spam ou courrier indésirable. Cela consortingbuera grandement à améliorer votre réputation et votre productivité.

Cette question mentionne que les bases sont en place, mais comme nous indiquons les autres à ce sujet comme une question canonique, je veux juste être sûr de couvrir nos bases.

Ces minimums sont essentiellement requirejs ces jours-ci:

  1. Veillez à ce que vous ayez un DNS en sens inverse et inversé correctement. Un server de messagerie doit s'identifier dans un échange HELO / EHLO, ce nom devrait se référer à l'IP utilisé par le server. De même, la search inverse de cette adresse IP doit renvoyer le nom.

  2. Assurez-vous que votre server envoie réellement le nom d'hôte dans ce handshake. Votre server ne devrait pas envoyer une adresse IP.

  3. Assurez-vous que votre adresse IP ne concerne aucun DNSRBL (lists noires). Si c'est le cas, prenez soin de cela.

  4. Vérifiez la réputation de votre IP avec les services de réputation les plus populaires (SenderScore est un grand en ce moment, mais cela pourrait ne pas durer avec le time). Ces services ont généralement des lignes direcsortingces pour améliorer votre réputation, mais ne sont pas un "go / no-go" comme RBL.

  5. Ne pas fausser les en-têtes, ne pas mentir dans les en-têtes, et assurez-vous d'inclure les en-têtes minimaux dans les messages ( Date et From sont requirejs, un Subject , un Sender , une Reply-To et un / Cc / Bcc [selon le cas]). C'est l'un de mes plus grands pet-peves avec des bulletins d'information valides que je souhaite recevoir pour finir dans Junk car ils faussent un en-tête Outlook Express, oublient la date ou quelque chose de similaire.

En option, vous devriez envisager la configuration de SPF, DKIM et DMARC. Ceux-ci aident à la livraison, mais ne sont pas nécessaires (et non pas à la grande majorité des servers de messagerie).

Malheureusement, il existe de nombreuses techniques de filtrage différentes et certains fournisseurs de messagerie majeurs ne publieront pas ce qu'ils utilisent et / ou quels poids sont donnés à différents tests / filters, afin de savoir comment réussir est difficile. Fondamentalement, le spam a conduit les FAI et les users dans une situation où ils rendent parfois difficile la transmission de ces messages légitimes (en particulier les messages en vrac tels que votre bulletin d'information). Je ne considère plus le courrier électronique comme la méthode de transport à mi-path et fiable.

Pour être un peu less négatif et plus utile … Comme vous rencontrez des problèmes spécifiques avec un client particulier, il peut y avoir des choses que le programme peut vous dire. Je ne connais pas spécifiquement les outlook, car je ne l'utilise pas n'importe où, mais de nombreux filters de courrier électronique injectent des en-têtes dans des messages pour indiquer les filters utilisés, quel était le résultat et quelle était la pondération accordée à ce filter. Donc, si vous regardez la source complète des messages qu'ils ont déplacés vers des dossiers indésirables, vous pouvez find des indices utiles. À titre d'exemple, les filters basés sur SpamAssassin injectent des en-têtes sous la forme suivante:

 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] 

(cet exemple a été supprimé d'un véritable message anti-spam dans mon stack de déchets)

Ce n'est pas forcément le cas, car le filtrage bayésien et d'autres methods impliquant la formation des users sont communs – de sorte que vos filters passent et échouent peuvent différer considérablement pour les autres, même si le client a été configuré de manière identique hors service. Vous devrez peut-être considérer un autre sharepoint vente pour vos nouvelles (beaucoup de gens essaient d'utiliser des protocoles de réseau social pour cela, avec des degrés divers de succès).

Comme d'autres l'ont dit, vous voulez éviter de «regarder» comme un message de spam lors de l'envoi du courrier électronique, mais vous ne pouvez pas nécessairement indiquer ce qui sera ou ne vous fera pas ressembler à un spam, car les techniques varient.

Une chose que vous voudrez peut-être envisager est d'envoyer un courrier électronique simple à vos clients pour chaque bulletin d'information qui contient en fait une description / salutation rapide suivie d'un "cliquez ici pour voir notre dernière newsletter!" message; De cette façon, vous pouvez héberger votre message sur un server Web, vous réduisez la taille des courriels (et vous chargez sur votre server de messagerie) et, en prime, vous pouvez vérifier les journaux sur votre server Web pour get des commentaires sur le nombre de clients. en train de lire vos messages et de les supprimer.

Mon entreprise en ligne a eu des problèmes avec les courriels de confirmation de command allant au spam ou même pas livrés (évités par les servers de messagerie). Il s'agissait de simples courriels «Voici un résumé de votre command» avec un lien vers le domaine de notre site. Nous avons fini par acheter quelques counts Google Apps pour mon entreprise. Vous pouvez configurer l'un d'entre eux pour servir de server SMTP. Ayant Google comme notre expéditeur de messagerie a arrêté tous ces problèmes.

En ce qui concerne les bulletins d'information par courrier électronique, utilisez définitivement un service qui gère opt-in / -out pour vous. L'utilisation de quelqu'un d'autre qu'un service pour envoyer un courrier en vrac vous permettra probablement de vous interdire.

Solution détaillée pour éviter que les courriels ne soient identifiés comme spam et / ou ne pas arriver aux récepteurs

Exemple de situation: vous avez un server exécutant un site Web PHP pour example.com qui doit envoyer des emails . Et vous remarquez que vos e-mails ne sont pas toujours livrés. (Un gros problème si vous êtes propriétaire d'un magasin et que les clients ne reçoivent pas les courriels après un achat!).

Si vous suivez toutes les étapes suivantes, cela devrait résoudre 99,9% des problèmes; dans mon cas, cela a fonctionné. (J'ai d'abord pensé qu'il était possible de ne faire que quelques-uns d'entre eux, et sauter par exemple le DKIM, mais finalement tous étaient nécessaires pour résoudre tous les problèmes que j'avais).

  1. Tout d'abord, qui envoie des courriels?

    Lorsque votre code PHP envoie des courriels, c'est souvent avec le célèbre mail(...) fonction PHP mail(...) . Mais qu'est-ce que cette fonction fait, sous le capot? test.php une page test.php contenant <?php echo ini_get('sendmail_path'); ?> <?php echo ini_get('sendmail_path'); ?> . Vous obtiendrez par exemple: /usr/sbin/sendmail -t -i . Bonne nouvelle, maintenant nous soaps quel programme gère vraiment les emails!
    Maintenant une information délicate: le nom sendmail peut être divers programmes . Même si vous voyez sendmail à l'étape précédente, vous pourriez avoir sendmail ou postfix ou exim , ou qmail, etc. installés. Faisons dpkg -S /usr/sbin/sendmail . La réponse est postfix: /usr/sbin/sendmail , ok, cela signifie que postfix installé .

  2. Regardez dans le file journal /var/mail/www-data pour savoir quels emails n'ont pas été correctement envoyés et pourquoi. Cela pourrait être utile pour les prochaines étapes.

  3. Comme mentionné sur le blog de Jeff Atwood , il est time de regarder les loggings PTR inverse. (Plus de détails à append ici).

  4. Ajoutez la ligne suivante dans le file de configuration postfix /etc/postfix/main.cf :

     inet_protocols=ipv4 

    Ensuite, redémarrez postfix avec le service restart postfix . Pourquoi? Parce que j'ai eu des problèmes comme celui-ci lorsque le destinataire est Gmail:

    Notre système a détecté que ce message 550-5.7.1 ne respecte pas les directives d'envoi d'IPv6 concernant les loggings PTR et l'authentification 550-5.7.1. Veuillez consulter 550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_error pour plus d'informations 550 5.7.1.

    La solution la plus simple était ensuite de passer postfix à ipv4 uniquement, donc cette étape 4 (ce qui pourrait être inutile pour vous?).

  5. Enregistrements DNS SPF . Afin de prouver que vous êtes autorisé à envoyer des emails à partir de @example.com , vous pouvez append un logging SPF dans les loggings DNS du domaine example.com . J'ai trouvé quelque part que The DNS record type 99 (SPF) has been deprecated , donc nous utilisons plutôt un logging TXT. Ajoutons ceci comme un logging DNS TXT (voir aussi la note 1) :

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

    Pourquoi cela inclut-il? Parce que mon server ne sera pas le seul à envoyer des e-mails à partir de @ example.com! J'ai configuré Gmail pour envoyer un courrier à contact@example.com ( voir la capture d'écran ici ), en utilisant le fournisseur SMTP approuvé Sendgrid . Si je ne les ajoute pas, Gmail ne serait pas autorisé à envoyer un email à partir de @example.com .

  6. Signature numérique DKIM . Comme mentionné ici , l'objective de DKIM est de s'assurer que le contenu du courrier n'a pas été altéré pendant la transmission. Voici le process d'installation dans Ubuntu (guide utile ici aussi):

    • apt-get install opendkim opendkim-tools

    • Créez les keys (vous pouvez également générer des keys et l'logging DNS TXT approprié avec http://dkimcore.org/tools/ ):

       mkdir /etc/opendkim cd /etc/opendkim opendkim-genkey -t -s mail -d example.com 
    • Mettons cela dans /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 

      ceci dans /etc/default/opendkim :

       SOCKET="inet:8891@localhost" # Ubuntu default - listn on loopback on port 8891 

      et enfin append ceci à la fin du file de configuration postfix /etc/postfix/main.cf :

       # DKIM milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:localhost:8891 non_smtpd_milters = inet:localhost:8891 
    • Maintenant, ajoutons la key publique (trouvée dans /etc/opendkim/mail.txt ) aux loggings DNS de votre domaine:

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

      Voici comment il ressemble à mon registre Namelynx:

    • Dernière étape pour DKIM: redémarrez les services de messagerie avec service restart opendkim ; service restart postfix service restart opendkim ; service restart postfix .

  7. Testez si tout fonctionne. La méthode la plus simple consiste à envoyer un courrier électronique via PHP à auth-results@verifier.port25.com (cet outil très utile est mis à disposition par 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); 

    Ensuite, voir la réponse de cet outil, il devrait ressembler à ceci:

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

    Le service mail-tester.com est également utile.

  8. (Facultatif) Essayez postmaster.google.com. Je l'ai utilisé, mais je ne me souviens pas s'il a aidé ou non.


Notes complémentaires:

(1)

 -all : Fail: All mail servers not listd in the SPF record are explicitly not authorized to send mail using the sender's domain. ~all : Soft Fail: All mail servers not listd 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 listd 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.