如何设置 SMTP 配置以使用 localhost?

我已将 postfix 配置为在本地 Docker 主机上运行,通过执行 swaks --to destination@domain.tld --from admin@hostdomain.tld --server localhost -tls 进行测试,邮件能按预期发送。它使用端口 25,并且邮件发送没有任何问题。

因此,我想问:如何正确设置 app.yml 中的 SMTP 配置,以便利用 localhost 进行邮件投递?

将 SMTP 地址设置为 127.0.0.1

为免混淆,您的意思是只需配置 IP 地址,而将其他字段注释掉吗?例如:

  DISCOURSE_SMTP_ADDRESS: 127.0.0.1
  #DISCOURSE_SMTP_PORT: 25
  #DISCOURSE_SMTP_USER_NAME: 
  #DISCOURSE_SMTP_PASSWORD:
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (可选,默认为 true)

如果目标服务位于同一 Docker 主机但不同的 Docker 容器中,你需要指定主机 IP。

127.0.0.1 无法使用,因为那是回环地址。每个容器都将 127.0.0.1 视为自身。

这并非位于不同的 Docker 容器中,而是直接在 Docker 主机本身上运行。

那么它仍然需要主机 IP。

在这种情况下,您需要使用公网 IP,还是 Docker 有特殊的 IP 方案?例如,在宿主机上我看到 docker0 的 IP 是 172.17.0.1,而在容器内(执行 ./launcher enter app; apt-get install ifconfigeth0 的 IP 是 172.17.0.2。我怀疑在 Discourse 容器中应该使用宿主机的 172.17.0.1,但我不希望这个地址在某个时候发生变化。

在此记录一下,如果无需认证,以下配置(注释掉所有其他 SMTP 行)足以将邮件投递到 Docker 主机的 SMTP 服务器:

  DISCOURSE_SMTP_ADDRESS: 172.17.0.1
  DISCOURSE_SMTP_PORT: 25