Esta é uma pergunta canônica sobre como lidar com emails enviados de seu servidor sendo classificados erroneamente como spam. Para obter informações adicionais, essas perguntas semelhantes podem ser úteis:
Às vezes eu quero enviar newsletters para meus clientes. O problema é que alguns dos e-mails são capturados como mensagens de spam. Principalmente pelo Outlook no cliente (mesmo no meu próprio Outlook 2007).
Agora quero saber o que deve ser feito para criar e-mails "bons". Eu sei sobre pesquisa reversa etc., mas (por exemplo), e quanto a um link de cancelamento de inscrição com um ID exclusivo? Isso aumenta uma classificação de spam?
Certifique-se de que seus e-mails não se parecem com e-mails de spam típicos: não insira apenas uma imagem grande; verifique se o conjunto de caracteres está definido corretamente; não insira links “somente endereço IP”. Escreva sua comunicação como escreveria um e-mail normal. Facilite muito o cancelamento da assinatura ou a desativação. Caso contrário, seus usuários cancelarão a inscrição pressionando o botão “spam”, e isso afetará sua reputação.
No lado técnico: se você puder escolher seu servidor SMTP, certifique-se de que seja um servidor SMTP “limpo”. Os endereços IP de servidores SMTP de spam geralmente são colocados na lista negra por outros provedores. Se você não conhece seus servidores SMTP com antecedência, é uma boa prática fornecer opções de configuração em seu aplicativo para controlar os tamanhos dos lotes e o atraso entre os lotes. Alguns servidores de e-mail não aceitam grandes lotes de envio ou atividade contínua.
Use métodos de autenticação de e-mail, como SPF e DKIM , para provar que seus e-mails e seu nome de domínio pertencem um ao outro. O bom efeito colateral é que você ajuda a evitar que seu domínio de e-mail seja falsificado. Verifique também seu DNS reverso para certificar-se de que o endereço IP do seu servidor de e-mail aponta para o nome de domínio que você usa para enviar e-mails.
Certifique-se de que o endereço de resposta de seus e-mails seja um endereço válido e existente. Use o nome completo e real do destinatário no campo Para, não apenas o endereço de e-mail (por exemplo
"John Doe" <[email protected]>
, ) e monitore suas contas de abuso, como [email protected] e [email protected] .Cancele automaticamente a assinatura de destinatários de sua mensagem cujos endereços de e-mail sejam devolvidos e estabeleça ciclos de feedback de reclamação com os principais provedores de e-mail e cancele automaticamente a assinatura de destinatários que relatam sua mensagem como spam/lixo. Isso ajudará bastante a melhorar sua reputação e capacidade de entrega.
Esta pergunta menciona que o básico está em vigor, mas como estamos apontando para outros como uma pergunta canônica, só quero ter certeza de que cobrimos nossas bases.
Esses mínimos são essencialmente necessários nos dias de hoje:
Certifique-se de ter o DNS direto e reverso configurado corretamente. Um servidor de correio deve se identificar em uma troca HELO/EHLO, esse nome deve procurar o IP que o servidor está usando. Da mesma forma, a pesquisa inversa desse IP deve retornar o nome.
Certifique-se de que seu servidor esteja realmente enviando o nome do host nesse handshake. Seu servidor não deve enviar um endereço IP.
Certifique-se de que seu endereço IP não esteja em nenhuma DNSRBL (lista negra). Se for, cuide disso.
Verifique a reputação do seu IP com os serviços de reputação mais populares (SenderScore é um grande problema agora, mas isso pode não se sustentar com o tempo). Esses serviços geralmente têm diretrizes para melhorar sua reputação, mas não são totalmente "ir/não ir" como os RBLs.
Não falsifique os cabeçalhos, não minta nos cabeçalhos e certifique-se de incluir os cabeçalhos mínimos nas mensagens (
Date
eFrom
são obrigatórios, deve haver umSubject
,Sender
,Reply-To
eTo
/Cc
/Bcc
[conforme aplicável]). Esta é uma das minhas maiores preocupações com boletins válidos que quero receber terminando em lixo porque eles falsificam um cabeçalho do Outlook Express, deixam de fora a data ou algo semelhante.Opcionalmente, você deve considerar a configuração de SPF, DKIM e DMARC. Eles ajudam na entrega, mas não são necessários (não pela grande maioria dos servidores de e-mail).
Infelizmente, existem muitas técnicas de filtragem diferentes e alguns dos principais provedores de e-mail não publicam o que usam e/ou quais pesos são dados a vários testes/filtros, então saber como passar é difícil. Basicamente, o spam levou ISPs e usuários a uma situação em que às vezes dificultam a passagem de mensagens legítimas (especialmente mensagens em massa, como seu boletim informativo). Eu não considero mais o e-mail como o meio de transporte meio confiável que já foi.
Para ser um pouco menos negativo e mais útil... Como você está tendo problemas específicos com um cliente em particular, pode haver coisas que o programa pode lhe dizer. Não sei especificamente sobre o Outlook, pois não o uso em nenhum lugar, mas muitos filtros de e-mail injetam cabeçalhos nas mensagens para listar quais filtros foram usados, qual foi o resultado e qual foi a ponderação dada a esse filtro. Portanto, se você observar a fonte completa das mensagens que foram movidas para pastas de lixo eletrônico, poderá encontrar pistas úteis. Como exemplo, os filtros baseados em SpamAssassin injetam cabeçalhos da seguinte forma:
(esse exemplo foi retirado de uma mensagem de spam genuína na minha pilha de lixo)
Isso não é definitivo, pois a filtragem bayesiana e outros métodos que envolvem o treinamento do usuário são comuns - portanto, o que seus filtros passam e falham pode diferir marcadamente dos de outras pessoas, mesmo que o cliente tenha sido configurado de forma idêntica fora da caixa. Você pode ter que considerar algum outro meio de comunicação para suas notícias (muitas pessoas estão tentando usar protocolos de redes sociais para isso, com vários graus de sucesso).
Como outros disseram, você deseja evitar "parecer" uma mensagem de spam ao enviar o e-mail, mas não pode necessariamente dizer o que fará ou não parecerá spam porque as técnicas variam.
Uma coisa que você pode querer considerar é enviar um e-mail de texto simples para seus clientes para cada boletim informativo que realmente contém uma descrição/saudação rápida seguida de um "clique aqui para ver nosso boletim informativo mais recente!" mensagem; dessa forma você pode hospedar sua mensagem em um servidor web, você está reduzindo o tamanho dos e-mails (e carrega em seu servidor de e-mail) e como bônus você pode verificar os logs em seu servidor web para obter feedback sobre quantos clientes estão realmente lendo suas mensagens versus excluí-las.
Meu negócio online estava tendo problemas com e-mails de confirmação de pedidos indo para spam ou nem mesmo sendo entregues (evitados por meio de servidores de e-mail). Estes eram simples e-mails "aqui está um resumo do seu pedido" com um link para o domínio do nosso site. Acabamos comprando algumas contas do Google Apps para minha empresa. Você pode configurar um deles para atuar como seu servidor SMTP. Ter o Google como nosso remetente de e-mail acabou com todos esses problemas.
No que diz respeito aos boletins informativos por e-mail, definitivamente use um serviço que lide com o opt-in/-out para você. Usar qualquer pessoa que não seja um serviço para enviar mensagens em massa provavelmente fará com que você seja banido.
Solução detalhada para evitar que emails sejam identificados como spam e/ou não cheguem aos destinatários
Exemplo de situação: Você tem um servidor rodando um site PHP para
example.com
que precise enviar emails . E você percebe que seus e-mails nem sempre são entregues. (Grande problema se você é dono de uma loja e os clientes não recebem os e-mails após a compra!).Se você seguir todos os passos a seguir, deve resolver 99,9% dos problemas. (Primeiro pensei que era possível fazer apenas alguns deles e pular o DKIM, por exemplo, mas finalmente todos eles foram necessários para resolver todos os problemas que tive).
Em primeiro lugar, quem está enviando e-mails?
Quando seu código PHP envia e-mails, geralmente é com a famosa função PHP
mail(...)
. Mas o que essa função faz, sob o capô? Vamos executar umatest.php
página contendo<?php echo ini_get('sendmail_path'); ?>
. Você obterá, por exemplo:/usr/sbin/sendmail -t -i
. Boas notícias, agora sabemos qual programa realmente lida com os e-mails!Agora uma informação complicada: o nome
sendmail
pode ser vários programas . Mesmo que você vejasendmail
no passo anterior, você pode ter o sendmail ou postfix ou exim , ou qmail, etc. instalado. Vamos fazerdpkg -S /usr/sbin/sendmail
. A resposta épostfix: /usr/sbin/sendmail
, ok, isso significa quepostfix
instalamos .Consulte o arquivo de log
/var/mail/www-data
para saber quais e-mails não foram enviados corretamente e por quê. Isso pode ser útil para as próximas etapas.Como mencionado no blog de Jeff Atwood , é hora de olhar para os registros de PTR reversos. (Mais detalhes a serem adicionados aqui).
Adicione a seguinte linha no arquivo de configuração do postfix
/etc/postfix/main.cf
:Em seguida, reinicie o postfix com
service restart postfix
. Por quê? Porque eu tive problemas assim quando o destinatário é gmail:A solução mais fácil foi então mudar
postfix
para ipv4 apenas, assim este passo 4 (o que poderia ser desnecessário para você?).Registros DNS SPF . Para provar que você tem permissão para enviar e-mails de
@example.com
, você pode adicionar um registro SPF nos registros DNS do domínioexample.com
. Eu encontrei em algum lugar issoThe DNS record type 99 (SPF) has been deprecated
, então usamos um registro TXT. Vamos adicionar isso como um registro DNS TXT (veja também a nota 1) :Por que isso inclui? Porque meu servidor não será o único a enviar emails de @example.com! Configurei o Gmail para Enviar e-mail como [email protected] ( veja a captura de tela aqui ), usando o provedor SMTP confiável Sendgrid . Se eu não adicioná-los
include:
, o Gmail não poderá enviar e-mails de@example.com
.Assinatura digital DKIM . Conforme mencionado aqui , o objetivo do DKIM é garantir que o conteúdo do e-mail não seja adulterado durante a transmissão. Aqui está o processo de instalação no Ubuntu (guia útil aqui também):
apt-get install opendkim opendkim-tools
Crie as chaves (você também pode gerar chaves e o registro TXT DNS relevante com http://dkimcore.org/tools/ ):
Vamos colocar isso em
/etc/opendkim.conf
:isso em
/etc/default/opendkim
:e finalmente adicione isso no final do arquivo de configuração do postfix
/etc/postfix/main.cf
:Agora vamos adicionar a chave pública (encontrada em
/etc/opendkim/mail.txt
) aos registros DNS do seu domínio:Aqui está como fica com meu registrador Namelynx:
Última etapa para DKIM: reinicie os serviços de e-mail com
service restart opendkim ; service restart postfix
.Teste se tudo funciona. O método mais fácil é enviar um email via PHP para
[email protected]
(esta ferramenta muito útil é disponibilizada pela Port25 Solutions):Então veja a resposta desta ferramenta, ela deve ficar assim:
O serviço mail-tester.com também é útil.
(Opcional) Experimente postmaster.google.com. Eu usei, mas não me lembro se ajudou ou não.
Se ainda não funcionar , uma solução pode ser terceirizar o e-mail com uma solução profissional, para evitar dias e noites de depuração (sem sucesso). Aqui está um bom artigo sobre isso. Aqui está uma citação: "Enviar e-mails do seu aplicativo pode ser uma merda. Metade do tempo, as mensagens que são enviadas do seu próprio servidor são despejadas na pasta de lixo eletrônico do destinatário." que infelizmente descobri ser verdade, depois de semanas de ajustes.
Notas Adicionais:
(1)
Há um novo guia que foi publicado na caixa de entrada de e-mail
O mais completo que já vi. Uma lista de verificação de 43 pontos diferentes que cobrem todas as torneiras de como evitar ser marcado como spam. Isso é continuamente atualizado.
Desde configurar DNS, configurar autenticação, configurar monitoramento de reputação, reduzir sua taxa de rejeição, testar seu conteúdo de e-mail, etc.
Cobertura direta de tudo pelo ZeroBounce.NET
https://www.zerobounce.net/guide-to-improve-inbox-and-delivery.html