終結垃圾郵件(五) : 補充sa-stats.pl在瀏覽器執行
補充:
sa-stats.pl 的執行在FreeBSD上沒問題, 我們也都看得到執行結果; 但是我也提到為什麼把這個perl script放在/usr/local/www/apache22/cgi-bin目錄下的原因, 就是為了想從瀏覽器直接執行! 這個方式真得是很方便, 可惜的是直接在網址打http://server/cgi-bin/sa-stats.pl, 會看到下面的結果:
Time Spent Running SA: 0.00 hours
Time Spent Processing Spam: 0.00 hours
Time Spent Processing Ham: 0.00 hours
TOP SPAM RULES FIRED
----------------------------------------------------------------------
RANK RULE NAME COUNT %OFMAIL %OFSPAM %OFHAM
----------------------------------------------------------------------
----------------------------------------------------------------------
TOP HAM RULES FIRED
----------------------------------------------------------------------
RANK RULE NAME COUNT %OFMAIL %OFSPAM %OFHAM
----------------------------------------------------------------------
----------------------------------------------------------------------
奇怪! 之前在主機上執行, 不是很正常的嗎? 為什麼現在資料的部份都沒有出現呢? 原因應該是因為我們在主機上執行時都是使用root權限, 可是透過Apache瀏覽時是使用www這個使用者帳號, 所以權限不足!
解決方法可以使用setuid, 在執行這個perl script前先change root, 不過現在都建議使用sudo來做這個動作。(可以參考:http://www.real-blog.com/linux-bsd-notes/341)
先安裝sudo:
# cd /usr/ports/security/sudo
# make install clean
使用visudo指令來授予權限給www這個使用者可以執行perl script。
www ALL=NOPASSWD:/usr/local/bin/sa-stats.pl
www ALL=NOPASSWD:/usr/local/bin/spamstats.pl
另寫一個shell script, 內容如下:
#!/bin/sh
# disable filename globbing
set -f
echo "Content-type: text/plain; charset=iso-8859-1"
echo
echo
sudo /usr/local/bin/sa-stats.pl
結果是成功的! 記得, 要chmod a+x 這個script。(可以用同樣的方法來設定spamstats.pl)
如果有錯誤, 可以先看一下httpd的log。
# more /var/log/httpd-error.log
sa-stats.pl 的執行在FreeBSD上沒問題, 我們也都看得到執行結果; 但是我也提到為什麼把這個perl script放在/usr/local/www/apache22/cgi-bin目錄下的原因, 就是為了想從瀏覽器直接執行! 這個方式真得是很方便, 可惜的是直接在網址打http://server/cgi-bin/sa-stats.pl, 會看到下面的結果:
Time Spent Running SA: 0.00 hours
Time Spent Processing Spam: 0.00 hours
Time Spent Processing Ham: 0.00 hours
TOP SPAM RULES FIRED
----------------------------------------------------------------------
RANK RULE NAME COUNT %OFMAIL %OFSPAM %OFHAM
----------------------------------------------------------------------
----------------------------------------------------------------------
TOP HAM RULES FIRED
----------------------------------------------------------------------
RANK RULE NAME COUNT %OFMAIL %OFSPAM %OFHAM
----------------------------------------------------------------------
----------------------------------------------------------------------
奇怪! 之前在主機上執行, 不是很正常的嗎? 為什麼現在資料的部份都沒有出現呢? 原因應該是因為我們在主機上執行時都是使用root權限, 可是透過Apache瀏覽時是使用www這個使用者帳號, 所以權限不足!
解決方法可以使用setuid, 在執行這個perl script前先change root, 不過現在都建議使用sudo來做這個動作。(可以參考:http://www.real-blog.com/linux-bsd-notes/341)
先安裝sudo:
# cd /usr/ports/security/sudo
# make install clean
使用visudo指令來授予權限給www這個使用者可以執行perl script。
www ALL=NOPASSWD:/usr/local/bin/sa-stats.pl
www ALL=NOPASSWD:/usr/local/bin/spamstats.pl
另寫一個shell script, 內容如下:
#!/bin/sh
# disable filename globbing
set -f
echo "Content-type: text/plain; charset=iso-8859-1"
echo
echo
sudo /usr/local/bin/sa-stats.pl
結果是成功的! 記得, 要chmod a+x 這個script。(可以用同樣的方法來設定spamstats.pl)
如果有錯誤, 可以先看一下httpd的log。
# more /var/log/httpd-error.log
留言