Corregir errores en Bulk mail
La plataforma en su opción de notificaciones por curso, tiene un error, ya que al estar preparando el correo, genera un from_mail extraño, por ejemplo si el correo que usas para notificaciones es notificar@example.com, la función agrega parte del nombre del curso, algo como DemoX-notificar@example.com, esta opción no es raro que se haga cuando enmascaras el correo, pero por una extraña razón la función manda el correo modificado a los parámetros de autentificación de correo electrónico, mandando error en la plataforma.
Adjunto un fragmento del log para que puedan ubicarlo:
May 30 00:44:44 edu [service_variant=lms][edx.celery.task][env:sandbox] ERROR [edu 1380] [tasks.py:686] - Task 3434e424-b73e-45e8-8834-6712c3e1036f: email with id 4 caused send_course_email task to fail with "fatal" exception. 6 emails unsent.
Traceback (most recent call last):
File "/edx/app/edxapp/edx-platform/lms/djangoapps/bulk_email/tasks.py", line 567, in _send_course_email
connection.send_messages([email_msg])
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 111, in send_messages
sent = self._send(message)
File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 127, in _send
self.connection.sendmail(from_email, recipients, message.as_bytes(linesep='\r\n'))
File "/usr/lib/python2.7/smtplib.py", line 747, in sendmail
raise SMTPRecipientsRefused(senderrs)
SMTPRecipientsRefused: {u'sbernesto@gmail.com': (550, 'Verification failed for <DemoX-edu@bunited.mx>\nNo Such User Here"\nSender verify failed')}
May 30 00:44:44 edu [service_variant=lms][edx.celery.task][env:sandbox] ERROR [edu 1380] [tasks.py:326] - Send-email task 3434e424-b73e-45e8-8834-6712c3e1036f for email 4: failed: {u'sbernesto@gmail.com': (550, 'Verification failed for <DemoX-edu@example.com>\nNo Such User Here"\nSender verify failed')}
Como pueden ver la ultima línea, se puede leer la modificación del correo, les menciono que este error lo pude identificar con un correo debido a que este no pertenece a gsuite o office365, ya que estos solo hacen referencia a un error de autentificación.
Bueno para resolverlo debemos de seguir los siguientes pasos:
- Abrir archivo con su editor favorito:
/edx/app/edxapp/edx-platform/lms/djangoapps/bulk_email/tasks.py
- Ubicar la funcion format_address o ir la linea 407 aprox o ubicar la linea:
from_addr = format_address(course_title_no_quotes)
- Sustituir el valor:
from_addr = settings.BULK_EMAIL_DEFAULT_FROM_EMAIL
- Compilar el archivo modificado:
python -m compileall task.py
- Cambiar el dueño del archivo compilado:
chown edxa:edxapp task.pyc
- Reiniciar todos los servicios:
/edx/bin/supervisorctl restart all
- Probar que envie el correo
Hice una grabación con asciinema para que puedan ver la modificación, es la primera que hago y espero mejorar en los próximos post estos videos.