Я настраиваю Weblate на Google Cloud Platform (GCE с использованием ОС, оптимизированной для контейнеров) и развертываю через docker-compose
с использованием конфигурации HTTPS.
Я следил за этими руководствами:
Weblate: установка с помощью Docker
Google: запуск Docker Compose с Docker
Weblate работает нормально, однако электронные письма не отправляются по следующим причинам:
ERROR Handled exception: OSError: [Errno 99] Cannot assign requested address
Traceback (most recent call last):
File "/usr/local/bin/weblate", line 11, in <module>
load_entry_point('Weblate==3.8', 'console_scripts', 'weblate')()
File "/usr/local/lib/python3.7/dist-packages/weblate/runner.py", line 34, in main
execute_from_command_line(argv)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.7/dist-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.7/dist-packages/django/core/management/commands/sendtestemail.py", line 33, in handle
recipient_list=kwargs['email'],
File "/usr/local/lib/python3.7/dist-packages/django/core/mail/__init__.py", line 60, in send_mail
return mail.send()
File "/usr/local/lib/python3.7/dist-packages/django/core/mail/message.py", line 291, in send
return self.get_connection(fail_silently).send_messages([self])
File "/usr/local/lib/python3.7/dist-packages/django/core/mail/backends/smtp.py", line 103, in send_messages
new_conn_created = self.open()
File "/usr/local/lib/python3.7/dist-packages/django/core/mail/backends/smtp.py", line 63, in open
self.connection = self.connection_class(self.host, self.port, **connection_params)
File "/usr/lib/python3.7/smtplib.py", line 251, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python3.7/smtplib.py", line 336, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python3.7/smtplib.py", line 307, in _get_socket
self.source_address)
File "/usr/lib/python3.7/socket.py", line 727, in create_connection
raise err
File "/usr/lib/python3.7/socket.py", line 716, in create_connection
sock.connect(sa)
OSError: [Errno 99] Cannot assign requested address
Я пробовал играть с различными настройками в docker-compose-https.override.yml
файл, а именно опускание определенных параметров для автоматической настройки и изменение указанного адреса электронной почты, указание порта для почты и изменение параметров SSL / TLS.
Вот соответствующие части конфигурации:
...
WEBLATE_EMAIL_HOST: "smtp-relay.gmail.com"
WEBLATE_SERVER_EMAIL: "weblate@example.org"
WEBLATE_DEFAULT_FROM_EMAIL: "weblate@example.org"
WEBLATE_USE_SSL: 0
WEBLATE_USE_TLS: 1
WEBLATE_ALLOWED_HOSTS: "i18n.example.org"
...
Я не уверен, в чем проблема и где искать, чтобы ее решить.
Сегодня я снова играл с этим и проверял некоторые вещи, которые я пробовал ранее ... похоже, вручную указание порта было фактическим решением.
Должно быть, я раньше вводил его неправильно, или, возможно, если внешняя конфигурация в G Suite может вызвать указанную выше ошибку, то изменение настроек еще не распространено.
WEBLATE_EMAIL_HOST: "smtp-relay.gmail.com"
# THE SOLUTION #
WEBLATE_EMAIL_PORT: 587
WEBLATE_SERVER_EMAIL: "weblate@example.org"
WEBLATE_DEFAULT_FROM_EMAIL: "weblate@example.org"
WEBLATE_USE_SSL: 0
WEBLATE_USE_TLS: 1