簡體   English   中英

禁用ubuntu中的所有郵件功能

[英]DISABLE all mail functions in ubuntu

我在ubuntu服務器(LAMP)上有一個標准的登台環境,上面有幾個網頁。

有些網頁會發送有關特定工作流程事件的電子郵件。

我必須在系統上進行一些測試,但不能讓隨機的電子郵件飛過並向版主發送垃圾郵件(發生一次)。

禁用代碼的特定部分或調整網頁設置不是一個好方案,因為系統需要處於類似於生產的設置中,而且可能存在多個位置(如果禁用了其中一個選項,則可能存在回退方案) ),我不能冒險。

我能想到的最合理的解決方案是簡單地禁用(臨時)所有郵件服務(通常與PHP一起使用)。

我對服務器具有完全訪問權限,並且具有基本的Linux技能。

發現這個女巫看起來不錯開始:

sudo /etc/init.d/sendmail stop

但是我需要知道如何還有其他可能的郵件服務,如何檢查它們是否正在運行,如何停止它們,如何進行驗證。

我想上面的命令可能就足夠了……但是我想聽聽一些對此領域有更多經驗的人的意見。

我認為這里確實存在關注點分離問題。 我可以看到您使用禁用方法來避免在代碼內添加測試的理由,但是您有多種不同的觸發mail()途徑的事實很可能表明您的代碼存在結構性問題。

當您構建一個系統以盡量減少端點時,這一點尤其重要-如果您決定將來從使用sendmail更改為更強大的系統(例如phpmailerswiftmailer ,則必須組合代碼以進行更改。 而僅在代碼中只使用一次mail()並將其定向到其他區域的構建包裝器可以更快地進行更改,並消除發生此類事故的風險。

實際上,對於測試結果可能確實是災難性的電子郵件(請記住,您可能並不總是維護此代碼)並且向很多人發送垃圾郵件,積極的選擇可能有用:

function send_email($args...){
    if (LIVE_EMAIL){
         mail($args);
    }
    else {
         log_email_to_file($args);
    }
}

然后在配置文件中的其他地方

define('LIVE_EMAIL',true);

現在,有人需要顯式啟用電子郵件,並且您只需要在需要時調用send_mail 它的另一個好處是,其他閱讀代碼的人可以真正輕松地看到將要發生的事情,而不是發送電子郵件並想知道為什么由於服務器已關閉而不發送電子郵件,或者更糟糕的是認為服務器已關閉而是系統更新了已重新開啟!

我傾向於通過建議改變策略來避免回答問題,但是當您在編程站點上詢問時,我覺得這樣的建議可能會有用,它可以幫助您以更易於管理的方式開發代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM