Postfix 配置从本地主机发送电子邮件

Postfix 配置从本地主机发送电子邮件

我想配置 localhost 通过 postfix 服务器发送电子邮件,我这样做是为了测试我的 Docker 与 Wordpress 设置解决方案(使用互联网上找到的解决方案,电子邮件不起作用,curl 也不起作用,但这是因为公司 CA SSL 证书)。现在我正在 Fedora 上测试它,并尝试发送到我在 onet.pl 和 jcubic.pl 域的两个帐户,他们都拒绝了我的电子邮件。

以下是 Postfix 日志:

Apr  4 13:24:14 23c96150d42f postfix/smtp[134]: BCAA01659A0: to=<[email protected]>, relay=mail.jcubic.pl[185.255.40.21]:25, delay=0.25, delays=0/0/0.07/0.17, dsn=5.7.1, status=bounced (host mail.jcubic.pl[185.255.40.21] said: 550 5.7.1 <[email protected]>: Recipient address rejected: Please see http://www.openspf.net/Why?s=helo;id=jcubic.pl;ip=185.129.113.210;r=unknown (in reply to RCPT TO command))
Apr  4 13:24:14 23c96150d42f postfix/qmgr[95]: BCAA01659A0: removed
Apr  4 13:25:41 23c96150d42f postfix/smtp[134]: 2D02E1659A0: to=<[email protected]>, relay=mx.poczta.onet.pl[213.180.147.146]:25, delay=0.85, delays=0/0/0.85/0, dsn=4.7.1, status=deferred (host mx.poczta.onet.pl[213.180.147.146] refused to talk to me: 220-mx.poczta.onet.pl ESMTP 450 4.7.1 Client host rejected: cannot find your reverse hostname, [185.129.113.210])

首先是 SPF 保护,我可以忽略它,只处理显示有关反向主机名错误的 onet.pl,我读到我需要在 jcubic.pl 上有正确的 DNS 记录。我可以在 jcubic.pl 上设置 DNS,现在只是为了看看电子邮件是否有效,但我不知道如何设置多个 A DNS 记录。我也不确定我该怎么做(记录应该是什么样子)。

我在工作中使用 OpenStack 上的 Ubuntu 测试我的 docker-wordpress 组合,并且能够向 gmail 公司帐户发送电子邮件。

我正在使用这个设置,我有 postfix 实例作为 docker compose 服务,配置如下:

  postfix:
    image: catatnight/postfix
    environment:
      maildomain: example.com # at work here was valid domain of my company (gene.com)
      smtp_user: postfix:postfixpass
    ports:
      - "25:25"
    restart: always

端口 25 可能不会公开,它仅用于测试,我不确定这是否是无法发送电子邮件的问题:

和我的 wordpress 图像使用msmtp命令发送电子邮件,我现在正在测试这个:

echo "Hello this is sending email using msmtp" | msmtp <name>@onet.pl
echo "Hello this is sending email using msmtp" | msmtp <name>@jcubic.pl

我的 msmtp 配置如下所示:

# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls off
tls_starttls off
# Setup WP account's settings.
account postfix
host postfix
port 25
auth login
user [email protected]
password postfixpass
from [email protected]

logfile /var/log/msmtp/msmtp.log

account default: postfix

我正在测试不同的usernad from,我是否可以在 jcubic.pl 上配置 DNS 来验证我的本地 IP(动态)是否有效,以便我可以测试发送电子邮件是否有效?我的域名 jcubic.pl 在共享主机上,但我可以添加 DNS 记录。也可以修复 SPF 问题。这将如何在普通服务器上工作。在工作中,我使用公司的域名,但它是内联网 IP 地址(私有 OpenStack 实例),我不确定为什么 gmail 认为发件人是有效的。

我还有一个问题,postfix 邮件服务器是否需要公开,并且可以通过发送电子邮件的 IP 进行访问?这是它在工作中的工作方式(docker postfix 容器有公共端口),但在这里我有 localhost 和 NAT 路由器,我的公共 IP 不同,并且无法从互联网访问邮件服务器。我不确定我公司有哪些 DNS 记录。

答案1

我可以在 jcubic.pl 上配置 DNS 来验证我的本地 IP(动态)是否有效吗?

直接从动态 IP 发送电子邮件可能会有问题。您可能应该使用 ISP 的 SMTP 服务器或通过您自己的电子邮件服务器提交。更不用说该 IP 地址目前位于多个基于 DNS 的黑名单 (DNSBL) 上。

收件人地址被拒绝:请参阅
http://www.openspf.net/为什么?s=helo;id=jcubic.pl;ip=185.129.113.210;r=unknown

不允许185.129.113.210发送jcubic.pl电子邮件

jcubic.pl. IN TXT "v=spf1 a mx include:_spf.atthost.pl -all"

由于动态 IP 地址,您可能需要添加+ip4:185.129.113.210全部+íp4:185.129.112.0/22。这不明智,因为如果允许PL-UNINET-OWN-INFRASTRUCTURE网络块上的每个设备发送电子邮件jcubic.pl。使用经过身份验证的 SMTP提交端口就是一个解决方案。本地 Postfix 可以通过您现有的邮件服务器发送所有非本地邮件,作为relayhost

450 4.7.1 Client host rejected: cannot find your reverse hostname, [185.129.113.210]

这不是你能通过修改你的前进区因为jcubic.pl这是有关失踪的撤销 PTRIP 地址 的记录185.129.113.210。只有 IP 块的所有者才能更改这些记录。dig -x 185.129.113.210返回,NXDOMAIN因此210.113.129.185.in-addr.arpa. IN PTR目前根本没有反向记录。

许多接收 SMTP 服务器要求正向和反向记录都匹配,并且它们匹配SMTP 横幅(服务器如何在HELO命令中介绍自己)也是如此。

相关内容