我在 Ubuntu 服务器(LAMP)上有一个标准的登台环境,上面有几个网页。
有些网页会在特定工作流事件发生时发送电子邮件。
我必须在系统上运行一些测试,但不能允许随机电子邮件飞过来并向版主发送垃圾邮件(这种情况发生过一次)。
禁用代码的特定部分或调整网页设置并不是好的情况,因为系统需要处于类似生产的设置,而且可能在几个地方(或如果其中一个选项被禁用则为后备方案)并且我不能冒这个险。
我能想到的最合理的解决方案就是简单地禁用(暂时)所有邮件服务(通常用于 PHP)。
我拥有服务器的完全访问权限和基本的 Linux 技能。
发现这个女巫看起来很适合开始:
sudo /etc/init.d/sendmail stop
但我需要知道是否存在其他可能的邮件服务,
如何检查它们是否正在运行,
如何停止它们,
如何验证。
我想上述命令可能就足够了......但我想听听在这个领域更有经验的人的意见。
答案1
如果您像这样停止整个邮件服务器(/etc/init.d/sendmail stop
),您可能会遇到一些困难,无法正确测试您的代码。例如,在执行发送邮件的操作时,可能会等待太长时间并产生超时,因为邮件服务器未启动,导致您认为您的代码无法正常运行。
我个人对这个问题的做法不是停止邮件服务器,而是在代码级别和系统级别采取行动:
- 首先,如果你需要发送邮件,你不需要拥有一个完整的邮件服务器,比如发送邮件或者后缀或者邮件系统已安装。您只需安装邮件传输协议包足以使用配置的邮件中继发送邮件
/etc/ssmtp/ssmtp.conf
。 - 如果您的应用程序使用本地二进制文件(如
mail
或)发送邮件sendmail
,则停止邮件服务器可能不是解决方案:邮件可以在本地排队,如果您重新启动邮件服务器,则所有累积的邮件将立即发送。 - 我理想的解决方案是直接从您的应用程序使用 SMTP 协议发送邮件,通过连接到 IP 地址和端口(默认为 25),可能使用用户名和密码进行身份验证。
- 如果您的应用程序能够将邮件发送到中继(本地或外部),请确保它不是硬编码在您的代码中,而是通过专用于您的应用程序的配置文件定义。目标电子邮件地址也应如此。
- 如果您尊重上一点,那么您可以构建一个具有不同电子邮件配置的临时服务器。临时服务器的配置可以是将邮件发送到您的个人电子邮件地址。
- 这种方法的优点是允许您测试电子邮件功能,而不会干扰生产邮件的实际目的地。此外,您还可以确保不会产生禁用邮件服务器的副作用。