O campo de cabeçalho de assinatura DKIM é um cabeçalho especial colocado em cada mensagem de e-mail com informações sobre o remetente, a mensagem e o local da chave pública necessários para a validação. Este campo de cabeçalho é obrigatório em todos os provedores de mailbox que usam o DKIM para validar sua identidade, incluindo AOL, Gmail, Outlook.com e Yahoo!.
Um exemplo de cabeçalho de assinatura DKIM é:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=news;
c=relaxed/relaxed; q=dns/txt; t=1126524832; x=1149015927;
h=from:to:subject:date:keywords:keywords;
bh=MHIzKDU2Nzf3MDEyNzR1Njc5OTAyMjM0MUY3ODlqBLP=;
b=hyjCnOfAKDdLZdKIc9G1q7LoDWlEniSbzc+yuU2zGrtruF00ldcF
VoG4WTHNiYwG
O cabeçalho da assinatura DKIM é composto de diferentes elementos informativos representados pelo uso de pares tag=valor. A tag geralmente é uma única letra seguida por um sinal de igual (=). O valor de cada tag indica uma informação específica sobre o remetente, a mensagem e o local da chave pública.
Existem inúmeras tags disponíveis para um remetente; algumas tags são necessárias, e outras tags são opcionais. A falta de uma tag obrigatória na assinatura DKIM leva a um erro de validação com o provedor de mailbox, enquanto que uma tag opcional não leva.
As tags incluídas na assinatura DKIM que não tiverem valor associado são tratadas como tendo valor vazio. No entanto, as tags não incluídas na assinatura DKIM são tratadas como tendo o valor padrão.
Tags obrigatórias
As tags obrigatórias de um cabeçalho de assinatura DKIM estão listadas a seguir. Quaisquer assinaturas DKIM sem essas tags apresentarão erro durante a validação.
- v= indica a versão da especificação da assinatura. O valor deve ser sempre definido em 1.
-
a= indica o algoritmo usado para gerar a assinatura. O valor deve ser rsa-sha256. Remetentes com capacidades reduzidas de CPU podem usar rsa-sha1. No entanto, o uso de rsa-sha1 não é recomendado, devido a possíveis riscos de segurança.
-
s= indica o nome do registro do seletor usado com o domínio para localizar a chave pública no DNS. O valor é um nome ou número criado pelo remetente.
-
Aqui está um exemplo de um registro de seletor de DNS. As tags mostradas neste exemplo só aparecem nesse registro dentro do DNS e não no cabeçalho do e-mail: <selector(s=)._domainkey.domain(d=)>. TXT v=DKIM1; k=rsa; p=<public key>
-
b= são os dados hash dos cabeçalhos listados na tag h=; esse hash também é chamado de assinatura DKIM e codificado em Base64.
-
bh= é o hash calculado do corpo da mensagem. O valor é uma string de caracteres que representa o hash determinado pelo algoritmo hash.
-
d= indica o domínio usado com o registro do seletor (s=) para localizar a chave pública. O valor é um nome de domínio de propriedade do remetente.
- h= é uma lista de cabeçalhos que serão usados no algoritmo de assinatura para criar o hash encontrado na tag b=. A ordem dos cabeçalhos na tag h= é a ordem na qual eles foram apresentados durante a assinatura do DKIM e, portanto, é também a ordem na qual eles devem ser apresentados durante a validação. O valor é uma lista de campos de cabeçalho que não são alterados nem removidos.
Tags opcionais e recomendadas
As tags opcionais que recomendamos incluir em um cabeçalho de assinatura DKIM estão listadas a seguir. As assinaturas DKIM sem essas tags não apresentarão erro durante a validação, mas são recomendadas para identificar o spam.
Os spammers normalmente não definem valores de tempo. Valores de tempo vazios ou incorretos, como data de expiração antes da marcação de data/hora do e-mail, farão com que alguns provedores de mailbox rejeitem a mensagem.
-
t= é a marcação de data/hora da assinatura DKIM. Serve para indicar a hora em que a mensagem é enviada. O formato é o número de segundos a partir de 00:00:00 de 1 de janeiro de 1970 no fuso horário UTC.
- x= é a hora-limite da assinatura DKIM no mesmo formato acima. O valor da tag this deve ser maior do que o valor da tag de marcação de tempo se ambos forem usados na assinatura DKIM. As assinaturas DKIM podem ser consideradas inválidas se o tempo de validação no validador tiver passado da data-limite; portanto, não defina a data-limite cedo demais.
Faça um teste completo para ver se as tags estejam funcionando corretamente e se o prazo de vencimento não foi definido logo após a implantação.
Tags opcionais
As tags opcionais não exigidas na assinatura DKIM estão listadas abaixo.
-
c= é o algoritmo de canonização para definir o nível de modificações que pode estar presente em um provedor de mailbox quando o e-mail estiver em trânsito para o provedor de mailbox. As modificações podem incluir espaço em branco ou quebra de linha. Alguns servidores de e-mail fazem pequenas modificações no e-mail durante o trânsito, o que pode invalidar a assinatura.
- O valor que define o nível de tolerância que o servidor de destino deve ter quando uma mensagem possui essas pequenas modificações é: valor1/valor2.
Valor1 representa o cabeçalho da mensagem, e valor2 representa o corpo da mensagem. Valor1 e valor2 podem ser rotulados como “simples”, o que tolera muito pouca modificação, se houver; ou “relaxado”, o que tolera modificações comuns.
- i= indica a identidade do usuário ou agente O valor é um endereço de e-mail contendo o domínio ou subdomínio, conforme definido na tag d=.
Tags opcionais e não recomendadas
-
l= é o número de caracteres do corpo da mensagem que foram usados para calcular o hash do corpo (bh=). Se esse valor não estiver lá, presume-se que todo o corpo da mensagem foi usado. Não recomendamos usar essa tag, pois ela é difícil de controlar e pode levar a erros na validação.
- z= é uma lista dos cabeçalhos originais da mensagem e pode diferir dos cabeçalhos listados na tag h=. Essa tag pode ser usada por alguns provedores de mailbox no processo de diagnóstico de um erro de validação. Seu valor não é bem definido.
Tags não reconhecidas
Tags não especificadas no RFC 6376 não fazem parte do protocolo DKIM e devem ser ignoradas durante o processo de validação. Nem todos os provedores de mailbox ignoram tags não reconhecidas; portanto, pode haver erro durante o processo de validação.
Você pode encontrar informações completas sobre a assinatura DKIM no site DKIM ou no RFC 6376.