ruby on rails - from - ¿Cómo puedo depurar el envío de correo electrónico en Gitlab?
gitlab from command line (5)
Mi Gitlab (versión 5) no está enviando ningún correo electrónico y estoy perdido tratando de averiguar qué está sucediendo. Los registros no dan ninguna información útil. Lo configuré para usar sendmail
.
Escribí un pequeño script que envía un correo electrónico a través de ActionMailer (supongo que es lo que Gitlab usa para enviar un correo electrónico, ¿verdad?). Y envía el e-mail correctamente.
Pero, en mi Gitlab, puedo garantizar que ni siquiera se está llamando a sendmail.
¿Necesito habilitar algo para recibir notificaciones por correo electrónico? ¿Cómo puedo depurar mi problema?
Actualizar
El problema es que no puedo encontrar ninguna información en ningún lado. La cosa simplemente falla silenciosamente. ¿Dónde puedo encontrar algún tipo de registro? Los registros en el directorio de log
no proporcionan información útil.
Mi pregunta es, ¿cómo puedo hacer que Gitlab sea más detallado? ¿Cómo puedo hacer que me diga lo que está pasando?
Actualización 2
Acabo de encontrar una gran cantidad de correos programados en la sección Background jobs
. Un montón de Sidekiq::Extensions::DelayedMailer
. Qué significa eso? ¿Por qué no se procesaron estos trabajos?
En la sección de administración, bajo Trabajos en segundo plano, si tiene muchos elementos en la pestaña Programado, intente reiniciar sidekiq
:
cd /home/git/gitlab
exec rake sidekiq:start RAILS_ENV=production
Encontré este problema hoy, aquí está mi investigación:
La depuración de conexiones SMTP en la GUI de GitLab no es compatible todavía. Sin embargo, hay una solicitud de función pendiente y una solución de línea de comandos .
Establezca la configuración SMTP deseada /etc/gitlab/gitlab.rb
y ejecute gitlab-ctl reconfigure
(consulte https://docs.gitlab.com/omnibus/settings/smtp.html ).
Inicie la consola ejecutando la gitlab-rails console production
la consola de gitlab-rails console production
.
Muestre el método de entrega configurado (debe ser :smtp
) ejecutando el comando ActionMailer::Base.delivery_method
. Mostrar todas las configuraciones SMTP configuradas ejecutando ActionMailer::Base.smtp_settings
.
Para enviar una prueba de ejecución de correo
Notify.test_email(''[email protected]'', ''Hello World'', ''This is a test message'').deliver_now
En la página de administración de GitLab, la sección "Trabajos en segundo plano" muestra información sobre todos los trabajos. Las conexiones SMTP que fallan también se enumeran allí.
Tenga en cuenta que es posible que deba reiniciar la instancia de GitLab para usar las configuraciones SMTP recién configuradas (en mi instancia, la consola pudo enviar correos, la GUI requirió un reinicio). Ejecute gitlab-ctl restart
para reiniciar su instancia.
Primero, le diré cuál fue mi problema: el sidekiq es responsable de manejar el envío de correos electrónicos. Por alguna razón, mi sidekiq estaba atascado, al reiniciarlo se solucionó el problema.
Donde encontré información sobre problemas que encontré en Gitlab:
- Los registros de dir. Tiene algunas informaciones.
- En la página de administración, la sección "Trabajos en segundo plano" proporciona información sobre el sidekiq.
- La consola javascript (si su navegador lo admite) también tiene información útil. Sólo si su problema está relacionado con javascript.
Y si llega a este punto, puede modificar el código de Gitlab para que pueda "rastrearlo" escribiendo en un archivo:
File.open(''/tmp/logfile'',''a'') { |file| file.write("Hello World!/n") }
Tal vez intente habilitar los errores de entrega en el modo de producción y vea qué sucede
config.action_mailer.raise_delivery_errors = true
Tuve el mismo problema y encontré que necesitaba modificar application.rb:
diff --git a/config/application.rb b/config/application.rb
index d85bcab..274976f 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -11,6 +11,8 @@ end
module Gitlab
class Application < Rails::Application
+ config.action_mailer.sendmail_settings = { :arguments => "-i" }
+
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
Nota: estoy ejecutando Debian 7, que usa exim para correo.