在網絡上發現了一個防止 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
chris,我想知你住邊?新界?九龍?香港島?
我住沙田= =
Kung 仔,
我往西營盤架。
離沙田好遠 @@