为自托管站点使用 Mail-Receiver 配置直接交付的收件邮箱

如何完全禁用 DMARC 支持?

也就是说,在 mail-receiver.ymlenv 部分添加 INCLUDE_DMARC: false 似乎并不能实现。这确实会导致 opendkimopendmarc 守护进程不运行(导致日志中出现警告),但 SPF 检查仍在进行。

编辑补充:
我认为通过在 env 部分添加以下 POSTCONF_ 行,我设法禁用了 SPF 检查:

env:
  ...
  INCLUDE_DMARC: false
  POSTCONF_smtpd_recipient_restrictions: check_policy_service unix:private/policy
  ...

我通过查看引入 DMARC 检查的 提交,并查看当 INCLUDE_DMARC 为 false 时应该发生什么,得到了这个。

我对 Docker 镜像的构建方式知之甚少,但我感觉 INCLUDE_DMARC 标志是为其他人、在其他地方、在其他时间设置的,而不是可以在 mail-receiver.yml 中完成的。

2 个赞

我在 ufw 中发现需要打开 443 端口 — 否则,我在 logs 中会遇到 API Request Preparation Failed。我认为最好提及这一点,因为标准的安装说明提到了启用 ufw。

mail-receiver.yml 中提到了 25 端口,它似乎绕过了 ufw。

1 个赞

GitHub 仓库是否应放在 OP 中?

3 个赞

mail-receiver 的用户,请参阅 Remove smtp_should_reject & discourse-smtp-fast-rejection

我们将完全移除快速拒绝(fast-rejection)功能,因为最初的功能存在缺陷并给用户带来了问题,特别是以下情况:

它还会影响转发邮件,因为预投递测试检查的是 envelope-from 和 envelope-to,而 Discourse 只使用邮件头中的值。

1 个赞

我刚刚提交了这个 PR,用于删除 mail-receiver.yml 示例文件中 DISCOURSE_BASE_URL 值周围不必要的引号。这些引号破坏了我的设置。去掉这些引号可以使本文档成功完成。

你能解释一下如何破坏的吗?这个值周围有无引号没有产生任何区别:

[2] pry(main)=> YAML::load("env:\n  DISCOURSE_BASE_URL: 'https://discourse.example.com'")
=> {"env"=>{"DISCOURSE_BASE_URL"=>"https://discourse.example.com"}}

[3] pry(main)=> YAML::load("env:\n  DISCOURSE_BASE_URL: https://discourse.example.com")
=> {"env"=>{"DISCOURSE_BASE_URL"=>"https://discourse.example.com"}}

当我追踪该容器的日志并向其发送消息时,我看到一堆错误,提到类似“discourse.example.com 不是 MX 记录的一部分”之类的信息。我删除了引号,重建了容器,它就开始工作了 :person_shrugging:

事件的顺序可能也很重要:

  1. 我配置并启动了邮件接收器(mail-receiver)容器
  2. 几天后我设置好了 MX DNS 记录
  3. 我验证了 MX 记录设置正确,然后开始测试。它没有工作
  4. 删除了引号,重建了容器,开始工作了

所以我不确定是引号的移除导致了解析,还是在创建 MX 记录后重建容器导致了解析。

最坏的情况是,这个拉取请求(PR)让 yml 文件看起来更一致 :slight_smile:

1 个赞