![Ubuntu 上是否有一个 Linux 软件包提供了一个 sendmail 工具,可以使用 SMTP 转发消息或在 SMTP 失败时回退到文件?](https://linux22.com/image/136214/Ubuntu%20%E4%B8%8A%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%80%E4%B8%AA%20Linux%20%E8%BD%AF%E4%BB%B6%E5%8C%85%E6%8F%90%E4%BE%9B%E4%BA%86%E4%B8%80%E4%B8%AA%20sendmail%20%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20SMTP%20%E8%BD%AC%E5%8F%91%E6%B6%88%E6%81%AF%E6%88%96%E5%9C%A8%20SMTP%20%E5%A4%B1%E8%B4%A5%E6%97%B6%E5%9B%9E%E9%80%80%E5%88%B0%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我想知道是否有一种sendmail
工具可以让我发送电子邮件,而无需我们在 Postfix 等服务器中看到的所有开销。我已经使用 Postfix,所以我知道如何设置它等等。但我正在寻找一种简单的sendmail
命令行工具,用于将电子邮件从一台服务器发送到运行 Postfix 的服务器。
所以...我正在云中运行一个机器集群。其中一台机器安装了 Postfix,它的工作方式就像一个魅力。我可以从任何前端发送电子邮件,方法是将数据保存在我们的系统数据库中,并让后台任务获取该数据并将其转发到该特定计算机上的 Postfix。所以我们的软件得到了照顾,假设数据库已启动,邮件系统后端已启动,Postfix已启动......当所有这些都准备就绪时,电子邮件开始按预期流动(我们有两个这样的安装,它们都可以正常工作)美好的。)
现在...这些云实例还运行 CRON 任务和一些其他子系统,这些子系统最终可以发送电子邮件(或至少尝试这样做)。默认情况下,由于这些计算机上没有安装 MTA,所以会失败。
我正在寻找的是一种有能力做到这一点的方法:
prompt$ sendmail [email protected]
From: [email protected]
Subject: Problem Report
Here we go, the problem is that I don't want Postfix on each machine.
.
此外,我希望sendmail
进行设置,以便如果它无法连接到运行 Postfix 的计算机(可能当前已关闭),则电子邮件不会丢失。相反,它被保存在一个文件中。例如,在/var/mail/root
.
当然,我不想再运行另一台服务器。我希望该sendmail
工具是一个命令行,在需要发送电子邮件时运行。就这样。
Linux Ubuntu 下有类似的东西吗?
答案1
我认为您可能大大高估了运行 Postfix 所涉及的“所有开销”。看起来这可以解决您的问题:当您的中央邮件程序备份时,消息将排队并传递。这在 Postfix 中几乎需要零配置。
如果你想要“更简单”的东西,有空邮件程序,但这仍然涉及运行一个“服务器”来处理消息队列,所以它实际上就像 postfix 一样,只是你需要学习一个新的软件。
你可以使用类似的东西来制作你自己的邮件传输协议,它不处理消息队列或其他任何事情,但您可以将其包装在 shell 脚本中,以在失败时将消息保存到邮箱。就像是:
cat >> $tmpfile <<EOF
From: [email protected]
Subject: Problem Report
Here we go, the problem is that I don't want Postfix on each machine.
EOF
if ! msmtp < $tmpfile; then
echo "Send failed; saving to mbox."
cat $tmpfile >> /path/to/mailbox
fi
您可能想要对上述内容添加一些锁定,或者安排发送到 Maildir 格式的邮箱或其他东西。