Como e-mails funcionam e como configurar um?

Artigo em construção...

Softwares que compõem um e-mail:

Referências
https://en.wikipedia.org/wiki/List_of_mail_server_software

Configurando o DNS para seu e-mail funcionar

Várias hospedagens baratas de PHP tipo Locaweb, Hostgator, Hostinger, Godaddy contam com serviço de e-mail integrado. O conhecimento que escrevo neste tópico é sobre o funcionamento do DNS para o caso destas hospedagens, em especial Hostgator.

Ao longo das explicações uso o termos:

  • "seu domínio" e ele significa o domínio que sua empresa registrou, tipo "minha-empresa.com.br".
  • "seu e-mail" e ele significa seu endereço de e-mail dentro do seu domínio, tipo "[email protected]".

Registro MX (MX Record)

Pra que serve?

Registro MX ou MX Record é usado no momento em que outros enviam e-mails para todos os e-mails em seu domínio. Esse registro precisa conter o endereço DNS de seu servidor de e-mail, sempre escutando a chegada de novas mensagens.

O que acontece se não houver este registro?

Você não receberá nenhum e-mail nas suas caixas de mensagem.

Como configurar?

Costuma-se configurar o Registro MX apontando para um Registro A, que aponta para seu servidor de e-mail.

Registro A; Nome mail.minha-empresa.com.br (seu domínio com "mail" como subdomínio); Value 123.123.123.123 (o endereço IP de seu servidor de e-mails)

Registro MX; Nome seudominio.com; Value mail.seudominio.com

Passo a passo:

  • Abra o seu editor de DNS ou Zona de DNS
  • Verifique a existência ou crie um registro A que aponte para o IP do servidor de e-mail desejado. É uma boa prática criar um Registro A de nome tipo minha-empresa.com.br com o endereço IP público do servidor de e-mails
  • Crie o Registro MX para minha-empresa.com.br com o valor mail.minha-empresa.com.br

Segurança e confiabilidade na entrega de e-mails

O protocolo de envio de e-mails SMTP é inseguro por design e algumas iniciativas foram criadas para aumentar sua segurança. Três delas são baseadas em DNS outra baseada em TLS e outra baseada em criptografia de ponta a ponta com GnuPG.

"Segurança" baseada em DNS

Registro SPF (SPF Record, Sender Policy Framework)

Pra que serve?

Serve para permitir que servidores de e-mail ao receberem um e-mail com seu domínio como remetente consigam julgar se foram enviados a partir de um servidor confiável ou suspeito (servidor de hackers ou robôs enviando spam, spoofing ou phishing).

O que acontece se não houver este registro?

Seu envio de e-mail funciona, entretanto pessoas e sistemas mau intencionados podem enviar e-mails em nome de seu domínio (spoofing, phishing) e os servidores de e-mail não saberão julgar se são confiáveis ou não.

Seus e-mails podem automaticamente cair na caixa de spam dos destinatários.

Outra consequência comum é recebimento de SPAMs em sua caixa de e-mails cujo remetente é você mesmo.

Como funciona?

Quando um servidor de e-mail recebe um e-mail com seu domínio (minha-empresa.com.br) como remetente ele:

  • realiza uma busca DNS por registros TXT em minha-empresa-com.br
  • escolhe o primeiro registro TXT que começa com o texto v=spf1
  • usam os parâmetros informados neste registro para verificar se o e-mail veio de uma fonte confiável ou não (se veio do IP correto, por exemplo) e com base nisso decide se o e-mail é aceito, aceito mas enviado para a caixa de spam ou rejeitado

MecanismoDescrição e valores permitidos
vA versão do SPF. Essa tag é obrigatória e precisa ser a primeira no registro. Esse mecanismo precisa ser:v=spf1
ip4Autoriza os servidores de e-mail por endereço ou intervalo de endereços IPv4. O valor precisa ser um endereço ou intervalo IPv4 no formato padrão, por exemplo:ip4:192.168.0.1ouip4:192.0.2.0/24
ip6Autoriza os servidores de e-mail por endereço ou intervalo de endereços IPv6. O valor precisa ser um endereço ou intervalo IPv6 no formato padrão, por exemplo:ip6:3FFE:0000:0000:0001:0200:F8FF:FE75:50DFouip6:2001:db8:1234::/48
aAutoriza servidores de e-mail por nome de domínio, por exemplo:a:solarmora.com
mxAutoriza um ou mais servidores de e-mail por registro MX do domínio, por exemplo:mx:mail.solarmora.comSe esse mecanismo não estiver no seu registro SPF, o valor padrão será os registros MX do domínio onde o registro SPF é usado.
includeAutoriza servidores de e-mail terceirizados por domínio, por exemplo:include:servers.mail.net
allEspecifica que precisa haver correspondência em todas as mensagens recebidas. Recomendamos que você sempre inclua esse mecanismo no seu registro SPF.Esse precisa ser o último mecanismo no registro SPF. Qualquer mecanismo que apareça depois de all em um registro SPF será ignorado.
Devo usar ~all ou -all?
Quando um registro SPF inclui ~all (qualificador softfail), os servidores de recebimento geralmente aceitam as mensagens de remetentes que não estão no seu registro SPF, mas marcam essas mensagens como suspeitas.
Quando um registro SPF inclui -all (qualificador fail), os servidores de recebimento podem rejeitar as mensagens dos remetentes que não estão no seu registro SPF. Caso seu registro SPF não esteja configurado corretamente, o qualificador fail poderá fazer mais mensagens do seu domínio serem enviadas para a pasta "Spam".

Dica: para evitar o spoofing de domínios que não enviam e-mails, use o registro SPF vspf1 ~all no seu domínio.
Parâmetros de configuração do registro SPF - Fonte: https://support.google.com/a/answer/10683907

Como configurar?

Neste site há um gerador de SPF com uma simples explicação de como cada parametro funciona https://easydmarc.com/tools/spf-record-generator

...

Registro DKIM (DKIM Record, DomainKeys Identified Mail)

Pra que serve?

Serve para permitir que servidores de e-mail ao receberem um e-mail com seu domínio (minha-empresa.com.br) como remetente consigam julgar se ele foi adulterado em trânsito.

O que acontece se não houver este registro?

Seu e-mail continua funcionando, mas seus e-mails podem ter seu conteúdo adulterados em trânsito.

Pessoas mau intencionadas podem enviar e-mails falsos em nome de seu domínio (usando alguns métodos específicos), aumentando a quantidade de spams enviados em seu nome.

* Vale ressaltar que spams e e-mails falsos podem continuar sendo enviados em nome de seu domínio mesmo com o DKIM ativo.

Como funciona?

  • Você gera um par de chaves assimétricas, uma privada e outra pública.
  • Configura o servidor de envio de e-mails (SMTP) para assinar (perceba que não é criptografar!) todos os e-mails com a chave privada gerada.
  • Publica um registro DNS DKIM para o seu domínio, informando nele a chave pública gerada.
  • Envia uma mensagem de seu e-mail para um destinatário x.
  • O servidor de e-mails do destinatário x baixa a chave pública informada no seu registro DNS DKIM.
  • O servidor de e-mails do destinatário x usa a chave pública baixada para verificar a assinatura no e-mail.
  • Se a assinatura for validada com sucesso, considera-se que o e-mail passou na validação DKIM e não foi adulterado em trânsito.

Os parâmetros spf são os seguintes :

Como configurar?

...

Registro DMARC (DMARC Record, Domain-based Message Authentication, Reporting and Conformance)

Pra que serve?

O Registro DMARC depende totalmente da existência do Registro SPF e do Registro DKIM. Ele diz ao servidor que está recebendo um e-mail de seu domínio como remetente o quê fazer com ele quando as verificações SPF e DKIM apontarem que algo está incorreto.

Considera-se que é a única forma real de prevenir que e-mails sejam enviados por seu domínio sem sua autorização (prevenção contra spoofing e phishing).

O que acontece se não houver este registro?

Seu e-mail continuará funcionando e poderá continuar enviando e-mails. Alguns de seus e-mails podem ir parar na caixa de SPAM dos destinatários dependendo de quão rigorosa é sua configuração de sistema anti spam dele (isso é muito ruim se você trabalha com e-mail marketing, mas não é tanto se você usa como troca de mensagens e documentos). Para a grande maioria dos servidores de e-mails suas mensagens não cairão em spam.

A maior desvantagem é que

Como funciona?

Você pode configurar alguns parâmetros, são eles:

TagObrigatória?Descrição e valores
vObrigatóriaVersão do DMARC. Precisa ser DMARC1.
pObrigatóriaInforma ao servidor de e-mail de recebimento o que fazer com as mensagens que não passam na autenticação.none -: não faz nada na mensagem e a entrega ao destinatário. Registra as mensagens em um relatório diário. O relatório é enviado ao endereço de e-mail especificado com a opção rua no registro.quarantine -: marca as mensagens como spam e as envia para a pasta de spam do destinatário. Os destinatários podem analisar mensagens de spam para identificar mensagens legítimas.reject -: rejeita a mensagem. Com esta opção, o servidor de recebimento geralmente envia uma mensagem de erro na entrega ao servidor de envio.Observação sobre o BIMI: se o domínio usa BIMI, a opção p do DMARC precisa ser definida como quarentine ou reject. O BIMI não é compatível com políticas DMARC que usam a opção p configurada como none.
pctOpcionalEspecifica o percentual de mensagens não autenticadas que estão sujeitas à política do DMARC. Ao implantar o DMARC gradualmente, você pode começar com uma pequena porcentagem das suas mensagens. À medida que mais mensagens do seu domínio passarem na autenticação nos servidores de recebimento, atualize o registro com uma porcentagem maior até atingir 100%.Precisa ser um número inteiro de 1 a 100. Se você não usar esta opção no registro, a política do DMARC será aplicada a todas as mensagens enviadas do seu domínio.Observação sobre o BIMI: caso seu domínio use o BIMI, a política do DMARC precisa ter um valor pct definido como 100. O BIMI não é compatível com o uso de políticas DMARC com um valor pct inferior a 100.
ruaOpcionalEndereço de e-mail para receber relatórios sobre a atividade do DMARC no seu domínio.O endereço de e-mail precisa incluir mailto:. Por exemplo, mailto:[email protected]Se você quiser enviar o relatório para vários endereços de e-mail, separe-os com uma vírgula.Esta opção pode resultar em um grande volume de e-mails de relatório. Não recomendamos usar seu endereço de e-mail. Você pode usar uma caixa de e-mails, um grupo ou um serviço de terceiros especializado em relatórios do DMARC.
rufNão compatívelO Gmail não é compatível com a tag ruf, usada para enviar relatórios de erros. Os relatórios de erros também são chamados de relatórios forenses.
spOpcionalDefine a política para as mensagens de subdomínios do seu domínio principal. Use essa opção para aplicar uma política DMARC diferente aos subdomínios.none - Take no action on the message and deliver it to the intended recipient. Log messages in a daily report. The report is sent to the email address specified with the rua option in the policy .quarantine -: marca as mensagens como spam e as envia para a pasta de spam do destinatário. Os destinatários podem analisar mensagens de spam para identificar mensagens legítimas.reject -: rejeita a mensagem. Com esta opção, o servidor de recebimento envia uma mensagem de erro na entrega ao servidor de envio.Se você não usar esta opção no registro, os subdomínios herdarão a política do DMARC do domínio pai.
adkimOpcionalDefine a política de alinhamento para DKIM, que especifica como as informações da mensagem precisam corresponder às assinaturas DKIM. Saiba como funciona o alinhamento.s -: alinhamento rigoroso. O nome de domínio do remetente precisa corresponder exatamente ao d=nomededominio nos cabeçalhos de e-mail DKIM.r - Relaxed alignment (default). Allows partial matches. Any valid subdomain of d=domain in the DKIM mail headers is accepted.
aspfOpcionalDefine a política de alinhamento para SPF, que especifica como as informações da mensagem precisam corresponder às assinaturas SPF. Saiba como funciona o alinhamento.s - : alinhamento rigoroso. O cabeçalho from: da mensagem precisa corresponder exatamente ao nome de domínio no comando SMTP MAIL FROM.r: alinhamento não rigoroso (padrão). Permite correspondências parciais. Qualquer subdomínio válido do nome de domínio é aceito.
Parâmetros de configuração do registro DMARC - Fonte: https://support.google.com/a/answer/2466563

Como configurar?

Exempo para registro em seusite.com

# Tipo do Registro DNS
TXT
# Nome do Registro DNS
_dmarc.seusite.com
# Valor do Registro DNS
v=DMARC1; p=quarantine; sp=none; rua=mailto:[email protected]; ruf=mailto:[email protected]

(na AWS Route53 e outras hospedagens é preciso estar entre aspas duplas)

Segurança baseada em TLS (Transport Layer Security) e SMTPS

...

Segurança baseada em criptografia de ponta a ponta com GnuPG

Esta é a opção mais segura para envio de mensagens e é ao mesmo tempo a mais inviável e trabalhosa de todas.

Ela requer que antes de qualquer troca de e-mails cada pessoa envolvida na conversa crie uma chave assimétrica (uma chave privada e uma pública), compartilhando sua chave pública com todos que deseja conversar.

Referências

Explicações sobre SPF, DKIM e DMARC
https://www.higherlogic.com/blog/spf-dkim-dmarc-email-authentication/ (Higher Logic)
https://support.google.com/a/answer/10583557 (Google Support)

Como funciona o DMARC?
https://support.google.com/a/topic/2759254 (Google Support Topicos DMARC)
https://support.google.com/a/answer/2466580 (Google Support - Sobre o DMARC)
https://www.clickz.com/why-not-having-dmarc-can-still-hurt-your-deliverability/ (Clickz)

Como funciona o DKIM?
https://www.sparkpost.com/resources/email-explained/dkim-domainkeys-identified-mail/ (Google Support)

Como funciona o SPF?
https://support.google.com/a/answer/33786 (Google Support - Sobre o SPF)
https://support.google.com/a/topic/10685331 (Google Support - Tópicos sobre SPF)
https://www.cloudflare.com/pt-br/learning/dns/dns-records/dns-spf-record/ (Cloud Flare)

Como configurar um Registro MX na Hostgator?
https://www.hostgator.com/help/article/mail-exchange-record-what-to-put-for-your-mx-record#scenario1

Como configurar DMARC?
https://suporte.hostgator.com.br/hc/pt-br/articles/360038720614-Por-que-os-e-mails-caem-como-spam-em-alguns-provedores-de-e-mail (Hostgator)

Por quê SPF e DKIM não são suficientes?
https://knowledge.ondmarc.redsift.com/en/articles/5042154-why-spf-dkim-are-not-enough-in-2021

SPF Record Checker
https://www.dmarcanalyzer.com/spf/checker/

Email Deliverability Checker
https://mxtoolbox.com/deliverability

You should also read: