如何在那个目录中创建新的容器定义!?
通过运行紧随该文本之后的命令。严格来说,您并不是在那个目录中创建文件,而是在 containers 子目录中创建文件,与 app.yml 相同。
谢谢,起初这些似乎不起作用,但现在已经进入了文本编辑器,并显示:
这似乎存在一个问题,在运行
./launcher logs mail-receiver
时,报告 discourse_base_url=https://discourse.example.com,而不是在文本编辑器中设置的指定域。
尝试重建/重新启动 mail-receiver 的引导程序,但未更改为正确的域。
我遇到了一些麻烦,需要一些建议!
root@JEN /var/discourse # ./launcher start mail-receiver
x86_64 arch detected.
starting up existing container
+ /usr/bin/docker start mail-receiver
Error response from daemon: driver failed programming external connectivity on endpoint mail-receiver (721279d807e22a80580f2357fae40cc): Error starting userland proxy: listen tcp4 0.0.0.0:25: bind: address already in use
Error: failed to start containers: mail-receiver
然后……
root@JEN /var/discourse # sudo lsof -i tcp:25
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
master 4400 root 13u IPv4 24419 0t0 TCP *:smtp (LISTEN)
master 4400 root 14u IPv6 24420 0t0 TCP *:smtp (LISTEN)
我也尝试了……
root@JEN /var/discourse # netstat -nlp | grep 25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 4400/master
tcp6 0 0 :::25 :::* LISTEN 4400/master
还有……
root@JEN /var/discourse # ps j 4400
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 4400 4400 4400 ? -1 Ss 0 0:02 /usr/lib/postfix/sbin/master -w
我在网上找到的说明是停止容器并杀死进程(进程 4400?)。
这样做安全吗?能解决问题吗?
我需要(或者应该,或者不应该)在 mail-receiver.yml 文件中将端口 25 更改为其他端口吗?
也许您安装了 postfix 并需要将其卸载?
您无法更改端口。您需要停止占用该端口的任何进程。仅仅终止它不起作用,因为当您重启时,它将变成一个进程抢先启动的竞赛。
我也这么想的。我无法想象它是怎么上去的,但我会试着把它移走。否则我可以用Gmail,它似乎工作得很好。
我刚把我的论坛迁移到一个新环境,因此重新安装了邮件接收器。看起来它比我之前安装的版本要新。YML 配置已略有更改,用 DISCOURSE_BASE_URL 替换了 DISCOURSE_MAIL_ENDPOINT。YML 文件内容反映了更改,但此线程顶部的说明需要更新。
另外,在接收退回/拒绝的电子邮件时,我遇到了以下错误……
Jun 08 11:50:42 mail-receiver postfix/smtp[117]: fatal: unknown service: smtp/tcp
Jun 08 11:50:42 mail-receiver postfix/smtp[118]: fatal: unknown service: smtp/tcp
Jun 08 11:50:43 mail-receiver postfix/qmgr[101]: warning: private/smtp socket: malformed response
Jun 08 11:50:43 mail-receiver postfix/qmgr[101]: warning: transport smtp failure -- see a previous warning/fatal/panic logfile record for the problem description
Jun 08 11:50:43 mail-receiver postfix/master[1]: warning: process /usr/lib/postfix/sbin/smtp pid 117 exit status 1
Jun 08 11:50:43 mail-receiver postfix/master[1]: warning: /usr/lib/postfix/sbin/smtp: bad command startup -- throttling
Jun 08 11:50:43 mail-receiver postfix/qmgr[101]: warning: private/smtp socket: malformed response
Jun 08 11:50:43 mail-receiver postfix/master[1]: warning: process /usr/lib/postfix/sbin/smtp pid 118 exit status 1
Jun 08 11:50:43 mail-receiver postfix/qmgr[101]: warning: transport smtp failure -- see a previous warning/fatal/panic logfile record for the problem description
有效消息似乎得到了正确处理。据我从最近的日志文件中查看,前一个版本的邮件接收器没有出现这些错误。我做了一些研究,偶然发现了 - https://blog.badgerops.net/smtp-socket-malformed-response-on-a-fips140-2-sytstem/
在 mail-receiver.yml 文件中添加以下内容似乎为我解决了问题:
## Fix smtp errors
POSTCONF_smtp_tls_fingerprint_digest: sha256
POSTCONF_smtpd_tls_fingerprint_digest: sha256
在此发布一条消息,以告知我们已通过名为 discourse/mail-receiver:with-dmarc 的镜像为 mail-receiver 添加了 DMARC 支持。请参阅 OP 中的 Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver 以获取更多详细信息。
2 篇帖子已合并到现有主题:Mail-receiver relay access denied
我想为故障排除部分添加一些内容。
Mail-Receiver(直接投递)对几个域都有效,但无法接收来自 Gmail 用户的信息。我弄不清楚原因。日志中除了来自 Google 的连接/断开连接之外,没有任何内容。一切看起来都很好,在线工具也确认 DNS 没有问题。
最终,我在 DNS 中创建了一个 SMTP TLS 报告记录,例如:
_smtp._tls.discourse.mydomain.com TXT v=TLSRPTv1;rua=mailto:me@wherever.com
几个小时后,Google(Gmail)发送了一份报告,显示它缓存了一个 mta-sts 策略,该策略未能反映当前的 MX 记录。我担心 Google 会将该缓存策略保留一周,因为它似乎忽略了我更新的 _mta-sts DNS 记录,而该记录本应导致刷新。
此后不久,我所有备份的 Gmail 开始流入 Discourse,而我什么也没做。该报告帮助我理解了 Google 对问题的看法,并在消息开始流动时避免了我挠头。
SMTP TLS 报告发放的频率不高,请耐心等待。
考虑到指南中没有关于配置 MTA STS 的内容,为那 99.999% 以上不配置它的用户添加相关的诊断步骤会不会让他们感到困惑?
在我的情况下,添加一个 DNS 记录就足以照亮我的问题。鉴于该指南已指示创建 DNS 记录以安装 Mail-Receiver,在故障排除部分建议添加记录作为最后的手段似乎并不牵强。但是,我看到您的帖子有两条“赞”,而我的帖子没有,所以这可能就是它的结局。
这是个好消息,鉴于 Gmail 是一个常见的发件人,这似乎是添加到指南中的好信息。
该指南指示创建 DNS 记录以使 mail-receiver 工作,而不是配置 MTA STS。因此,遵循该指南的用户永远不会遇到您遇到的问题。因此,没有必要使指南复杂化,增加不必要的步骤。
通常情况下,mail-receiver 是否能够将 Gmail 发送的邮件处理成新主题?
这似乎是一个大问题,但如果原因是一个孤立事件,那就不是问题了。
我得出的结论是马特是对的。我的安装特别需要处理 MTA-STS,因为其域名的常规邮件由 Mail In a Box https://mailinabox.email/ 处理,它坚持严格的 MTA-STS 策略,而 Gmail 会强制执行该策略。默认情况下,该策略可能与 Mail-Receiver 的配置冲突。大多数域名不会有策略。如果域名确实有策略,它将显示在
https://mydomain.com/.well-known/mta-sts.txt
我正在工作的策略如下…
version: STSv1
mode: none
mx: mail.mydomain.com
mx: discourse.mydomain.com
max_age: 86400
我希望在做更多工作后将“mode: none”升级为“mode: enforce”。
有人能提醒我一下吗——当我们通过命令行重建 Discourse 时,它会自动重建 mail-receiver 容器,还是我们需要单独进行?谢谢。
不会;它只在你告诉它重建时才会重建。你不需要经常重建邮件接收器。
这对我绝对有帮助:)
