首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Taiga6与Docker和不需要身份验证的SMTP服务器一起使用

将Taiga6与Docker和不需要身份验证的SMTP服务器一起使用
EN

Stack Overflow用户
提问于 2021-02-12 03:43:16
回答 1查看 634关注 0票数 0

我最近使用了为Taiga6提供的docker镜像,在Ubuntu20.04上使用docker-compose运行了一个实例。

一切似乎都很好,除了我似乎不能让电子邮件工作得很好。我使用Gmail收发我公司的电子邮件,foamfactory.io,但是gmail smtp中继似乎是...充其量也就是吹毛求疵。

我决定尝试使用https://github.com/bokysan/docker-postfix将一个简单的SMTP中继设置为docker-compose.yml文件的一部分。我可以让电子邮件服务器正常启动,当我连接到taiga-back容器、安装cURL并运行以下命令时,它将按预期发送电子邮件:

代码语言:javascript
运行
复制
curl --url 'smtp://taiga-email:25' --mail-from 'taiga-noreply@foamfactory.io' --mail-rcpt 'jaywir3@gmail.com' --upload-file mail.txt --insecure

但是,当我尝试从Taiga发送电子邮件(例如,邀请用户)时,我收到以下异常:

代码语言:javascript
运行
复制
taiga-back_1             | ERROR:2021-02-10 17:42:49,044: Internal Server Error: /api/v1/memberships/4/resend_invitation
taiga-back_1             | Traceback (most recent call last):
taiga-back_1             |   File "/opt/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
taiga-back_1             |     response = get_response(request)
taiga-back_1             |   File "/opt/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
taiga-back_1             |     response = self.process_exception_by_middleware(e, request)
taiga-back_1             |   File "/opt/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
taiga-back_1             |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
taiga-back_1             |   File "/taiga-back/taiga/base/api/viewsets.py", line 104, in view
taiga-back_1             |     return self.dispatch(request, *args, **kwargs)
taiga-back_1             |   File "/opt/venv/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
taiga-back_1             |     return view_func(*args, **kwargs)
taiga-back_1             |   File "/taiga-back/taiga/base/api/views.py", line 458, in dispatch
taiga-back_1             |     response = self.handle_exception(exc)
taiga-back_1             |   File "/taiga-back/taiga/base/api/views.py", line 456, in dispatch
taiga-back_1             |     response = handler(request, *args, **kwargs)
taiga-back_1             |   File "/taiga-back/taiga/projects/api.py", line 1078, in resend_invitation
taiga-back_1             |     services.send_invitation(invitation=invitation)
taiga-back_1             |   File "/taiga-back/taiga/projects/services/invitations.py", line 32, in send_invitation
taiga-back_1             |     email.send()
taiga-back_1             |   File "/opt/venv/lib/python3.7/site-packages/django/core/mail/message.py", line 306, in send
taiga-back_1             |     return self.get_connection(fail_silently).send_messages([self])
taiga-back_1             |   File "/opt/venv/lib/python3.7/site-packages/django/core/mail/backends/smtp.py", line 103, in send_messages
taiga-back_1             |     new_conn_created = self.open()
taiga-back_1             |   File "/opt/venv/lib/python3.7/site-packages/django/core/mail/backends/smtp.py", line 70, in open
taiga-back_1             |     self.connection.login(self.username, self.password)
taiga-back_1             |   File "/usr/local/lib/python3.7/smtplib.py", line 697, in login
taiga-back_1             |     "SMTP AUTH extension not supported by server.")
taiga-back_1             | smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.

docker-compose.yml内部的配置如下所示

代码语言:javascript
运行
复制
EMAIL_BACKEND: "django.core.mail.backends.smtp.EmailBackend"
DEFAULT_FROM_EMAIL: "taiga-noreply@foamfactory.io"
...
services:
  taiga-email:
    build: ../docker-postfix
    environment:
      ALLOWED_SENDER_DOMAINS: "foamfactory.io"
      RELAYHOST_TLS_LEVEL: "may"
    ports:
      - "1587:${EMAIL_PORT}"
    networks:
      - taiga

我之前在一个提供自己的电子邮件服务的主机上设置了Taiga v5。我们将此服务器命名为email.foamfactory.io。我对其进行了扩充,以便它可以接受来自新主机服务器的连接(我在该主机服务器上运行taiga6的docker镜像)并接收电子邮件。它不使用TLS,也不需要身份验证(唯一可以通过它转发电子邮件的服务器是运行taiga6 docker容器的服务器)。

即使使用这个解决方案,我仍然得到错误smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported。我有点手足无措,因为我想使用Taiga6,但转换到这个新版本需要我发送电子邮件邀请,以便我可以验证我想要使用的用户帐户。

我想我想知道的是如何在Django中禁用SMTP身份验证...我希望能够在非TLS连接上使用未经身份验证的SMTP,从一个特定的服务器到另一个特定的SMTP服务器。

EN

Stack Overflow用户

回答已采纳

发布于 2021-02-13 01:21:05

事实证明,问题是基于IP的身份验证对有问题的SMTP服务器失败(Django确实告诉了我这一点,但我当时无法正确解释-我认为这是Django的问题,而不是postfix/smtp主机问题)。

解决方案是在我的SMTP服务器中添加以下行:

代码语言:javascript
运行
复制
default_transport = smtp
relay_transport = relay

发送到/etc/postfix/main.cf,并验证要发送邮件的服务器的IP地址是否已添加到mynetworks

(我从https://serverfault.com/questions/559088/postfix-not-accepting-relay-from-localhost得到这个想法,是为了在应该得到赞扬的地方给予表扬)

我仍然不太确定为什么当我在管理控制台中设置SMTP中继时,它不能与Gmail一起工作,但是,就我的目的而言,这个解决方案是有效的。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66161722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档