centos-如何禁用 sendmail/clientmqueue?

centos-如何禁用 sendmail/clientmqueue?

由于 sendmail 向 root 发送电子邮件(/var/spool/mail/root 为 2GB),我们服务器的 /var/ 方向一直在填满。

我们的所有站点脚本都使用外部 smtp 服务器来发送电子邮件,因此我们希望在服务器上禁用 sendmail,以避免此问题再次发生,因为每次目录填满时 mysql 都会关闭,因为它无法写入 /var/log/ 目录,因为它空间不足。

有什么方法可以安全地关闭 sendmail,而不会影响 php 连接到外部 smtp?我不确定 sendmail 是否用于此目的。

或者也许有人知道无论如何都要禁止 sendmail 向 root 发送电子邮件的方法。

答案1

最好的办法是通过 /etc/aliases 重定向 root 的邮件。选择另一个可以处理邮件量的地址。如果失败,则将其重定向到 /dev/null。假设 PHP 页面是为与特定的外部 SMTP 服务器通信而编写的,那么 Sendmail 可以关闭,并且不会影响 PHP 发送邮件。如果它们只是发送邮件而不指定要连接的服务器,它们最终会通过 localhost 进行中继,因此在本地关闭 sendmail 会导致 PHP 脚本失败。

答案2

关闭 sendmail 可能会有所帮助,也可能不会,这取决于本地邮件的生成方式。您最终可能仍会得到一个 2G 的根邮箱。您需要决定是否应该将此计算机上用户的邮件发送到其他地方或丢弃。您可以通过/etc/mail/aliases“静态”解决方案(因为随着系统中的每个新用户添加,您也需要在此文件中添加一行)或更“动态”的解决方案来执行此操作,例如,本地用户的电子邮件会转发给其他地方的指定用户:

LOCAL_CONFIG
Kuser user -m -a.FOUND

LOCAL_RULE_0
R$- < $=w . > $*        $: $(user $1 $) < $2 . > $3
R$- . FOUND < $=w . > $*          $@ john.doe < @ example . com . > $3

上面的几行添加到sendmail.mc。接下来,根据发行版的指示,生成sendmail.cf并重新启动 sendmail。在 CentOS 中,这意味着运行 ,/etc/mail/make然后运行service sendmail restart​​。

答案3

如果以 root 身份运行 cron,只需在第一行发送 MAILTO=""(如果您有兴趣接收通知)。建议将其设置为将监控 crontab 活动的电子邮件地址。

MAILTO=""
* * * * * /bin/bash script.sh

或发送至监控电子邮件地址

MAILTO="[email protected]"
* * * * * /bin/bash script.sh  

相关内容