iT邦幫忙

0

令人頭大又摸不著頭緒的QUARANTINE Mail Report...

  • 分享至 

  • xImage

我的系統是Centos5.2+Postfix+Mailscanner+spamassassin
防垃圾郵件都可以正常運行,只有在每日自動產生QUARANTINE Mail Report突然出了問題
都不會自動發出Report,再請各位大師幫小弟看一下

我於每日crontab -e 下午5點執行
00 17 * * * /root/shell/report.sh

report.sh 內容如下:
#! /usr/local/bin
/usr/bin/php -q /usr/local/bin/qu_report.php

qu_report.php 內容如下:
// Text
// $text_report = sprintf($text, $filter, QUARANTINE_REPORT_DAYS, count($quarantined), QUARANTINE_DAYS_TO_KEEP, $t1);
$text_report = sprintf($text, $filter, $Hours, count($quarantined), $Days, $t1);
if(DEBUG) { echo "<PRE>$text_report</PRE>\n"; }

// Send e-mail
$mime = new Mail_mime("\n");
// $hdrs = array('From' => QUARANTINE_REPORT_FROM_NAME.' <'.QUARANTINE_FROM_ADDR.'>',
// 'To' => $email,
// 'Subject'=> QUARANTINE_REPORT_SUBJECT,
// 'Date' => date("r"));
$hdrs = array('From' => 'MIS Mail Report <'.'mis@abc.com.tw'.'>',
'To' => $email,
'Subject'=> 'ABC Mail Report',
'Date' => date("r"));
// $mime->addHTMLImage(MAILWATCH_HOME.'/images/mailwatch-logo.gif','image/gif','mailwatch-logo.gif',true);
$mime->setTXTBody($text_report);
$mime->setHTMLBody($html_report);
$body = $mime->get();
$hdrs = $mime->headers($hdrs);
$mail_param = array('host' => QUARANTINE_MAIL_HOST);
$mail =& Mail::factory('smtp',$mail_param);
$mail->send($email,$hdrs,$body);
dbg(" ==== Sent e-mail to $email");

}

?>

看/var/log/cron紀錄裡也都是有再執行
Jan 19 12:00:01 mail2 crond[363]: (root) CMD (/usr/sbin/ntpdate time.stdtime.gov.tw > /dev/null 2>&1)
Jan 19 12:00:01 mail2 crond[365]: (root) CMD (sh /root/shell/report.sh )
Jan 19 12:01:01 mail2 crond[375]: (root) CMD (run-parts /etc/cron.hourly)

但是卻都收不到Quarantine Mail Report!
目前現在變得我一定要用手動執行才可以產生每個信箱的Mail Report
手動執行如下
要先到/var/www/html/spamrep下執行/usr/local/bin/qu_report.php

這點也很奇怪,我若用sh檔裡的方式去直接執行/usr/bin/php -q /usr/local/bin/qu_report.php
會產生亂碼,無法正常執行

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

4
mwu4
iT邦新手 2 級 ‧ 2014-01-20 17:40:46
最佳解答

首先請問為何crontab設定「 00 17 * * * /root/shell/report.sh 」,但log檔卻顯示「 12:00:01 mail2 crond[365]: (root) CMD (sh /root/shell/report.sh ) 」?
另如果直接執行「 /usr/bin/php -q /usr/local/bin/qu_report.php 」,會有問題,那麼是否應調整report.sh的內容,先切換到資料夾「 /var/www/html/spamrep 」,再執行「 /usr/bin/php -q /usr/local/bin/qu_report.php 」?
至於為何一定要在資料夾「 /var/www/html/spamrep 」執行,可找一找是否有說明檔案協助瞭解。
謝謝。

jones0227 iT邦新手 4 級 ‧ 2014-01-20 23:35:43 檢舉

mwu4提到:
先切換到資料夾「 /var/www/html/spamrep 」,再執行「 /usr/bin/php -q /usr/local/bin/qu_report.php

小弟想問,先切換到資料夾「 /var/www/html/spamrep 」,再執行「 /usr/bin/php -q /usr/local/bin/qu_report.php ,這個在sh要如何下??

jones0227 iT邦新手 4 級 ‧ 2014-01-20 23:35:44 檢舉

mwu4提到:
先切換到資料夾「 /var/www/html/spamrep 」,再執行「 /usr/bin/php -q /usr/local/bin/qu_report.php

小弟想問,先切換到資料夾「 /var/www/html/spamrep 」,再執行「 /usr/bin/php -q /usr/local/bin/qu_report.php ,這個在sh要如何下??

jones0227 iT邦新手 4 級 ‧ 2014-01-22 17:57:45 檢舉

謝謝你的提醒和指導!果然調整一下語法!
並重新測試sh 就OK了!
感恩

我要發表回答

立即登入回答