Gmail con tu propia aplicación de Google
Inicia sesión en Gmail con OAuth mediante una aplicación de Google que creas tú, cuando no hay contraseñas de aplicación.
Gmail funciona con una contraseña de aplicación, y mail usa una por defecto. Usa OAuth en su lugar cuando no puedas
crear una contraseña de aplicación: la cuenta no tiene verificación en dos pasos, o un dominio de Google Workspace
desactiva las contraseñas de aplicación. mail no tiene una aplicación de Google propia para el correo (Google exige
una revisión de seguridad de pago a una aplicación que lee el correo de otras personas), así que inicias sesión a
través de una aplicación que creas tú. Lleva unos 20 minutos y no cuesta nada.
1. Un proyecto de Google Cloud solo para el correo
Abre Google Cloud Console y elige New Project (Proyecto nuevo) en el selector de proyectos. Ponle un nombre, por ejemplo «mail for me», y mantenlo seleccionado en todos los pasos siguientes.
Usa un proyecto nuevo aunque ya tengas uno para drive o gcal. Cuando se revoca un inicio de sesión, Google quita
todos los permisos concedidos a ese proyecto, para cada aplicación que contenga
(aplicaciones instaladas): un proyecto
compartido cerraría también la sesión de drive y de gcal.
2. Pantalla de consentimiento
Abre ☰ → Google Auth platform → Branding (enlace directo) y elige Get Started. Indica un nombre de aplicación («mail for me»), tu dirección como correo de asistencia y de contacto, y el público External (o Internal para una cuenta de Workspace que solo usas tú). Créala.
3. Permiso
Abre Google Auth platform → Data Access (enlace directo), elige
Add or Remove Scopes y añade https://mail.google.com/ a mano en el campo de entrada manual. Guarda. Es el único
ámbito (scope) que Gmail ofrece para IMAP y SMTP
(XOAUTH2). mail también pide openid y
email, para comprobar que iniciaste sesión con la cuenta correcta.
La página de Google no dice si hay que activar la API de Gmail solo para IMAP. Si el inicio de sesión funciona y luego
session status --check falla, activa la
API de Gmail en este proyecto e inténtalo de
nuevo.
4. Publica la aplicación (Production), sin verificación
Abre Google Auth platform → Audience (enlace directo) y elige Publish app; después confirma. No la envíes a verificación.
Mientras una aplicación External está en Testing, Google cierra sus inicios de sesión a los 7 días (caducidad del token de actualización), y una sincronización programada se detiene una vez por semana. Una aplicación publicada conserva el inicio de sesión. Google no pide verificación a una aplicación personal con menos de 100 usuarios (excepciones); al iniciar sesión muestra «Google hasn't verified this app»: elige Advanced y después Go to mail for me (unsafe). Es tu propia aplicación.
Si dejas la aplicación en Testing, añade tu dirección en Test users y cuenta con ejecutar session start cada
semana; mail doctor avisa a partir del sexto día.
5. Cliente de escritorio
Abre Google Auth platform → Clients (enlace directo), elige
Create Client, Application type → Desktop app, un nombre y Create. Elige Download JSON y guarda el
archivo fuera de cualquier repositorio. Hazlo legible solo para ti, o mail lo rechaza:
chmod 600 ~/Downloads/client_secret_*.jsonEl archivo nombra la aplicación; no es tu acceso. mail lo lee una vez, al iniciar sesión, y guarda el id y el secreto
de la aplicación junto con los tokens en el llavero.
6. Inicia sesión
Un perfil nuevo:
mail gm session start --address [email protected] --client-file ~/Downloads/client_secret_XXXX.json--client-file es lo que hace que un perfil nuevo de Gmail inicie sesión con OAuth. Un perfil de Gmail que ahora usa
una contraseña de aplicación: cámbialo primero, en una terminal (un agente no puede cambiar auth):
mail gm config set auth oauth
mail gm session start --client-file ~/Downloads/client_secret_XXXX.jsonEl navegador abre la página de Google. Elige la cuenta, permite el acceso, y mail comprueba la dirección e inicia
sesión en IMAP antes de guardar nada. En un perfil que ya cambió a OAuth, MAIL_GOOGLE_CLIENT_ID y
MAIL_GOOGLE_CLIENT_SECRET pueden sustituir a --client-file.
Cerrar sesión
mail gm session end olvida el inicio de sesión en este ordenador y conserva el correo. --revoke además pide a Google
que lo revoque, lo que quita todos los permisos de todo el proyecto de Google; con un proyecto solo para el correo, eso
es únicamente mail.