如何在 AWS Linux 2 上设置本地邮件

如何在 AWS Linux 2 上设置本地邮件

我记得以前,在大多数 UNIX 机器上,只要mail有人……它就基本能正常工作。我对邮件服务器的工作原理有相当好的了解,但是……事实证明,我完全不记得邮件在非邮件服务器的 Linux 机器上是如何工作的,而且事实证明,据我所知,AWS Linux 2 没有安装任何邮件客户端。

我希望运行在 AWS VPC 上的所有服务器都能够向机器上的用户发送邮件,并通过 SMTP 向运行在 LAN 上的 postfix 服务器发送邮件。我安装了mailx,但如果我尝试向本地用户发送邮件,则不会收到任何邮件,并且日志中会显示端口 25 上的连接被拒绝。

我需要配置和/或安装什么才能使其工作?在网络上的每台服务器上运行 postfix 似乎很疯狂,但是...也许我错了,也许这就是需要的。但是,我希望我只是缺少一个简单的配置,无论是在操作系统级别,还是可能mailx

答案1

有几种实现mailmailxbsd-mailx、heirloom-mailx 又名 s-nail、GNU mailutils),它们有不同的要求。但它们都支持通过程序传递邮件,sendmail而不依赖于 SMTP。

(旧版本的“mail”或“mailx”可能支持直接传递到其他用户的邮件池,例如通过将gid设置为“mail”组,但现在似乎不再支持了。)

除了 Postfix,您还可以运行 Exim4 邮件软件,其“sendmail”实现将默认立即地在前台执行整个传递过程(而不是像 Postfix 那样仅仅将消息排队)——如果收件人是远程的,它会使用 SMTP;对于本地收件人,它会直接将消息写入他们的 mbox。

这是一种不太安全的设计(巨大的 setuid 二进制文件吸引了人们的注意),但这意味着 Exim 可以在没有运行持久守护进程的情况下发送外发邮件(不过,至少你可能需要每小时运行一次exim -qfcronjob 来重试失败的投递)。

Esmtp 智能主机专用“sendmail”工具还支持本地传送到 /var/mail。(尽管 Esmtp 基本无人维护,而最常见的替代工具“msmtp”仅支持智能主机传送,不支持本地邮件。)

如果您只想要本地邮件,那么您当然可以编写自己的“sendmail”实现,它除了本地投递之外不执行任何其他操作 - 它所需要的是通过 stdin 接受消息并通过 argv 接受收件人(加上一些选项)。

相关内容