Como enviar e-mails e evitar que eles sejam classificados como spam?

82

Esta é uma pergunta canônica sobre como lidar com os e-mails enviados do seu servidor sendo classificados incorretamente como spam. Para informações adicionais, você pode encontrar estas perguntas semelhantes úteis:

Às vezes, quero enviar boletins aos 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 eu quero saber o que deve ser feito para criar e-mails "bons". Eu sei sobre pesquisa inversa, etc., mas (por exemplo), que tal um link de cancelamento de assinatura com um ID exclusivo? Isso aumenta a classificação de spam?

kcode
fonte
Uma lista de verificação passo a passo , bem como diretrizes de solução de problemas, podem ser encontradas em uma boa resposta a uma pergunta semelhante no superuser.com .
Matt Bianco

Respostas:

82

Verifique se seus e-mails não se parecem com e-mails de spam comuns: 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 email normal. Torne realmente fácil cancelar a inscrição ou a desativação. Caso contrário, seus usuários cancelarão a inscrição pressionando o botão "spam", o que afetará sua reputação.

No lado técnico: se você pode escolher seu servidor SMTP, verifique se ele é um servidor SMTP "limpo". Os endereços IP de servidores SMTP com spam são geralmente colocados na lista negra por outros provedores. Se você não conhece seus servidores SMTP antecipadamente, é uma boa prática fornecer opções de configuração em seu aplicativo para controlar tamanhos de lotes e atrasos entre lotes. Alguns servidores de correio não aceitam grandes lotes de envio ou atividade contínua.

Use métodos de autenticação de email, como SPF e Chaves de Domínio, para provar que seus emails e seu nome de domínio pertencem um ao outro. O bom efeito colateral é ajudar a impedir que seu domínio de email seja falsificado. Verifique também o seu DNS reverso para garantir que o endereço IP do servidor de email aponte para o nome de domínio que você usa para enviar e-mails.

Verifique se o endereço de resposta dos seus e-mails é um endereço existente válido. 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] .

splattne
fonte
E use versões multipartes / alternativas do seu email em html que contêm apenas texto. Isso significa que o scanner de spam terá mais coisas úteis para classificá-lo.
Matt
22

Cancele automaticamente a inscrição de destinatários da sua mensagem cujos endereços de e-mail sejam devolvidos e estabeleça loops de feedback de reclamações com os principais provedores de email e cancele a inscrição automaticamente de destinatários que relatam sua mensagem como spam / lixo eletrônico. Isso ajudará muito a melhorar sua reputação e capacidade de entrega.


fonte
4
Isto é muito interessante. Eu não sabia nada sobre esses loops de feedback. Todos os provedores oferecem esse programa?
Kcode
1
Nem todos os provedores, não. Mas a maioria dos principais, incluindo Yahoo e AOL e outros. Todos os loops de feedback de reclamação que eu conheço exigem que as mensagens sejam enviadas de um domínio autenticado por DKIM ou DomainKeys. Acredito que alguns também exigem SPF, mas com menos frequência.
15

Essa pergunta menciona que o básico está em vigor, mas, como apontamos outros como questão canônica, eu só quero ter certeza de que cobrimos nossas bases.

Esses mínimos são essencialmente necessários nos dias de hoje:

  1. Verifique se o DNS de encaminhamento e reverso está configurado corretamente. Um servidor de correio precisa 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.

  2. Verifique se o servidor está realmente enviando o nome do host nesse handshake. Seu servidor não deve estar enviando um endereço IP.

  3. Verifique se o seu endereço IP não está em nenhum DNSRBLs (listas negras). Se for, cuide disso.

  4. Verifique a reputação do seu IP com os serviços de reputação mais populares (o SenderScore é importante agora, mas isso pode não durar com o tempo). Esses serviços geralmente têm diretrizes para melhorar sua reputação, mas não são absolutamente "ir / não ir" como RBLs.

  5. Não cabeçalhos falsos, não mentem nos cabeçalhos, e certifique-se que você está incluindo os cabeçalhos mínimos em mensagens ( Datee Fromsão necessários, deve haver um Subject, Sender, Reply-To, e To/ Cc/ Bcc[conforme o caso]). Esta é uma das minhas maiores preocupações com boletins válidos que eu quero receber no lixo eletrônico porque eles falsificam um cabeçalho do Outlook Express, deixam de fora a data ou algo parecido.

Opcionalmente, você deve considerar a configuração de SPF, DKIM e DMARC. Isso ajuda na entrega, mas não é obrigatório (não pela grande maioria dos servidores de email).

Chris S
fonte
11

Infelizmente, existem muitas técnicas de filtragem diferentes e alguns dos principais provedores de correio não publicam o que usam e / ou quais pesos são dados a vários testes / filtros, portanto, é difícil saber como passar. Basicamente, o spam levou ISPs e usuários a uma situação em que às vezes dificulta a passagem de mensagens legítimas (especialmente mensagens em massa, como o boletim informativo). Não considero mais o e-mail o método de transporte mais confiável que já foi.

Para ser um pouco menos negativo e mais útil ... Como você está tendo problemas específicos com um cliente específico, pode haver coisas que o programa pode lhe dizer. Eu não sei especificamente sobre o Outlook, pois não o uso em nenhum lugar, mas muitos filtros de email injetam cabeçalhos nas mensagens para listar quais filtros foram usados, qual foi o resultado e qual foi o peso atribuído a esse filtro. Portanto, se você olhar para a fonte completa das mensagens que foram movidas para pastas indesejadas, poderá encontrar dicas úteis. Como exemplo, os filtros baseados no SpamAssassin injetam cabeçalhos da seguinte 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]

(esse exemplo foi extraído de uma verdadeira mensagem de spam na minha pilha de lixo eletrônico)

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 podem diferir acentuadamente dos de outras pessoas, mesmo que o cliente tenha sido configurado de maneira idêntica. Talvez seja necessário considerar alguma outra saída para suas notícias (muitas pessoas estão tentando usar protocolos de redes sociais para isso, com graus variados de sucesso).

David Spillett
fonte
9

Como outros disseram, você deseja evitar "parecer" uma mensagem de spam ao enviar o email, mas não pode necessariamente dizer o que vai ou não fazer com que você pareça spam, pois as técnicas variam.

Uma coisa que você pode considerar é enviar um email em texto sem formatação 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 da Web, reduz o tamanho dos emails (e carrega no servidor de email) e, como bônus, pode verificar os logs do servidor da Web para obter feedback sobre quantos clientes estão. realmente lendo suas mensagens x excluindo-as.

Bart Silverstrim
fonte
Hmm. Eu nunca vi um spammer usar essa tática antes ...
Ernie
Geralmente, o texto direto com um ou dois links legítimos (não muito espalhados liberalmente) tende a passar ... caso contrário, não posso enviar links por e-mail para mim ou para outras pessoas sem que eles sejam sinalizados como spam. É como dizer que você nunca viu spammers enviarem mensagens instantâneas com "palavrões" para atrair as pessoas a responder. O tráfego legítimo também o faz. A chave é não ser "muito spam" ... um nome de usuário como bevans provavelmente não é tão suspeito quanto "hottienakedchick69", mesmo que o conteúdo seja o mesmo, você entende o que eu quero dizer?
Bart Silverstrim
7

Solução detalhada para evitar que os e-mails sejam identificados como spam e / ou não cheguem aos destinatários

Exemplo de situação: você tem um servidor executando um site PHP para o example.comqual precisa enviar e-mails . E você percebe que seus e-mails nem sempre são entregues. (Grande problema se você é proprietário de uma loja e os clientes não recebem os e-mails após uma compra!).

Se você seguir todas as etapas a seguir, deverá resolver 99,9% dos problemas. (Primeiro pensei que era possível fazer apenas alguns deles e pular o DKIM, por exemplo, mas finalmente todos foram necessários para resolver todos os problemas que eu tinha).

  1. Primeiro de tudo, 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 uma test.phppágina contendo <?php echo ini_get('sendmail_path'); ?>. Você vai ter, 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 sendmailpode ser de vários programas . Mesmo que você veja sendmailna etapa anterior, você pode ter o sendmail ou postfix ou exim , ou qmail, etc. instalados. Vamos fazer dpkg -S /usr/sbin/sendmail. A resposta é postfix: /usr/sbin/sendmail: ok, isso significa que nós postfixinstalamos .

  2. Procure no arquivo de log /var/mail/www-datapara saber quais emails não foram enviados corretamente e por quê. Isso pode ser útil para as próximas etapas.

  3. Como mencionado no blog de Jeff Atwood , é hora de analisar os registros PTR reversos. (Mais detalhes a serem adicionados aqui).

  4. Adicione a seguinte linha no arquivo do /etc/postfix/main.cfarquivo de configuração do postfix :

    inet_protocols=ipv4
    

    Em seguida, reinicie o postfix com service restart postfix. Por quê? Porque tive problemas como este quando o destinatário é o Gmail:

    Nosso sistema detectou que esta mensagem 550-5.7.1 não atende às diretrizes de envio do IPv6 relacionadas aos registros PTR e autenticação 550-5.7.1. Consulte 550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_error para obter mais informações sobre 550 5.7.1.

    A solução mais fácil foi mudar postfixapenas para o ipv4, portanto, esta etapa 4 (que pode ser desnecessária para você?).

  5. Registros DNS do SPF . Para provar que você tem permissão para enviar e-mails @example.com, você pode adicionar um registro SPF nos registros DNS do domínio example.com. Eu encontrei em algum lugar isso The DNS record type 99 (SPF) has been deprecated, então usamos um registro TXT. Vamos adicionar isso como um registro DNS TXT (consulte também a nota 1) :

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

    Por que isso inclui? Porque meu servidor não será o único a enviar e-mails de @ example.com! Configurei o Gmail para enviar email como [email protected] ( veja a captura de tela aqui ), usando o provedor de SMTP confiável Sendgrid . Se não os adicionar include:, o Gmail não poderá enviar e-mails de @example.com.

  6. Assinatura digital DKIM . Como mencionado aqui , o objetivo do DKIM é garantir que o conteúdo do email não seja alterado 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 em http://dkimcore.org/tools/ ):

      mkdir /etc/opendkim
      cd /etc/opendkim
      opendkim-genkey -t -s mail -d example.com
      
    • Vamos colocar isso em /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
      

      isso em /etc/default/opendkim:

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

      e, finalmente, adicione isso no final do arquivo de configuração do postfix /etc/postfix/main.cf:

      # DKIM
      milter_default_action = accept
      milter_protocol = 2
      smtpd_milters = inet:localhost:8891
      non_smtpd_milters = inet:localhost:8891
      
    • Agora vamos adicionar a chave pública (encontrada em /etc/opendkim/mail.txt) aos registros DNS do seu domínio:

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

      Aqui está como fica com meu registrador Namelynx:

    • Última etapa para DKIM: reinicie os serviços de email com service restart opendkim ; service restart postfix.

  7. 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):

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

    Então veja a resposta desta ferramenta, ela deve ficar assim:

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

    O serviço mail-tester.com também é útil.

  8. (Opcional) Experimente postmaster.google.com. Eu usei, mas não me lembro se ajudou ou não.

  9. Se ainda assim não funcionar , uma solução seria terceirizar o email com uma solução profissional, para evitar dias e noites de depuração (sem êxito). Aqui está um bom artigo sobre isso. Aqui está uma citação: "O envio de e-mails do seu aplicativo pode ser uma merda. Na metade do tempo, as mensagens enviadas do seu servidor são despejadas na pasta de lixo eletrônico do destinatário". que, infelizmente, descobri a verdade, após semanas de ajustes.


Notas Adicionais:

(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
fonte
6

Meu negócio on-line estava tendo problemas com os e-mails de confirmação de pedidos que enviavam spam ou nem eram entregues (evitados pelos servidores de correio). Estes eram simples e-mails "aqui está um resumo do seu pedido" com um link para o domínio do 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 remetente de e-mail interrompeu todos esses problemas.

No que diz respeito aos boletins por e-mail, use definitivamente um serviço que lida com a ativação / desativação para você. Usar alguém que não seja um serviço para enviar e-mails em massa provavelmente o banirá.

Chris K
fonte
Essa é uma solução alternativa. Uma solução adequada seria corrigir o sistema com defeito e garantir que você tenha pelo menos um registro SPF adequado no DNS.
John Gardeniers 22/09/12
3
Na verdade, se o ISP do seu servidor de email estiver marcado como spam, boa sorte com isso. Estávamos na Rackspace na época. Usar o Google como SMTP ajudou, pois o Google garantiu que não estivesse na lista negra.
Chris K
2

Há um novo guia publicado no Inboxing por e-mail

O mais abrangente que eu já vi. Uma lista de verificação de 43 pontos diferentes que cobrem cada torneira de como evitar ser marcado como spam. Isso é atualizado continuamente.

Desde a configuração do DNS, Configuração da autenticação, Configuração do monitoramento de reputação, Redução da taxa de rejeição, Teste do seu conteúdo de email, etc.

Cabeças à cobertura de tudo por ZeroBounce.NET

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

Henry
fonte
No momento, este post é essencialmente apenas um link. Para garantir que a resposta permaneça útil, mesmo que o link seja quebrado, edite-o para incluir as informações relevantes.
ans 30/03