MSMTP com OAuth2: mudanças entre as edições
Sem resumo de edição |
Sem resumo de edição |
||
Linha 61: | Linha 61: | ||
[[Arquivo:Google8.png|nenhum|miniaturadaimagem|1160x1160px]] | [[Arquivo:Google8.png|nenhum|miniaturadaimagem|1160x1160px]] | ||
Na tela de escopo só clicar em salvar e continuar: | Na tela de escopo só clicar em salvar e continuar: | ||
[[Arquivo:Google9.png|nenhum|miniaturadaimagem|1588x1588px]] | [[Arquivo:Google9.png|nenhum|miniaturadaimagem|1588x1588px]]Não vamos adicionar um usuário de teste e clicamos em salvar e continuar: | ||
[[Arquivo:Google10.png|nenhum|miniaturadaimagem|1589x1589px]] | |||
Clique em voltar para o Painel: | |||
[[Arquivo:Google11.png|nenhum|miniaturadaimagem|1592x1592px]] | |||
Agora vamos colocar em produção clicando em '''PUBLICAR APLICATIVO''': | |||
[[Arquivo:Google12.png|nenhum|miniaturadaimagem|1591x1591px]] | |||
Na sequência clique em confirmar para que seja publicado: | |||
[[Arquivo:Google13.png|nenhum|commoldura]] | |||
Agora que já publicamos nosso app '''msmtp''', vamos criar as credenciais de acesso dele: | |||
[[Arquivo:Google14.png|nenhum|miniaturadaimagem|1576x1576px]] | |||
Em credenciais vamos clicar em criar credenciais e escolher a opção '''ID do cliente OAuth''': | |||
[[Arquivo:Google15.png|nenhum|miniaturadaimagem|1578x1578px]] | |||
Nessa tela vamos selecionar '''Aplicativo da Web''': | |||
[[Arquivo:Google16.png|nenhum|miniaturadaimagem|1580x1580px]] | |||
Vamos dar um nome para ele, deixei como '''msmtp''' mesmo e precisamos adicionar na '''URI de redirecionamento autorizados''' o endereço '''<nowiki>https://oauth2.dance/</nowiki>''' e em seguida clicar em criar: | |||
[[Arquivo:Google17.png|nenhum|miniaturadaimagem|1583x1583px]] | |||
Na próxima tela será exibido o '''ID do cliente''' e a '''Chave secreta do cliente'''. Copie esses 2 dados porque vamos precisar lá na frente e tome cuidado com eles, para que não sejam usados por pessoas não autorizadas: | |||
[[Arquivo:Google18.png|nenhum|commoldura]] |
Edição das 23h26min de 17 de maio de 2024
Objetivo
O objetivo deste artigo é ajudar os administradores de sistemas que usam Debian, a configurar o programa msmtp para envio de mensagens utilizando a autenticação por OAuth2. Também pode ser configurado em outras distribuições GNU/Linux bastando seguir o mesmo raciocínio. Quem já visitou esse artigo para fazer a configuração básica de um servidor Debian, vai poder usar esse artigo aqui para modificar a forma de autenticação.
Para quem não sabe o msmtp é um programa que vem em diversas distribuições GNU/Linux e ela tem a função de ser um sender de e-mail, ou seja, você não precisa de ter um MTA server configurado em seu servidor para enviar alertas, logs, etc por e-mail, basta configurar por exemplo uma conta Gmail nele e quando algum programa seu no servidor enviar uma mensagem, este se conectará ao Gmail e irá enviar a mensagem por lá.
Motivação
O Google já vem de longa data fazendo mudanças para remover a velha autenticação de apps usando user e password tradicionais. Mas o que isso pode impactar para nós administradores de sistemas, que cuidamos de diversos servidores? Pois bem, se você é como eu e configura seus sistemas para enviar notificações com logs, relatórios, alertas, etc por e-mail usando a técnica de autenticação por usuário e senha de apps do Google. isso vai acabar conforme essa notícia oficial do Google aqui.
Exemplos da configuração antiga e nova
Antes de iniciarmos, apenas para termos uma ideia de como é a configuração legada e como será a nova:
Abaixo a configuração legada usando user e password:
defaults port 587 tls on tls_trust_file /etc/ssl/certs/ca-certificates.crt account ISPUP protocol smtp host smtp.gmail.com from [email protected] auth login user [email protected] password xxctxxxxszxxxxzs account default : ISPUP
Essa outra abaixo já está usando o OAuth2:
defaults host smtp.gmail.com port 587 protocol smtp tls on tls_trust_file /etc/ssl/certs/ca-certificates.crt account ISPUP auth oauthbearer from [email protected] user [email protected] passwordeval python3 /root/.config/msmtp/getmail-gmail-xoauth-tokens /root/.config/msmtp/ispup.json account default : ISPUP
Bem isso foi apenas para mostrar visualmente as diferenças. Seguiremos agora com a mão na massa. Para esse artigo estarei usando o Debian 12 (Bookworm) mas é bem simples de replicar em outras distribuições GNU/Linux.
Criando acesso API no Google Cloud
Para que possamos usar esse tipo de autenticação, vamos precisar criar um projeto no Google Cloud, uma aplicação e gerar as credenciais de acesso para essa aplicação. Se você já possui essas informações então só pular essa parte. Para essa tarefa acesse esse link e vamos seguir as telas abaixo:
Inicie fazendo a autenticação com a conta de e-mail que você irá administrar seu Google Cloud:

Precisa concordar com os termos para seguir em frente:

Nessa tela vamos criar nosso projeto, então siga a seta.

Vamos dar um nome ao projeto, no meu exemplo chamei de ISPUP e clicar em criar:

Após criar o projeto precisamos configurar as permissões em CONFIGURAR TELA DE CONSENTIMENTO:

Vamos selecionar para tipo de uso externo e clicar em criar:

Nessa tela vamos informar o app que vamos criar, dei o nome de msmtp mesmo, defini o e-mail de contato:

Ainda na mesma tela mais abaixo vamos adicionar um domínio autorizado que se chama oauth2.dance. Esse é o domínio usado pelo script do Google para nos gerar os tokens:

Na tela de escopo só clicar em salvar e continuar:

Não vamos adicionar um usuário de teste e clicamos em salvar e continuar:

Clique em voltar para o Painel:

Agora vamos colocar em produção clicando em PUBLICAR APLICATIVO:

Na sequência clique em confirmar para que seja publicado:

Agora que já publicamos nosso app msmtp, vamos criar as credenciais de acesso dele:

Em credenciais vamos clicar em criar credenciais e escolher a opção ID do cliente OAuth:

Nessa tela vamos selecionar Aplicativo da Web:

Vamos dar um nome para ele, deixei como msmtp mesmo e precisamos adicionar na URI de redirecionamento autorizados o endereço https://oauth2.dance/ e em seguida clicar em criar:

Na próxima tela será exibido o ID do cliente e a Chave secreta do cliente. Copie esses 2 dados porque vamos precisar lá na frente e tome cuidado com eles, para que não sejam usados por pessoas não autorizadas:
