Fizzy y SMTP: dónde vive el código mágico cuando el email falla

admin · 2 min

Fizzy usa magic links para autenticación: genera un código de acceso, lo envía por email y lo guarda en SQLite. Cuando el email no llega, hay que saber exactamente dónde mirar.

Configuración SMTP necesaria

Fizzy requiere cinco variables SMTP para enviar email correctamente. Cualquiera que falte puede hacer que el envío falle silenciosamente:

SMTP_ADDRESS: smtppro.zoho.eu
SMTP_PORT: 587
SMTP_USERNAME: envio@dato.digital
SMTP_PASSWORD: ...
SMTP_AUTHENTICATION: plain    ← esta variable se olvida frecuentemente

Verificar que están todas en el contenedor:

docker exec app-fizzy-1 env | grep -E '^SMTP_|^MAILER_'

Consultar el código directamente en SQLite

Fizzy guarda los magic links en /rails/storage/production.sqlite3. Si el email no llega, el código puede recuperarse directamente:

docker exec app-fizzy-1 sh -lc "sqlite3 /rails/storage/production.sqlite3 "
  SELECT identities.email_address, magic_links.code, magic_links.expires_at
  FROM magic_links
  JOIN identities ON identities.id = magic_links.identity_id
  WHERE identities.email_address = 'usuario@dominio.com'
  ORDER BY magic_links.created_at DESC LIMIT 5;
""

Verificar que existe la identidad

Si el usuario existe en Authentik pero no en Fizzy, el login falla porque no hay Identity asociada:

docker exec app-fizzy-1 sh -lc "sqlite3 /rails/storage/production.sqlite3 "
  SELECT id, email_address, created_at FROM identities
  WHERE email_address = 'usuario@dominio.com';
""

# Si no devuelve nada, crear la identidad:
docker exec app-fizzy-1 sh -lc "cd /rails && bin/rails runner   "Identity.find_or_create_by!(email_address: 'usuario@dominio.com')""

O usar el target del Makefile, que además sincroniza el grupo en Authentik:

make kanban-user email='usuario@dominio.com' name='Nombre Apellido'
admin

Editor en D4R.