SMTPServerDisconnected at /account/signup/ using django-allauth on Google Cloud Run and Workspace smtp-relay

Я попробовал различные рекомендуемые варианты конфигурации, и мой SMTP-реле отлично работает локально, но не работает при развертывании в службе Google Cloud Run со следующей ошибкой:

SMTPServerDisconnected at /account/signup/
Connection unexpectedly closed
...
  File "/usr/local/lib/python3.9/site-packages/django/core/mail/backends/smtp.py", line 67, in open
    self.connection.starttls(keyfile=self.ssl_keyfile, certfile=self.ssl_certfile)
  File "/usr/local/lib/python3.9/smtplib.py", line 764, in starttls
    self.ehlo_or_helo_if_needed()
  File "/usr/local/lib/python3.9/smtplib.py", line 607, in ehlo_or_helo_if_needed
    (code, resp) = self.helo()
  File "/usr/local/lib/python3.9/smtplib.py", line 436, in helo
    (code, msg) = self.getreply()
  File "/usr/local/lib/python3.9/smtplib.py", line 400, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed")

Соответствующие настройки для моей конфигурации SMTP из settings.py:

EMAIL_HOST = 'smtp-relay.gmail.com'
EMAIL_HOST_USER = env('EMAIL_HOST_USER', default=None) # according to the traceback the credential env variables are pulling through correctly
EMAIL_HOST_PASSWORD = env('EMAIL_HOST_PASSWORD', default=None)
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

Я собираю из Dockerfile, поэтому в качестве дополнительной попытки исправить ситуацию я добавил EXPOSE 587/tcp, что, похоже, не повлияло. Этот doc от Google, кажется, предполагает, что ничто не блокирует его, хотя в нем нет явной ссылки на службу Cloud Run.

Меньшая безопасность приложений также включена, и я использую сгенерированный пароль приложения от учетной записи хоста электронной почты.

Не уверен, есть ли какие-либо настройки, которых мне не хватает для учета моей установки на google cloud run или dockerfile, поэтому любые идеи/исправления были бы очень признательны. При необходимости могу обновить информацию с другими конкретными сведениями.

Вернуться на верх