Postfix 空客户端设置

Postfix 空客户端设置

我想在 Ubuntu 20.04 机器上设置一个 Postfix 空客户端,即发送但不接收电子邮件的邮件服务器。我花了几天时间尝试来自教程、Postfix 文档、论坛讨论等的建议。其中许多都没有提供完整的图片,甚至相互矛盾。简而言之:系统没有按预期工作,我不知道哪些设置是正确的。

让我更具体地介绍一下当前的设置以及我遇到的一些更精确的问题。出于安全原因,我使用example.com以及一些 IP 地址对域名进行匿名化。在 中/etc/postfix/main.cf,我使用以下设置:

# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_tls_security_level=may
smtp_use_tls=yes
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.example.com
mydomain = mail.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.$mydomain, localhost, $myhostname
mynetworks = 127.0.0.0/8 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = ipv4
local_transport = error: local delivery disabled

其中/etc/aliases列出[email protected]postmaster/etc/mailname包含行mail.example.com.

修改 Postfix 配置后,我使用 重新启动程序sudo systemctl restart postfix

外部 DNS 服务器使用以下设置:

@                  IN A 123.456.789.01
mail               IN A 123.456.789.01
www                IN A 123.456.789.01
autoconfig         IN CNAME mail.your-server.com.
@                  IN TXT "v=spf1 +a +mx ?all"
@                  IN MX 0 mail
_autodiscover._tcp IN SRV 0 100 443 mail.your-server.com.
_imaps._tcp        IN SRV 0 100 993 mail.your-server.com.
_pop3s._tcp        IN SRV 0 100 995 mail.your-server.com.
_submission._tcp   IN SRV 0 100 587 mail.your-server.com.

安装Postfix的云服务器有PTR记录。

当尝试通过以下方式发送电子邮件时

sudo echo "Test" | mail -s "Test" [email protected]

系统尝试从 发送它current-user@hostname,例如john@abc,而不是[email protected]。日志通过错误消息反映了这一点:Sender address rejected: need fully-qualified address (in reply to RCPT TO command)。我尝试masquerade_domains = example.com使用 和mail的选项更改发件人地址r。然而,这不起作用。如果我通过以下方式更改整个计算机的主机名,则电子邮件只会通过

sudo hostnamectl set-hostname mail.example.com

但是,我只想更改 Postfix 使用的主机名。此外,我想将发送地址中的用户名替换为noreply,而不必设置名为 的新用户帐户noreply。即电子邮件应从 发送[email protected]

托管提供商解锁了端口 25。因此,这应该不是问题。

我为 Nginx Web 服务器 ( example.com) 和 Postfix 邮件服务器 ( mail.example.com) 下载了单独的 Let's Encrypt 证书。

我的猜测是,,,,,,myhostname(某些示例将此设置留空),(某些示例使用不同的地址),或(我不想接受任何传入电子邮件,所以我认为不需要设置中继主机mydomain?) 在 Postfix 配置中,或者部分 DNS 配置未正确定义。我确信我的 A 记录是正确的,但我完全不确定其他 DNS 条目。有些教程建议设置 MX 记录,有些则不建议。如果我使用 直接从 shell 直接发送电子邮件,我是否需要 SRV 记录?alias_mapsalias_databasemyoriginmydestinationmynetworksrelayhostmail

正如我所说,我已经研究了好几天的配置,并查看了文档、教程和大量论坛讨论。没有产生预期的结果。任务只是设置一个安全的邮件服务器,从命令行发送电子邮件,同时不允许传入电子邮件。上述哪些设置不正确或不适合此应用程序?

我是邮件服务器的新手,期待收到任何有用的评论和答案 - 除了“阅读文档”(我已经这样做了)或“阅读相关帖子”(我也这样做了)。

答案1

如何设置监听和发送是在/etc/postfix/master.cf.

要禁用接收,请找到类似于以下内容的行:

<hostname>:smtp inet n - n - - smtpd -o smtpd_sasl_auth_enable=no -o syslog_name=smtpd -o smtp_helo_name=<hostname> -o myhostname=<hostname> -o smtpd_banner=$smtpd_banner_bgcomp

并将其注释掉。这将阻止它侦听 smtp 端口。这是smtpd重要的一点。

您仍应具有以下任意一行或两行:

<socket relative pathname under in private queue directory> unix - - n - - smtpd -o smtpd_sasl_auth_enable=no -o syslog_name=smtp -o smtp_helo_name=<hostname> -o smtp_bind_address=<ip address> -o smtp_bind_address6=<ipv6 address>

<hostname>:submission inet n - n - - smtpd -o smtpd_sasl_auth_enable=no

这些将允许您通过 unix 域套接字或通过提交端口在本地注入电子邮件以进行转发。这全部详细说明在man 5 master

您最好在 DNS 中设置一个指向源 IP 地址的 mx 主机,因为如果该主机不存在,许多系统将拒绝电子邮件。

我确信我有什么地方不对劲,我通常都是这样......

请记住,这些是特定于我的系统的,您的系统会略有不同。

相关内容