将 Postfix 设置为空客户端?

将 Postfix 设置为空客户端?

我在将 Postfix 设置为空客户端时遇到了一些麻烦,并且有一些疑问。

我打算使用 SMTP,因为大多数 Web 应用程序都使用这种方式来连接电子邮件服务器。

目标是使用它来接收来自网络应用程序和机器上的监控软件的电子邮件通知。

  1. 是否需要 SASL 和 TLS 之类的东西?听起来,当我的 Web 应用程序和电子邮件服务器位于同一个机器上时,加密它们之间的连接是没有意义的。
  2. 我应该以哪个用户身份连接到 SMTP 服务器?我最初使用的是日常活动所用的用户帐户,但这很糟糕,因为如果我的 Web 应用程序被破解,我的登录信息就会泄露。我还尝试使用/usr/sbin/nologin因为它是 shell,但是这也不起作用(我希望用户没有 shell 访问权限)。

在执行此操作时还有其他需要考虑的事情吗?

答案1

我认为您问的是一种让邮件服务器接受您从同一台机器上的 Web 应用程序生成的电子邮件并将其发送到最终目的地的方法?我不太确定,因为“空客户端”和您的描述对我来说没有意义。

无论如何,通常的做法是,在 postfix 中将“mynetworks”设置为包含“127.0.0.1”,然后让您的 Web 应用程序连接到“127.0.0.1”来发送电子邮件。来自“mynetworks”中列出的主机的邮件不受限制,它只能向 postfix 服务器直接处理的用户名发送电子邮件,因此您可以让您的 Web 应用程序向您的普通电子邮件帐户或其他外部用户发送电子邮件。

mynetworks 通常包含 127.0.0.1,因此这很可能是默认配置。

因此,使用“postconf mynetworks”查看当前值。更改 /etc/postconf/main.cf 或使用“postconf”更改值,然后重新启动 postfix。如果您的邮件仍然无法正常工作,请检查日志。

答案2

空客户端配置的规范参考在这里: http://www.postfix.org/STANDARD_CONFIGURATION_README.html#null_client

空客户端不会监听即将到来的 TCP 连接,即使在本地主机上也是如此,因此本地不需要 SASL 和 TLS。

您的 Web 应用程序可以使用该接口,如果您使用管道内容(很可能是 mailx 的某种变体), sendmail那么这也是您在后台获得的。实际上是由 postfix 提供的,但为已成为标准的旧 sendmail 接口提供了一个插件。大多数 Web 邮件发送库都会与 对话,但也可能存在其他选项。mailsendmailsendmail

您可能需要担心 TLS、SASL 以及用于与您使用的邮件中继的传出连接的用户和身份验证,但空客户端的意义在于本质上未配置,如果您需要这些东西,请考虑空客户端并不是您真正想要的,或者您可以使用 postmulti 在同一个盒子上使用单独的传出邮件中继。

答案3

Postfix 是邮件传输代理,而不是邮件用户代理(客户端)。它会将邮件发送到其他 SMTP 服务器,还是会将邮件缓存起来以便通过 IMAP 或 POP 访问?我猜,您希望它将警报电子邮件转发到您公司的邮件服务器。

顺便说一句,Postfix 可能有点大材小用。您可以使用 /usr/bin/mail 或 mailx 来通过邮件接收 Logwatch 报告之类的内容。

相关内容