Corregir errores en Bulk mail

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 [email protected], la función agrega parte del nombre del curso, algo como [email protected], 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'[email protected]': (550, 'Verification failed for <[email protected]>\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'[email protected]': (550, 'Verification failed for <[email protected]>\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:

  1. Abrir archivo con su editor favorito:
    /edx/app/edxapp/edx-platform/lms/djangoapps/bulk_email/tasks.py
  2. Ubicar la funcion format_address o ir la linea 407 aprox o ubicar la linea:
    from_addr = format_address(course_title_no_quotes)
  3. Sustituir el valor:
    from_addr = settings.BULK_EMAIL_DEFAULT_FROM_EMAIL
  4. Compilar el archivo modificado:
    python -m compileall task.py
  5. Cambiar el dueño del archivo compilado:
    chown edxa:edxapp task.pyc
  6. Reiniciar todos los servicios:
    /edx/bin/supervisorctl restart all
  7. 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.