用於伺服器的 Ubuntu 命令列電子郵件工具

用於伺服器的 Ubuntu 命令列電子郵件工具

我開始編寫一些備份日誌檔案的腳本。每當在日誌檔案中發現錯誤時,我想給自己發送一封電子郵件。但是,我想確保我的伺服器不會受到損害,因為我聽說安裝 smtp/mail 為駭客提供了新的選擇。

有沒有一種工具不能接收郵件,只能傳送郵件?另外,安裝時需要考慮哪些安全因素?

答案1

但是,我想確保我的伺服器不會受到損害,因為我聽說安裝 smtp/mail 為駭客提供了新的選擇

任何如果服務可以“為黑客開闢新的選擇”寫得不好。但對於郵件來說,Postfix 或 Exim4 都非常安全。

(一般來說,只要您不使用十年前的 Sendmail,就沒有問題。目前版本是安全的,但我建議無論如何都不要使用 Sendmail – 設定檔不完全是人類可讀的.)

有沒有一種工具不能接收郵件,只能傳送郵件?

任何 MTA(Postfix、Exim4、Sendmail)都可以這種方式運作 – 只需將其配置為僅偵聽環回位址(::1127.0.0.1)。您甚至可以完全停用 SMTP 元件 - 大多數 Unix 程式不需要它並透過/usr/sbin/sendmail1發送郵件,從而使 SMTP 變得不必要。

不過,針對「駭客」確實沒有必要。對於一個像樣的 MTA 來說,最糟糕的情況就是讓它開放中繼——預設配置已經解決了這個問題。

另一種選擇是msmtp,它甚至沒有完整的 SMTP 支援 - 它所能做的就是透過另一個郵件伺服器(例如 Gmail 或您的 ISP 的)中繼郵件。但是,雖然它對於個人電腦很有用,但它並不真正適合伺服器環境。


1/usr/sbin/sendmail」是一個自備的程序全部MTA,而「Sendmail」則是一個具體的MTA。

答案2

只要安裝了標準 MTA(Postfix、Exim4、Sendmail 等),從 shell 腳本發送郵件就相當容易。通常,要傳送,您可以使用mail帶有適當參數的命令,將您的電子郵件內容回顯給程式。例如:

echo "Error occurred in script at `date`" | mail -s "Error running script" [email protected]

參數-s指定主題,然後跟隨電子郵件收件者。

另一個例子

grep -i error /path/to/yourfile.log | mail -s "Errors from script execution" [email protected]

檢查man mail更多選項。

如果您透過 cron 執行腳本,另一個選擇是讓 cron 自動將腳本的輸出透過電子郵件傳送給您。將選項新增MAILTO至您的 crontab 中,如下所示:

[email protected]

每次腳本運行時,您都會收到一封電子郵件,其中包含來自標準輸出的任何輸出。

至於安全性,發送和接收電子郵件是完全不同的兩件事。您可以在不執行接收郵件伺服器的情況下從伺服器發送電子郵件,如果您不需要透過此伺服器接收電子郵件,只需不要執行smtp 守護程式或透過防火牆封鎖對傳入連接埠25 (SMTP) 的存取即可。

相關內容