我在ubuntu服务器(LAMP)上有一个标准的暂存环境, 上面有几个网页。
有些网页会针对特定工作流事件发送电子邮件。
我必须在系统上运行一些测试,但不能允许随机电子邮件飞过来并向主持人发送垃圾邮件(它发生过一次)。
禁用代码的特定部分或调整网页设置并不是一个好方案,因为系统需要处于类似生产的设置中,而且可能存在于多个地方(或者如果其中一个选项被禁用)我无法冒险。
我能想到的最合理的解决方案是简单地禁用(临时)所有邮件服务(通常与PHP一起使用)。
我可以完全访问服务器和基本的linux技能。
发现这个女巫看起来很不错:
sudo /etc/init.d/sendmail stop
但我需要知道如果有其他可能的邮件服务, 如何检查它们是否正在运行, 如何阻止他们, 如何验证。
我猜上面的命令可能已经足够......但我想听听一些人对这个主题有更多经验的意见。
答案 0 :(得分:0)
我认为这里存在明确的问题分离问题。我可以看到你使用禁用方法避免在代码中添加测试的原因,但是你有很多不同的途径可以触发mail()
,这可能是代码中结构性问题的明显原因。
在构建系统以尝试将端点降至最低时,这一点尤为重要 - 如果您决定将sendmail改为使用更强大的系统,例如phpmailer
或swiftmailer
在将来,您必须梳理您的代码才能进行更改。而建筑包装器只需在代码中使用mail()
一次,并将其他区域引导至此,可以更快地进行更改,并消除此类事故的风险。
事实上,对于测试可能带来真正灾难性后果的电子邮件(请记住,您可能并不总是维护此代码)和垃圾邮件很多的人,正面切换可能会有用:
function send_email($args...){
if (LIVE_EMAIL){
mail($args);
}
else {
log_email_to_file($args);
}
}
然后在配置文件中的其他地方
define('LIVE_EMAIL',true);
现在有人需要明确启用电子邮件,您只需在需要时拨打send_mail
即可。它的另一个好处是,阅读代码的其他人可以很容易地看到将要发生的事情,而不是发送电子邮件并想知道他们为什么不发送,因为服务器已被关闭 - 或者更糟糕的是#39; s已关闭,但系统更新已将其重新打开!
我倾向于避免通过建议改变策略来回答问题,但我觉得你在编程网站上问这个问题,那么应该以更易于管理的方式帮助开发代码的建议可能会有用。