
我開始編寫一些備份日誌檔案的腳本。每當在日誌檔案中發現錯誤時,我想給自己發送一封電子郵件。但是,我想確保我的伺服器不會受到損害,因為我聽說安裝 smtp/mail 為駭客提供了新的選擇。
有沒有一種工具不能接收郵件,只能傳送郵件?另外,安裝時需要考慮哪些安全因素?
答案1
但是,我想確保我的伺服器不會受到損害,因為我聽說安裝 smtp/mail 為駭客提供了新的選擇
任何如果服務可以“為黑客開闢新的選擇”寫得不好。但對於郵件來說,Postfix 或 Exim4 都非常安全。
(一般來說,只要您不使用十年前的 Sendmail,就沒有問題。目前版本是安全的,但我建議無論如何都不要使用 Sendmail – 設定檔不完全是人類可讀的.)
有沒有一種工具不能接收郵件,只能傳送郵件?
任何 MTA(Postfix、Exim4、Sendmail)都可以這種方式運作 – 只需將其配置為僅偵聽環回位址(::1
和127.0.0.1
)。您甚至可以完全停用 SMTP 元件 - 大多數 Unix 程式不需要它並透過/usr/sbin/sendmail
1發送郵件,從而使 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) 的存取即可。