¿Cómo enviar correos electrónicos y evitar que sean clasificados como spam?

83

Esta es una pregunta canónica sobre cómo manejar el correo electrónico enviado desde su servidor que se clasifica erróneamente como spam. Para obtener información adicional, puede encontrar útiles estas preguntas similares:

A veces quiero enviar boletines a mis clientes. El problema es que algunos de los correos electrónicos quedan atrapados como mensajes de spam. Principalmente por Outlook en el cliente (incluso en mi propio Outlook 2007).

Ahora quiero saber qué se debe hacer para crear correos electrónicos "buenos". Sé acerca de la búsqueda inversa, etc., pero (por ejemplo), ¿qué pasa con un enlace para cancelar la suscripción con un ID único? ¿Eso aumenta la calificación de spam?

kcode
fuente
Una lista de comprobación paso a paso , así como instrucciones para solucionar problemas se pueden encontrar en una buena respuesta a una pregunta similar en superuser.com .
MattBianco

Respuestas:

83

Asegúrese de que sus correos electrónicos no se vean como correos electrónicos no deseados típicos: no inserte solo una imagen grande; compruebe que el juego de caracteres esté configurado correctamente; no inserte enlaces de "solo dirección IP". Escriba su comunicación como escribiría un correo electrónico normal. Haga que sea muy fácil darse de baja o darse de baja. De lo contrario, sus usuarios se darán de baja presionando el botón "spam", y eso afectará su reputación.

En el aspecto técnico: si puede elegir su servidor SMTP, asegúrese de que sea un servidor SMTP "limpio". Las direcciones IP de los servidores SMTP de spam a menudo están en la lista negra de otros proveedores. Si no conoce sus servidores SMTP de antemano, es una buena práctica proporcionar opciones de configuración en su aplicación para controlar los tamaños de lote y el retraso entre lotes. Algunos servidores de correo no aceptan grandes lotes de envío o actividad continua.

Use métodos de autenticación de correo electrónico, como SPF , y claves de dominio para demostrar que sus correos electrónicos y su nombre de dominio pertenecen juntos. El agradable efecto secundario es que usted ayuda a evitar que su dominio de correo electrónico sea falso. Verifique también su DNS inverso para asegurarse de que la dirección IP de su servidor de correo apunte al nombre de dominio que utiliza para enviar el correo.

Asegúrese de que la dirección de respuesta de sus correos electrónicos sean válidas y existentes. Use el nombre completo y real del destinatario en el campo Para, no solo la dirección de correo electrónico (p "John Doe" <[email protected]>. Ej. ) Y controle sus cuentas de abuso, como [email protected] y [email protected] .

splattne
fuente
Y use versiones multiparte / alternativas de su correo electrónico html que solo contenga texto. Significa que el escáner de correo no deseado tendrá más cosas útiles para clasificar.
Matt
22

Anule automáticamente la suscripción de los destinatarios de su mensaje cuyas direcciones de correo electrónico reboten, y establezca bucles de retroalimentación de quejas con los principales proveedores de correo y anule automáticamente la suscripción de los destinatarios que informan su mensaje como spam / basura. Esto contribuirá en gran medida a mejorar su reputación y capacidad de entrega.


fuente
44
Esto es muy interesante. No sabía nada sobre estos circuitos de retroalimentación. ¿Todos los proveedores ofrecen dicho programa?
kcode el
1
No todos los proveedores, no. Pero la mayoría de los principales, incluidos Yahoo y AOL y otros. Todos los bucles de comentarios de quejas que conozco requieren que los mensajes se envíen desde un dominio autenticado por DKIM o DomainKeys. Creo que algunos también requieren SPF, pero con menos frecuencia.
15

Esta pregunta menciona que los conceptos básicos están en su lugar, pero como estamos señalando a otros como una pregunta canónica, solo quiero asegurarme de que cubrimos nuestras bases.

Estos mínimos son esencialmente necesarios en estos días:

  1. Asegúrese de tener el DNS directo e inverso configurado correctamente. Un servidor de correo tiene que identificarse en un intercambio HELO / EHLO, ese nombre debe buscar la IP que el servidor está usando. Del mismo modo, la búsqueda inversa de esa IP debería devolver el nombre.

  2. Asegúrese de que su servidor esté enviando el nombre de host en ese protocolo de enlace. Su servidor no debe enviar una dirección IP.

  3. Asegúrese de que su dirección IP no esté en ninguna DNSRBL (listas negras). Si es así, cuídalo.

  4. Verifique la reputación de su IP con los servicios de reputación más populares (SenderScore es muy importante en este momento, pero eso podría no aguantar con el tiempo). Estos servicios generalmente tienen pautas para mejorar su reputación, pero no son un "ir / no ir" como los RBL.

  5. No encabezados falsos, no se encuentran en las cabeceras, y asegúrese de que está incluyendo las cabeceras mínimos en los mensajes ( Datey Fromse requieren, debe haber una Subject, Sender, Reply-To, y To/ Cc/ Bcc[según corresponda]). Este es uno de mis mayores amigos con boletines válidos que quiero recibir que terminen en basura porque falsifican un encabezado de Outlook Express, omiten la fecha o algo similar.

Opcionalmente, debe considerar configurar SPF, DKIM y DMARC. Estos ayudan con la capacidad de entrega, pero no son necesarios (no por la gran mayoría de los servidores de correo electrónico).

Chris S
fuente
11

Desafortunadamente, existen muchas técnicas de filtrado diferentes y algunos de los principales proveedores de correo no publicarán lo que usan y / o qué pesos se les da a varias pruebas / filtros, por lo que es difícil saber cómo hacerlo. Básicamente, el correo no deseado ha llevado a los ISP y a los usuarios a una situación en la que a veces dificultan la transmisión de mensajes legítimos (especialmente mensajes masivos, como su boletín informativo). Ya no considero que el correo electrónico sea el método de transporte confiable a mitad de camino que alguna vez fue.

Para ser un poco menos negativo y más útil ... Como tiene problemas específicos con un cliente en particular, puede haber cosas que el programa puede decirle. No sé específicamente sobre Outlook, ya que no lo uso en ninguna parte, pero muchos filtros de correo inyectan encabezados en los mensajes para enumerar qué filtros se usaron, cuál fue el resultado y cuál fue la ponderación dada a ese filtro. Entonces, si mira la fuente completa de los mensajes que se movieron a carpetas basura, puede encontrar pistas útiles. Como ejemplo, los filtros basados ​​en SpamAssassin inyectan encabezados de la siguiente forma:

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]

(ese ejemplo ha sido extraído de un mensaje de spam genuino en mi montón de basura)

Sin embargo, esto no es definitivo, ya que el filtrado bayesiano y otros métodos que involucran la capacitación del usuario son comunes, por lo que lo que pasan y fallan sus filtros puede diferir notablemente de otras personas a pesar de que el cliente se configuró de manera idéntica de fábrica. Es posible que tenga que considerar algún otro medio para sus noticias (muchas personas están tratando de usar protocolos de redes sociales para esto, con diversos grados de éxito).

David Spillett
fuente
9

Como dijeron otros, desea evitar "verse" como un mensaje de spam cuando envía el correo electrónico, pero no necesariamente puede decir qué lo hará o no lo hará parecer spam porque las técnicas varían.

Una cosa que quizás desee considerar es enviar un correo electrónico de texto simple a sus clientes para cada boletín que realmente contenga una descripción / saludo rápido seguido de un "¡haga clic aquí para ver nuestro último boletín!" mensaje; de esa forma puede alojar su mensaje en un servidor web, está reduciendo el tamaño de los correos electrónicos (y cargar en su servidor de correo) y, como beneficio adicional, puede consultar los registros en su servidor web para obtener comentarios sobre cuántos clientes hay en realidad leer sus mensajes en lugar de eliminarlos.

Bart Silverstrim
fuente
Hmm Nunca he visto un spammer utilizar esa táctica antes ...
Ernie
Por lo general, el texto directo con un enlace legítimo o dos (no muy espolvoreado generosamente) tiende a pasar ... de lo contrario, no puedo enviar enlaces por correo electrónico a mí mismo ni a otras personas sin que se marquen como spam. Es como decir que nunca has visto que los spammers envíen mensajes instantáneos con "palabras sucias" para atraer a la gente a responder. El tráfico legítimo también lo hace. La clave es no ser "demasiado spam" ... un nombre de usuario como bevans probablemente no sea tan sospechoso como "hottienakedchick69", incluso si el contenido es el mismo, ¿sabes a qué me refiero?
Bart Silverstrim
7

Solución detallada para evitar que los correos electrónicos se identifiquen como spam y / o no lleguen a los receptores

Situación de ejemplo: tiene un servidor que ejecuta un sitio web PHP para el example.comque necesita enviar correos electrónicos . Y te das cuenta de que tus correos electrónicos no siempre se entregan. (¡Gran problema si eres dueño de una tienda y los clientes no reciben los correos electrónicos después de una compra!).

Si sigue todos los pasos siguientes, debería resolver el 99,9% de los problemas. (Primero pensé que era posible hacer solo unos pocos y omitir DKIM, por ejemplo, pero finalmente todos debían resolver todos los problemas que tenía).

  1. En primer lugar, ¿quién está enviando correos electrónicos?

    Cuando su código PHP envía correos electrónicos, a menudo es con la famosa función PHP mail(...). Pero, ¿qué hace esta función, bajo el capó? Ejecutemos una test.phppágina que contenga <?php echo ini_get('sendmail_path'); ?>. Obtendrá por ejemplo: /usr/sbin/sendmail -t -i. ¡Buenas noticias, ahora sabemos qué programa realmente maneja los correos electrónicos!
    Ahora una información engañosa: el nombre sendmailpuede ser varios programas . Incluso si ve sendmailen el paso anterior, es posible que tenga instalado sendmail o postfix o exim , o qmail, etc. Vamos a hacer dpkg -S /usr/sbin/sendmail. La respuesta es postfix: /usr/sbin/sendmail, ok, esto significa que hemos postfixinstalado .

  2. Mire en el archivo de registro /var/mail/www-datapara saber qué correos electrónicos no se han enviado correctamente y por qué. Esto podría ser útil para los próximos pasos.

  3. Como se menciona en el blog de Jeff Atwood , es hora de mirar los registros PTR inversos. (Más detalles para agregar aquí).

  4. Agregue la siguiente línea en el archivo de configuración de postfix /etc/postfix/main.cf:

    inet_protocols=ipv4
    

    Luego reinicie postfix con service restart postfix. ¿Por qué? Porque tuve problemas como este cuando el destinatario es gmail:

    Nuestro sistema ha detectado que este mensaje 550-5.7.1 no cumple con las pautas de envío de IPv6 con respecto a los registros PTR y la autenticación 550-5.7.1. Consulte 550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_error para obtener más información sobre 550 5.7.1.

    La solución más fácil fue cambiar postfixsolo a ipv4, por lo tanto, este paso 4 (¿qué podría ser innecesario para usted?).

  5. Registros DNS SPF . Para demostrar que tiene permiso para enviar correos electrónicos desde @example.com, puede agregar un registro SPF en los registros DNS del dominio example.com. Encontré algo The DNS record type 99 (SPF) has been deprecatedasí, así que usamos un registro TXT en su lugar. Agreguemos esto como un registro TXT DNS (ver también la nota 1) :

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

    ¿Por qué esto incluye? ¡Porque mi servidor no será el único en enviar correos electrónicos desde @ example.com! Configuré Gmail para Enviar correo como [email protected] ( vea la captura de pantalla aquí ), usando el confiable proveedor SMTP Sendgrid . Si no agrego estos include:, Gmail no podría enviar correos electrónicos desde @example.com.

  6. Firma digital DKIM . Como se mencionó aquí , el objetivo de DKIM es garantizar que el contenido del correo no se haya alterado durante la transmisión. Aquí está el proceso de instalación en Ubuntu (guía útil aquí también):

    • apt-get install opendkim opendkim-tools

    • Cree las claves (también puede generar claves y el registro TXT DNS relevante con http://dkimcore.org/tools/ ):

      mkdir /etc/opendkim
      cd /etc/opendkim
      opendkim-genkey -t -s mail -d example.com
      
    • Pongamos esto en /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
      

      esto en /etc/default/opendkim:

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

      y finalmente agregue esto al final del archivo de configuración de postfix /etc/postfix/main.cf:

      # DKIM
      milter_default_action = accept
      milter_protocol = 2
      smtpd_milters = inet:localhost:8891
      non_smtpd_milters = inet:localhost:8891
      
    • Ahora agreguemos la clave pública (que se encuentra en /etc/opendkim/mail.txt) a los registros DNS de su dominio:

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

      Así es como se ve con mi registrador Namelynx:

    • Último paso para DKIM: reinicie los servicios de correo con service restart opendkim ; service restart postfix.

  7. Prueba si todo funciona. El método más fácil es enviar un correo electrónico a través de PHP [email protected](Port25 Solutions pone a disposición esta herramienta muy útil):

    $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);
    

    Luego vea la respuesta de esta herramienta, debería verse así:

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

    El servicio mail-tester.com también es útil.

  8. (Opcional) Pruebe postmaster.google.com. Lo usé pero no recuerdo si ayudó o no.

  9. Si todavía no funciona , una solución podría ser externalizar el correo electrónico con una solución profesional, para evitar días y noches de depuración (sin éxito). Aquí hay un buen artículo sobre esto. Aquí hay una cita: "El envío de correos electrónicos desde su aplicación puede ser s ***. La mitad del tiempo, los mensajes que se envían desde su propio servidor simplemente se descargan en la carpeta de correo no deseado del destinatario". que tristemente descubrí cierto, después de semanas de retoques.


Notas adicionales:

(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.
Basj
fuente
6

Mi negocio en línea tenía problemas con los correos electrónicos de confirmación de pedidos que se enviaban a spam o que ni siquiera se entregaban (rechazados a través de servidores de correo). Estos fueron simples correos electrónicos de "aquí hay un resumen de su pedido" con un enlace al dominio de nuestro sitio. Terminamos comprando algunas cuentas de Google Apps para mi negocio. Puede configurar uno de ellos para que actúe como su servidor SMTP. Tener a Google como nuestro remitente de correo detuvo todos estos problemas.

En lo que respecta a los boletines por correo electrónico, definitivamente use un servicio que se encargue de la entrada / salida por usted. El uso de alguien que no sea un servicio para enviar correo masivo probablemente lo expulsará.

Chris K
fuente
Esa es una solución alternativa. Una solución adecuada sería rectificar su sistema defectuoso y asegurarse de que al menos tenga un registro SPF adecuado en DNS.
John Gardeniers
3
En realidad, si el ISP en el que se encuentra su servidor de correo se marca en negro como spam, buena suerte con eso. Estábamos en Rackspace en ese momento. El uso de Google como SMTP ayudó porque Google se aseguró de que no esté en la lista negra.
Chris K
2

Hay una nueva guía que se ha publicado en la bandeja de entrada de correo electrónico

El más completo que he visto. Una lista de verificación de 43 puntos diferentes que cubren cada llave de cómo evitar ser marcado como spam. Eso se actualiza continuamente.

Desde configurar DNS, configurar autenticación, configurar monitoreo de reputación, reducir su tasa de rebote, probar su contenido de correo electrónico, etc.

La cobertura cara a cara de todo por ZeroBounce.NET

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

Enrique
fuente
Por el momento, esta publicación es esencialmente solo un enlace. Para asegurarse de que la respuesta siga siendo útil incluso si el enlace se rompe, edítelo para incluir la información relevante.
ans