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
Mecanismo | Descrição e valores permitidos |
---|---|
v | A versão do SPF. Essa tag é obrigatória e precisa ser a primeira no registro. Esse mecanismo precisa ser:v=spf1 |
ip4 | Autoriza 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.1 ouip4:192.0.2.0/24 |
ip6 | Autoriza 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:50DF ouip6:2001:db8:1234::/48 |
a | Autoriza servidores de e-mail por nome de domínio, por exemplo:a:solarmora.com |
mx | Autoriza um ou mais servidores de e-mail por registro MX do domínio, por exemplo:mx:mail.solarmora.com Se 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. |
include | Autoriza servidores de e-mail terceirizados por domínio, por exemplo:include:servers.mail.net |
all | Especifica 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. |
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:
Tag | Obrigatória? | Descrição e valores |
v | Obrigatória | Versão do DMARC. Precisa ser DMARC1. |
p | Obrigatória | Informa 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. |
pct | Opcional | Especifica 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. |
rua | Opcional | Endereç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. |
ruf | Não compatível | O 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. |
sp | Opcional | Define 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. |
adkim | Opcional | Define 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. |
aspf | Opcional | Define 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. |
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