Stop PHP nobody Spammers

在網絡上發現了一個防止 nobody Spammers 的伺服器程式。

第一步:使用 root 身份登入您的伺服器中。

第二步:停止您所使用的電郵程式。

如 Exim: /etc/init.d/exim stop

第三步:備份您的 /usr/sbin/sendmail,和把 /usr/sbin/sendmail 改為 /usr/sbin/sendmail.hidden

mv /usr/sbin/sendmail /usr/sbin/sendmail.hidden

第四步:把 /usr/sbin/sendmail 改為可以監控使用 /usr/sbin/sendmail 的人仕。

vi /usr/sbin/sendmail

加入以下程式碼

#!/usr/local/bin/perl

# use strict;

use Env;

my $date = `date`;

chomp $date;

open (INFO, ">>/var/log/spam_log") || die "Failed to open file ::$!";

my $uid = $>;

my @info = getpwuid($uid);

if($REMOTE_ADDR) {

print INFO "$date - $REMOTE_ADDR ran $SCRIPT_NAME at $SERVER_NAME \n";

}

else {

print INFO "$date - $PWD - @info \n";

}

my $mailprog = ‘/usr/sbin/sendmail.hidden’;

foreach (@ARGV) {

$arg="$arg" . " $_";

}

open (MAIL,"|$mailprog $arg") || die "cannot open $mailprog: $!n";

while (<stdin> ) {

print MAIL;

}

close (INFO);

close (MAIL);</stdin>

第五步:令新的 /usr/sbin/sendmail 能夠執行。

chmod +x /usr/sbin/sendmail

第六步:新增 log 檔案作為記錄。

touch /var/log/spam_log chmod 0777 /var/log/spam_log

第七步:啟動您所使用的電郵程式。

如 Exim: /etc/init.d/exim start

第八步:最後試試監控功能,只需要新增一個簡單 php 檔案作為測試。

< ?php

$to = ‘your@email.com’;

$subject = ‘your@email.com’;

$message = ‘testing sendmail’;

$headers = "From: your@email.com\r\n" .

‘X-Mailer: PHP/’ . phpversion() . "\r\n" .

"MIME-Version: 1.0\r\n" .

"Content-Type: text/html; charset=utf-8\r\n" .

"Content-Transfer-Encoding: 8bit\r\n\r\n";

// Send

mail($to, $subject, $message, $headers);

?>

最後:看一看記錄檔案。

cat /var/log/spam_log 如記錄正確,將會出現:

Mon Apr 11 07:12:21 EDT 2005 - /home/username/public_html/ - nobody x 99 99 Nobody / /sbin/nologin

2 Comments

  1. kung仔
    Posted October 19, 2005 at 5:02 pm | Permalink

    chris,我想知你住邊?新界?九龍?香港島?
    我住沙田= =

  2. Posted October 24, 2005 at 3:16 am | Permalink

    Kung 仔,

    我往西營盤架。
    離沙田好遠 @@

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*