Configurando DKIM para Google Workspace (Gmail) usando Terraform e AWS Route 53
DKIM (DomainKeys Identified Mail) e uma tecnica critica de autenticacao de email que ajuda a prevenir falsificacao de email. Usando DKIM, voce...

DKIM (DomainKeys Identified Mail) e uma tecnica critica de autenticacao de email que ajuda a prevenir falsificacao de email. Ao usar DKIM, voce assina digitalmente os cabecalhos do seu email com uma chave privada, e o destinatario verifica essa assinatura usando sua chave publica, que e armazenada nos registros DNS do seu dominio. O Google Workspace (anteriormente G Suite) aproveita o DKIM para garantir que os emails enviados do seu dominio sejam verificados como vindos de voce e nao de um spammer fingindo ser voce.
Neste artigo, vamos mergulhar em como usar o Terraform para configurar o DKIM para o Google Workspace, usando o AWS Route 53 para gerenciamento de DNS. Esta abordagem e perfeita se voce ja esta gerenciando sua infraestrutura como codigo e quer automatizar o processo de criacao de registros DNS para DKIM.
Vamos decompor o bloco Terraform que voce forneceu e passar passo a passo pelo que cada parte faz.
1. Visao Geral do Processo DKIM
Antes de mergulhar no codigo Terraform, vamos recapitular como o DKIM funciona:
- Assinando Emails de Saida: O Google Workspace assina os cabecalhos dos emails de saida com uma chave privada. O proprietario do dominio configura a chave publica como um registro DNS.
- Verificando Emails de Entrada: O servidor de email do destinatario busca a chave publica no DNS para verificar a assinatura e garantir que o email nao foi adulterado durante o transito.
Para configurar o DKIM, voce criara um registro TXT no seu DNS, contendo a chave publica gerada pelo Google Workspace.
2. Desconstruindo o Bloco Terraform
O bloco Terraform fornecido cria um registro TXT no AWS Route 53, que e essencial para publicar a chave publica DKIM para o Google Workspace. Aqui esta uma decomposicao de cada parte do bloco:
a. Variavel Local para Registro DKIM
locals {
dkim_record = "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4FbZGvaSuBW9yDhuswEA6S7QRRZlvvS3Rc6xRK92QJ44+IUoobJf+S3VZGSjdv5Jmpu57JGaq1KsObB5DwObvCW6yhJb6rGd0bgXqTzkfHH7sxnkEbDbNEIyUhxuEbUdWE1KtFz0QMb+GMhxC+j+kntpXtVDWugp9lSa7cnkFVho/gRwVkz47QFD1kQjvP9/QraYZo63M5DObFRFF4rDHvBzNTGl6+FC0OkyA49f19iw1+eFtLWu8BpVIn4HxxZWn04i1KHnm1AX9BztBAoVbJ0ZlF1tEJ5eLMPQg5l0BUcSEYi1RcBKTJU+AJ17fGAJEGr7Ft47SJgHdN9XUPH9NwIDAQAB"
}Aqui, o bloco locals define uma variavel local dkim_record. Esta variavel armazena a chave publica DKIM no formato necessario para o DNS.
- v=DKIM1: Especifica a versao do DKIM sendo usada.
- k=rsa: O tipo de criptografia usada; o Google normalmente usa RSA.
- p=MIIBIjAN...: A propria chave publica. Esta chave e gerada pelo Google Workspace e e unica para o seu dominio.
b. Criando o Registro DKIM no Route 53
resource "aws_route53_record" "google_domainkey_TXT" {
zone_id = aws_route53_zone.domain_com.zone_id
name = "google._domainkey"
type = "TXT"
ttl = 300
records = [
replace(local.dkim_record, "/(.{255})/", "$1\"\"")
]
}Este bloco de recurso aws_route53_record e responsavel por criar o registro DNS na sua zona hospedada do Route 53. Vamos decompor cada atributo:
zone_id: Refere-se a zona hospedada no AWS Route 53 onde o registro sera adicionado. Oaws_route53_zone.domain_com.zone_idreferencia a zona Route 53 para seu dominio, que o Terraform pode gerenciar dinamicamente.name: O atributonameespecifica o nome DNS para o registro. Neste caso, esta configurado comogoogle._domainkey. Este e o subdominio especifico que o Google Workspace espera para armazenar registros DKIM.type: O tipo de registro e configurado comoTXT. Registros DKIM sao armazenados como registrosTXTno DNS.ttl: O TTL (Time to Live) e configurado para300segundos (5 minutos). Isso determina por quanto tempo os resolvedores DNS devem armazenar em cache o registro antes de busca-lo novamente.records: Este campo contem o conteudo real do registro TXT, que e a chave publica DKIM. Como as chaves publicas DKIM podem frequentemente exceder 255 caracteres (o comprimento maximo para um unico registro DNS TXT), o Terraform usa uma funcaoreplace()para dividir a string em pedacos de 255 caracteres.
c. Dividindo Registros DKIM Longos
A funcao replace() usada nesta configuracao e critica:
replace(local.dkim_record, "/(.{255})/", "$1\"\"")Esta linha garante que o registro DKIM seja dividido em secoes menores de 255 caracteres, ja que servidores DNS tem um limite de quao longo um unico registro TXT pode ser. A funcao replace() usa uma expressao regular para quebrar a string nesses pedaços e adiciona as aspas necessarias entre eles.
3. Por que Usar Terraform para DKIM?
Existem algumas boas razoes para usar Terraform para configurar seus registros DNS DKIM:
- Gerenciamento Automatizado de DNS: Com Terraform, voce pode gerenciar seus registros DNS do Route 53 como codigo. Isso torna facil versionar suas configuracoes de DNS, garantir consistencia e reduzir erros manuais.
- Repetibilidade: Uma vez que o script Terraform esteja escrito, voce pode facilmente aplica-lo em varios ambientes ou dominios. Isso e especialmente util para gerenciar varios dominios ou quando voce precisa reprovisionar infraestrutura.
- Infraestrutura como Codigo (IaC): Gerenciar infraestrutura usando codigo permite melhor documentacao, colaboracao e auditoria. Quaisquer alteracoes nas suas configuracoes de DNS sao registradas no seu sistema de controle de versao (ex.: Git), dando a voce um historico claro de quem fez alteracoes e por que.
4. Passos para Configurar DKIM para Google Workspace
Para completar a configuracao do DKIM para Google Workspace, voce precisara seguir estes passos:
- Gerar a chave DKIM no Google Workspace:
- Va para seu Google Admin Console.
- Navegue para Apps > Google Workspace > Gmail > Authenticate Email.
- Gere uma nova chave DKIM para seu dominio e copie a chave publica fornecida.
- Aplicar a Configuracao Terraform:
- No seu arquivo de configuracao Terraform, defina a variavel local
dkim_recordcom a chave publica gerada pelo Google Workspace. - Execute os seguintes comandos para aplicar a configuracao ao AWS Route 53:
- No seu arquivo de configuracao Terraform, defina a variavel local
terraform init
terraform plan
terraform apply- Isso criara o registro
TXTDKIM na sua zona DNS do Route 53.
- Habilitar Assinatura DKIM no Google Workspace:
- Apos o registro DNS ter se propagado (isso pode levar alguns minutos), retorne ao Google Admin Console.
- Volte para a pagina Authenticate Email e clique em Start Authentication. Isso habilita a assinatura DKIM para seu dominio.
5. Verificando Sua Configuracao DKIM
Uma vez que o DKIM estiver habilitado, voce pode testar se esta funcionando enviando um e-mail da sua conta Google Workspace para um servico como DKIMCore's DKIM validator ou outras ferramentas de teste de email. Esses servicos dirao se a assinatura DKIM esta sendo aplicada corretamente e se o registro DNS esta configurado adequadamente.
Conclusao
Usar Terraform para gerenciar registros DKIM para Google Workspace e AWS Route 53 simplifica o processo de configurar e manter sua configuracao de autenticacao de email. Ao automatizar isso com Infraestrutura como Codigo (IaC), voce ganha os beneficios de reprodutibilidade, auditabilidade e facilidade de gerenciamento, tudo isso garantindo que seus emails estejam protegidos contra falsificacao e outros ataques baseados em email.
Com esta configuracao, voce agora tem uma configuracao DKIM solida que aumenta a seguranca de suas comunicacoes por email, garantindo que os destinatarios possam confiar nas mensagens que voce envia do seu dominio. Boas aventuras com Terraform!
Mais de Ercan
Mais dois sites, mesmo autor, terreno diferente.
IA, LLMs, agentes, ML aplicado.
Notas de campo sobre cargas de IA. Análise de custos do Bedrock, padrões de agentes, trade-offs de armazenamento vetorial, modos de falha em produção.
Visitar ercan.ai →O hub. Sobre, consultoria, contato.
Hub pessoal para as duas trilhas de escrita. Quem sou eu, como funciona a consultoria, como me contatar.
Visitar ercanermis.com →