Aunque creo que el error de @kvsf ya está solucionado o que se han cambiado algunas cosas fundamentales en tu configuración, me gustaría continuar este hilo publicando mi propia configuración, mi enfoque adicional y mi búsqueda de ayuda dentro del mismo dominio de problemas.
Configuración Básica
- Google Workspace Business Starter
- Configurar Gmail-Routing > SMTP-Relay con i) solo usuarios registrados dentro del dominio, ii) lista blanca de IP con la IP de mi servidor de alojamiento de foros y forzar autenticación SMTP, iii) forzar TLS
- Instalación de discourse docker según la documentación de discourse
- Configuración de
app.yml según
expose:
- "80:80" # http
- "443:443" # https
env:
DISCOURSE_HOSTNAME: "forum.mydomain.com"
DISCOURSE_DEVELOPER_EMAILS: 'dev@mydomain.com'
DISCOURSE_SMTP_ADDRESS: "smtp-relay.gmail.com"
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "user@mydomain.com"
DISCOURSE_SMTP_PASSWORD: "mypass"
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_OPEN_TIMEOUT: 25
DISCOURSE_SMTP_READ_TIMEOUT: 25
DISCOURSE_SMTP_DOMAIN: "mydomain.com"
DISCOURSE_NOTIFICATION_EMAIL: "noreply@mydomain.com"
LETSENCRYPT_ACCOUNT_EMAIL: dev@mydomain.com
Mis Pruebas
Al ejecutar ./discourse-doctor, esta configuración genera el error
Testing sending to ...
SMTP server connection successful.
Sending to artificial.testadress@gmail.com. . .
Sending mail failed.
end of file reached
Primero revisé los diferentes registros de discourse y de correo electrónico
Probando manualmente el mismo proceso desde dentro de docker (conectando usando docker exec -it <CONTAINER_ID> bash) a través de
openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587
no presenta problemas y funciona bien. Así que creo que o mi configuración de parámetros en app.yml es extraña O discourse internamente tiene alguna mala comunicación de scripts O … tantas posibilidades. ^^
Para no tener que ejecutar siempre ./launcher rebuild app después de cambiar app.yml para probar diferentes configuraciones, comencé a editar directamente /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb cambiando el código existente a:
class SMTP
attr_accessor :settings
DEFAULTS = {
:address => 'smtp-relay.gmail.com',
:port => 587,
:domain => 'mydomain.com',
:user_name => 'user@mydomain.com',
:password => 'mypass',
:authentication => 'login',
:enable_starttls => nil,
:enable_starttls_auto => true,
:openssl_verify_mode => 'peer',
:ssl => nil,
:tls => nil,
:open_timeout => 25,
:read_timeout => 25
}
def initialize(values)
self.settings = DEFAULTS #.merge(values)
end
lo que lleva al mismo comportamiento que el anterior (dadas las configuraciones personalizadas de app.yml).
Búsqueda de ayuda
Y ahora estoy atascado. Por supuesto, podría jugar más con las configuraciones restantes (e incluso podría volver a usar SSL solamente, aunque esto está obsoleto por discourse), pero me gustaría:
- aprender cómo analizar este problema más profunda y extensamente
- comprender así qué está pasando realmente y cuál es el problema
- solucionarlo y poder usar todo sin problemas (+ finalmente poner en marcha el foro correctamente)
Gracias de antemano por tu ayuda.