![轻量级发送 SMTP 服务器](https://linux22.com/image/307/%E8%BD%BB%E9%87%8F%E7%BA%A7%E5%8F%91%E9%80%81%20SMTP%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
您使用什么作为仅用于外发电子邮件的轻量级 SMTP?
我正在运行一个应用程序,当事件偶尔发生时,它会通过 SMTP 发送电子邮件,并且我不需要功能齐全的电子邮件服务器。
编辑:如果这是最好的选择,我非常乐意使用像 postfix 这样的东西(并且确实这样做)。我在想可能有更简单的东西,开箱即用。
答案1
有多种最小的仅中继邮件传输代理(MTA 或“邮件服务器”)选择,其中一些已在其他答案中提到:
- 邮件传输协议http://msmtp.sourceforge.net/
- 空邮件程序http://untroubled.org/nullmailer/(我个人最喜欢的)
- esmtphttp://esmtp.sourceforge.net/(未维护)
- sSMTPhttp://packages.debian.org/source/sid/ssmtp(不再积极开发)
为了使其中任何一个工作,您需要一个成熟的 MTA 来进一步转发您的邮件(称为“邮件中心”),并且强烈建议您控制该邮件中心。否则,Bad Things™ 可能会发生。
答案2
恕我直言,最简单的方法是使用 postfix。您可以使用以下命令将其配置为光输出继电器:
postconf -e relayhost=other.mailserver.com
postconf -e myorigin=my.domainname.com
只要 中指定的 SMTP 服务器relayhost
不需要身份验证、允许您中继或者是收件人地址的有效目标,就可以使用。
该myorigin
参数将是默认域名。因此,如果您向 foo 发送邮件,它将发送至[电子邮件受保护]。用户栏发送的邮件将来自[电子邮件受保护]。
如果您确实需要进行身份验证并希望支持 TLS,还可以运行以下命令:
postconf -e smtp_tls_security_level=may
postconf -e smtp_sasl_auth_enable=yes
postconf -e smtp_sasl_password_maps=pcre:/etc/postfix/sasl_password_maps
然后/etc/postfix/sasl_password_maps
有这样的内容:
/./ username:password
所有邮件都将使用指定的用户名和密码发送到您的中继主机。
答案3
假设您需要一个可以从 shell 运行的程序,例如 sendmail(8),也许邮件传输协议会满足您的需求吗?它可以连接到远程 SMTP 服务器并将收到的邮件作为 stdin 提交,就像 sendmail 一样。
答案4
您可能会发现 sSMTP 适合您的需求。读这个文章关于它及其局限性。
老实说,我不会对安装 postfix 或 exim 感到太大压力,即使它只是为了发送电子邮件。