禁用ubuntu中的所有邮件功能

时间:2014-08-08 11:04:29

标签: php email ubuntu-12.04 sendmail

我在ubuntu服务器(LAMP)上有一个标准的暂存环境, 上面有几个网页。

有些网页会针对特定工作流事件发送电子邮件。

我必须在系统上运行一些测试,但不能允许随机电子邮件飞过来并向主持人发送垃圾邮件(它发生过一次)。

禁用代码的特定部分或调整网页设置并不是一个好方案,因为系统需要处于类似生产的设置中,而且可能存在于多个地方(或者如果其中一个选项被禁用)我无法冒险。

我能想到的最合理的解决方案是简单地禁用(临时)所有邮件服务(通常与PHP一起使用)。

我可以完全访问服务器和基本的linux技能。

发现这个女巫看起来很不错:

sudo /etc/init.d/sendmail stop

但我需要知道如果有其他可能的邮件服务, 如何检查它们是否正在运行, 如何阻止他们, 如何验证。

我猜上面的命令可能已经足够......但我想听听一些人对这个主题有更多经验的意见。

1 个答案:

答案 0 :(得分:0)

我认为这里存在明确的问题分离问题。我可以看到你使用禁用方法避免在代码中添加测试的原因,但是你有很多不同的途径可以触发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即可。它的另一个好处是,阅读代码的其他人可以很容易地看到将要发生的事情,而不是发送电子邮件并想知道他们为什么不发送,因为服务器已被关闭 - 或者更糟糕的是#39; s已关闭,但系统更新已将其重新打开!

我倾向于避免通过建议改变策略来回答问题,但我觉得你在编程网站上问这个问题,那么应该以更易于管理的方式帮助开发代码的建议可能会有用。