2011-02-08 81 views
1

對於我們的Web項目,我們需要一個可靠的電子郵件分發機制。由於在過去不好的經驗,我已經寫了一個bash腳本(每小時執行),它發送通知的電子郵件,如果從linux命令行發送電子郵件的不同方式

  1. 的qmail-發送過程沒有運行
  2. 中有太多的失敗電子郵件日誌

對於發送通知電子郵件,我顯然不想依賴於qmail,因爲如果qmail-send進程沒有運行,qmail將不可用。但是,下面的命令通過qmail的發送通知電子郵件:

echo "failure rate critical" | mail -s "qmail notification" [email protected] 

什麼是從Linux命令行發送電子郵件,而不qmail的最簡單的方法是什麼?我可以使用sendmail嗎?

如果你們有智能報警系統來監控qmail,請告訴我。

回答

2

調用/usr/sbin/sendmail二進制。無論您使用哪個MTA,通常都可以使用它,並且如果名稱爲sendmail,您可以確定它支持標準的sendmail接口。

使用它的最簡單方法是調用sendmail -t,然後將包含有效To標頭的電子郵件寫入其標準輸入。如果您省略了-t,則必須將收件人地址作爲命令行參數傳遞。

另一種解決方案是使用SMTP,但如果您需要從bash腳本發送電子郵件,這顯然是一個糟糕的解決方案,因爲Bash中沒有標準庫,其中包含通過smtp發送電子郵件的函數(與python中的不同不能使用sendmail而是通過SMTP輕鬆發送郵件)。

+0

謝謝,這聽起來很合理。由於我不太確定sendmail是否會在影響qmail的系統故障時正常工作,我實現了[另一個解決方案](http://serverfault.com/questions/234411/i-need-to-know-when-qmail -is-不運行)。我在另一臺服務器上觸發了一個php腳本,向我發送通知電子郵件。 – aimfeld 2011-02-17 09:13:13

1

您在POSIX中有一個mail實用程序。如果你只用於linux,sendmail是可以的(但是你依賴於系統的(錯誤)配置,對吧?)。

總而言之,SMTP協議並不那麼困難。我會說你可以用純SMTP進行談話。這是關於四個命令發佈一個簡單的郵件。它是便攜式:) 但如果有併發症,它可能會導致PITA ...