我在 app.yml 中将邮件配置为如下所示:
DISCOURSE_SMTP_ADDRESS: mail.mysecrect.tld
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: minegenix@mysecret.tld
DISCOURSE_SMTP_PASSWORD: <secret>
我在 app.yml 中将邮件配置为如下所示:
DISCOURSE_SMTP_ADDRESS: mail.mysecrect.tld
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: minegenix@mysecret.tld
DISCOURSE_SMTP_PASSWORD: <secret>
还在日志中发现了这个:
fail
Delivered mail 3ff63fed-4142-4042-ab33-29493b32b3a6@beta2.mysecret.tld (30001.9ms)
Job exception: execution expired
您可能需要在 app.yml 中添加此项
DISCOURSE_SMTP_ENABLE_START_TLS: false
好的,顺便说一句,我使用 mailcow!
服务器正在运行 discourse beta2.mysecret.tld - 而不是 mysecret.tld?
请尝试以下选项:
DISCOURSE_SMTP_ADDRESS: 172.17.0.1 # 在此处使用内部 IP - 邮件服务器域名可能无法正确解析
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "您的 SMTP 用户名"
DISCOURSE_SMTP_PASSWORD: "您的 SMTP 密码"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (可选,默认为 true)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
DISCOURSE_SMTP_DOMAIN: mysecret.tld
mysecret.tld 只是一个占位符,隐藏了我的真实域名,因为我不想透露我的论坛地址 ![]()
您是否正在发送发件人电子邮件地址为“…\@ beta2. mysecret.tld”的邮件 - 但您的 mailcow 帐户是为“…\@mysecret.tld”设置的?
我正在从…@ mysecret.tld 发送电子邮件,并且该网站运行于 beta2.mysecret.tld
是的,我目前正在这样做
顺便问一下,每次重建后都需要引导吗?
好的,我已经添加了设置,但没有帮助。
./launcher enter app
getent hosts 检查你的 SMTP 服务器名称的 DNS 解析:(容器内未安装 dig、nslookup、ping 等命令。)
getent hosts your.smtp.server
成功时的结果:
# IPv4
123.123.123.123 your.smtp.server
# IPv6
2001:db8:0:0:0:ff00:42:8329 your.smtp.server
openssl 连接到你的 SMTP 服务器:(容器内未安装 telnet、nc 等命令。)
尝试不同的设置,直到成功连接。
openssl s_client -connect your.smtp.server:465
openssl s_client -connect your.smtp.server:587 -starttls smtp
# IPv4
openssl s_client -connect 172.17.0.123:465
openssl s_client -connect 172.17.0.123:587 -starttls smtp
# IPv6
openssl s_client -6 -connect "[2001:db8:0:0:0:ff00:42:8329]:465"
openssl s_client -6 -connect "[2001:db8:0:0:0:ff00:42:8329]:587" -starttls smtp
参见:如何检查 SMTP 连接 –> 步骤 3:使用 Openssl 检查 TLS 上的 SMTP 连接
![]()
(容器内未安装 ifconfig、ip 等命令。)
hostname -I
结果类似:
172.17.0.2
我无法通过 openssl 建立连接,并且我只得到这个:来自 getent
2606:4700:3032::ac43:d2f1 mail.secret.tdl
2606:4700:3033::6815:4db8 mail.secret.tld
(secret.tld 替换了我的实际域名)
瞎猜一下:这是一个公共 IP 吗?您的 mailcow 配置为在此公共 IP 上侦听 smtp 连接,还是仅在内部网络上侦听?
在 Discourse 容器内部,您可以通过以下方式获取容器的 IP:
hostname -I
您的 mailcow 也在同一个内部(docker-)网络上吗?
172.17.0.2 是我从 hostname -I 获取的。
你能进入你的 mailcow 容器并运行 hostname -I 吗?Mailcow 和 Discourse 是同一主机上的两个独立 docker 容器吗?
如何进入 mailcow 容器?没有启动脚本。
我也不知道 mailcow。也许最好再咨询一下 mailcow 社区:https://community.mailcow.email/
我应该使用什么来收发邮件,或者我可以在 Ubuntu 上设置什么软件作为论坛的邮件服务?