2013-12-12 76 views
0

我想知道是否有人可以幫助我查詢。我的服務器最近有一個電子郵件帳戶被黑客入侵,隨後大量的垃圾郵件出現在郵件隊列中。我已更改相關電子郵件帳戶的密碼,並使用qmHandle從郵件隊列中刪除垃圾郵件。我想阻止這種情況再次發生,我想知道PHP是否可以訪問郵件隊列並運行每小時運行一次的cron作業,並運行腳本來提醒我郵件隊列是否超過設定的數量的郵件,所以我可以提醒並作出相應的反應?我的服務器是運行Redhat的Linux,如果這有什麼區別?對Linux服務器上的郵件隊列的PHP訪問

很多預先感謝。

+0

mailqueue將擁有/ root用戶運行。除非你想以root身份運行PHP,否則它將無權訪問隊列。 –

+0

安裝像在機器上作爲服務一樣運行的nagios/cactus監視器,並且可以在操作系統級監視隊列,然後他們有一個web前端來監視它。這是我的一個nagios圖表http://i39.tinypic.com/n2oq5g.png – Dave

+0

感謝您的迅速回復。如果我以root的身份運行腳本,它只是一個列出郵件目錄中文件數目的情況? – Nige1

回答

0

,因爲我不知道你使用的Maildaemon,我可以拋出一些事情要考慮:

  1. 要顯示闕,用「MAILQ」(一個Debian/Postfix的系統)
  2. 從PHP通過添加的「grep」到「MAILQ」
+0

mailq是postfix/sendmail只我相信不是所有的MTA的 – Dave

+0

你是對的,我編輯我的帖子來清除它。 – JustAPirate

+0

你好,服務器使用QMail,所以我想如果我以root身份運行一個PHP腳本,我將能夠列出郵件目錄的內容,就像我將一個Web目錄? – Nige1

0

由於正在使用的qmail訪問它,使用「命令」(如根從非priviledged用戶執行的命令)

  • 也許過濾/組它,並且你在服務器上有qmHandle,就是了 非常坦率的。 qmHandle -s會給你一些統計信息,包括遠程隊列中的消息數量。遠程隊列包含排隊傳遞的傳出郵件。您可以使用grep和cut來拼湊單行程序,這會給您遠程隊列中消息的數量,如下所示:qmHandle -s | grep remote | cut -d: -f2

  • 0

    您不需要PHP來做到這一點。一個由cron運行的簡單bash腳本就可以做到這一點。 Somethig這樣的:

    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