Linux

Ubuntu 上是否有提供 sendmail 工具的 Linux 軟體包,該工具可以使用 SMTP 轉發消息或在 SMTP 失敗時回退到文件?

  • July 2, 2018

我想知道是否有一種sendmail工具可以讓我發送電子郵件而無需我們在 Postfix 等伺服器中看到的所有成本。我已經使用 Postfix,所以我知道如何設置它。但我正在尋找的是一種簡單的sendmail命令行工具,可以將電子郵件從一台伺服器發送到執行 Postfix 的伺服器。

所以……我正在雲中執行一個機器集群。其中一台機器安裝了 Postfix,它就像一個魅力。我可以通過將數據保存在我們的系統數據庫中並讓後台任務獲取該數據並將其轉發到該特定電腦上的 Postfix 來從任何前端發送電子郵件。所以我們的軟體得到了照顧,假設數據庫已經啟動,郵件系統後端啟動,Postfix 啟動……當所有這些準備就緒時,電子郵件開始按預期流動(我們有兩個這樣的安裝,它們都可以正常工作美好的。)

現在……這些雲實例還執行 CRON 任務和一些其他子系統,這些子系統最終可以發送電子郵件(或至少嘗試這樣做)。預設情況下會失敗,因為這些機器上沒有安裝 MTA。

我正在尋找的是一種有能力做的方法:

prompt$ sendmail me@example.com
From: root@machine1.example.com
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下有類似的東西嗎?

我認為您可能大大高估了執行 Postfix 所涉及的“所有成本”。這似乎可以解決您的問題:當您的中央郵件程序備份時,消息將排隊並傳遞。這需要在 Postfix 中進行幾乎零配置。

如果您想要“更簡單”的東西,可以使用 nullmailer,但這仍然涉及執行“伺服器”來處理消息隊列,因此它實際上就像 postfix 一樣,只是您需要學習一個新軟體。

您可以使用msmtp之類的東西自己製作,它不處理消息隊列或任何東西,但您可以將其包裝在 shell 腳本中,以便在失敗時將消息保存到郵箱中。就像是:

cat >> $tmpfile <<EOF
From: root@machine1.example.com
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 格式的郵箱或其他東西。

引用自:https://unix.stackexchange.com/questions/452952