【问题标题】:PHP access to mail queue on Linux serverPHP访问Linux服务器上的邮件队列
【发布时间】:2013-12-12 14:42:58
【问题描述】:

我想知道是否有人可以帮助解决我的问题。我的服务器最近有一个电子邮件帐户被黑,随后大量垃圾邮件出现在邮件队列中。我已更改相关电子邮件帐户的密码并使用 qmHandle 从邮件队列中删除垃圾邮件。我想防止这种情况再次发生,我想知道 PHP 是否可以访问邮件队列并运行可以每小时运行的 cron 作业并运行脚本以在邮件队列超过设定数量时提醒我邮件,以便我可以收到警报并做出相应的反应?如果这有什么不同,我的服务器是运行 Redhat 的 Linux?

非常感谢。

【问题讨论】:

  • 邮件队列将由 root 拥有/操作。除非您想以 root 身份运行 PHP,否则它将无权访问队列。
  • 安装类似 nagios/cactus 监控的东西,它作为服务在机器上运行,可以在操作系统级别监控您的队列,然后他们有一个 Web 前端来监控它。这是我的 nagios 图之一i39.tinypic.com/n2oq5g.png
  • 感谢您的迅速回复。如果我以 root 身份运行脚本,是否只是列出邮件目录中文件数的情况?
  • @Dave - 谢谢 - 看起来很棒 - 虽然安装起来看起来很复杂。我的服务器由 Rackspace 管理,因为我现在对服务器的运行一无所知,而且我很确定他们不会支持它:(
  • 如果它的机架空间您有 2 个选项,您可以一次性支付它们为您设置/配置它,或者您可以按照一些分步教程进行操作,那里有负载,您可以复制和如果您想查看如何伪造 munin 和 nagios 邮件队列监控,请粘贴命令

标签: php linux email queue


【解决方案1】:

由于我不知道您使用的是哪个 Maildaemon,所以我可以提出一些想法:

  1. 要显示 que,请使用“mailq”(在 Debian/Postfix 系统上)
  2. 要从 php 访问它,请使用“sudo”(从非特权用户以 root 身份执行命令)
  3. 也许可以通过将“grep”添加到“mailq”来过滤/分组

【讨论】:

  • mailq 只是 postfix/sendmail 我相信不是所有的 MTA 的
  • 您好,服务器使用 QMail,所以我想如果我以 root 身份运行 php 脚本,我将能够像列出 web 目录一样列出邮件目录内容?
  • 不是真的 mailq 给你一个单一的文本流,你必须对其进行正则表达式才能提取有用的信息,因为它充满了废话
【解决方案2】:

由于您使用的是 qmail,并且您在服务器上有 qmHandle,所以它相当简单。 qmHandle -s 会给你一些统计信息,包括远程队列中的消息数量。远程队列包含排队等待传递的传出消息。您可以使用 grep 和 cut 拼凑一个单行代码,这将为您提供远程队列中消息数量的计数,如下所示:qmHandle -s | grep remote | cut -d: -f2

【讨论】:

    【解决方案3】:

    您不需要 PHP 来执行此操作。一个由 cron 运行的简单 bash 脚本就可以做到。类似的东西:

    nbline=`mailq|wc -l`
    if [ $nbline -gt $seuilMails ]
    then
      echo -e "\nSeuil queue postfix dépassé ($nbline lignes)" >> $msgFile
      sendmail=true
      else echo -e "\nQueue postfix normale" >> $msgFile
    fi
    if [ "$sendMail" == true ]; then
            mailto_admins "$sujet" "$msgFile"
    fi

    【讨论】:

      猜你喜欢
      • 2019-10-04
      • 2020-06-16
      • 1970-01-01
      • 2015-12-07
      • 2014-03-08
      • 2015-02-25
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      相关资源
      最近更新 更多