相変わらずコメントスパムだの、トラックバックスパムだのに悩まされています。
対策として、「TrackBack Auto-Discovery の記述をテンプレートから取っ払ってしまうのが有効だ!」「そもそもトラックバックって要るの?」などといわれている昨今ですが、個人的にはとても違和感を感じています。だって便利なものは便利なわけで、それを心無いスパム業者の為に使うのを止めるって、何だか悔しいじゃないですか。
というわけで、前々から考えていた対策を施すことにしました。簡単に言えば、このエントリのタイトル通りのことをしました。
スパム対策には、mt-comment.cgi 及び mt-tb.cgi をリネームしてあげることが有効です。これらをリネームした後、mt-config.cgi の CommentScript 及び TrackbackScript でその名前を指定し、リビルドしてあげます。
しかし、その有効期間は意外と短いですね。一週間くらいでしょうか?「亜細亜ノ蛾」でもそのようなことが書かれていますね。この「Junk slowdown」というスクリプトは今回の対策を行ってから知ったのですが、まぁ、今回の対策で効果が無かったら連携してみようかしら。
話は逸れましたが、リネームしてスパム業者がコメント先、トラックバック先を見失っても、一週間ほどでそれは修正され、新しい住所にスパムがやってくるようになります。そこで再度リネームをしたりするわけですが、毎度毎度これを実行するのは結構面倒くさいです。
そこで、これらの作業を自動的にやってもらうようにしました。具体的には以下のようなスクリプトを書いて、cron に食わせています。いつも通り、とりあえず動けばいいやでやっているので、かなり汚いスクリプトだとは思いますが。たぶん右端が切れてると思うので、ちゃんと読みたいという酔狂な方はこちらをどうぞ。→ファイルをダウンロード
#!/usr/bin/perl use strict; use Data::Dumper; # ----- Setting start ----- # my $mt_dir = '/path/to/mt/'; my $from = 'from@hogehoge.com'; my $to = 'to@hogehoge.com'; my $sendmail_path = "/path/to/sendmail"; # ------ Setting end ------ # # ----- Added library. unshift @INC, $mt_dir . 'lib'; unshift @INC, $mt_dir . 'extlib'; # ----- Make random number. my $new_cm_script = 'mt-comment-'.&create_random_string().'.cgi'; my $new_tb_script = 'mt-tb-'.&create_random_string().'.cgi'; # ----- Path to config file. my $cfg_file = $mt_dir . 'mt-config.cgi'; # ----- Rewrite script name. my @cfg; my $old_cm_script; my $old_tb_script; open(IN,"< $cfg_file") or die "Can't open ".$cfg_file." : $!"; flock(IN, 1) or die "Can't flock : $!"; while (<IN>) { if ($_ =~ /(^CommentScript )(.*)\n/) { push @cfg, $1.$new_cm_script."\n"; $old_cm_script = $2; } elsif ($_ =~ /(^TrackbackScript )(.*)\n/) { push @cfg, $1.$new_tb_script."\n"; $old_tb_script = $2; } else { push @cfg, $_; } } close(IN); open(OUT, "+< $cfg_file"); flock(OUT, 2); seek(OUT, 0, 0); for my $str (@cfg) { print OUT $str; } truncate(OUT, tell(OUT)); close(OUT); # ----- Rename Script. rename($mt_dir.$old_cm_script, $mt_dir.$new_cm_script); rename($mt_dir.$old_tb_script, $mt_dir.$new_tb_script); # ----- Get MT object. require MT; my $mt = MT->new( Config => $cfg_file, Directory => $mt_dir ); # ----- Mail String. my $mstr; $mstr .= ' * Old comment script name: '.$old_cm_script."\n"; $mstr .= ' * New comment script name: '.$new_cm_script."\n"; $mstr .= ' * Old trackback script name: '.$old_tb_script."\n"; $mstr .= ' * New trackback script name: '.$new_tb_script."\n"; $mstr .= "\n"; # ----- Get weblog. require MT::Blog; my @blogs = MT::Blog->load( undef, {unique => 1} ); # sort. @blogs = sort {$a->id <=> $b->id} @blogs; for my $blog (@blogs) { # Rebuild welog. $mstr .= ' * Rebuild start blogID "'.$blog->id.'".'."\n"; $mt->rebuild( BlogID => $blog->id ) or $mstr .= ' * Rebuild error! blogID "'.$blog->id.'".'."\n".$mt->errstr; $mstr .= ' * Rebuild end blogID "'.$blog->id.'".'."\n\n"; } # ----- Send mail. my $subject = '[info] The rename script was running.'; open(SENDMAIL, "|$sendmail_path -t"); print SENDMAIL <<END; From: $from To: $to Subject: $subject $mstr END close(SENDMAIL); sub create_random_string { srand(); my @charset = ('a'..'z','A'..'Z','0'..'9'); my $pwd = ''; for (my $i=0; $i<8; $i++){ $pwd .= $charset[int(rand(62))]; } return $pwd; }
やっていることは、以下の通り。
- ランダムな8文字の文字列を取得し、mt-comment-xxxxxxxx.cgi、mt-tb-xxxxxxxx.cgi とファイル名を決定
- mt-config.cgi を書き換え
- cgi ファイルをリネーム
- MT をリビルド
- 結果をメール送信
僕のところでは、一週間に一度これを動かすようにしてみました。早朝のアクセスが少ない時間帯に走らせます。毎日やるのが効果が高いんでしょうが、フルリビルドが走るのでなるべく頻度を低くした方が良いのかと。その辺はスパム来襲の具合を見て調整ですかね。
ただし、これでまったくスパムが来なくなるというわけではないことに注意してください。スパム業者には酔狂な輩がいて、明らかに手動で送信しているだろ!的なケースも多々有り、それは防げません。防げるのはあくまでも、機械的に大量にスパムを送りつけてくる、サーバーに著しく負荷をかけるようなケースだけです。ま、それで十分有効ですよね。
zuma
初めまして。MT4.1で導入させていただきました。正常に動いたときは感動しました。
MT4.1にはスパムコメント防止機能が付いてはいますが(Captcha:)トラックバックには何もなかったので、こういうスクリプトを探していました。本当に嬉しいです。
これからも有用な情報をよろしくお願いいたします。
Wordpress
Wavenet enfoca principalmente su trabajo en proveer servicios de excelencia tecnológica, siendo poseedora de la mejor infraestructura en el país dedicada exclusivamente a brindar servicios de Webhosting en múltiples plataformas, Unix o Windows, desde servicios básicos como el hosting compartido hasta servicios complejos para revendedores, hosting dedicado, servicios profesionales, servicios de firewall y demás. Wavenet es actualmente la empresa líder en servicios de presencia en Internet de Latinoamerica, contando con la más amplia gama de servicios del mercado, La mejor infraestructura de hardware e inmejorable conexión a Internet.
อุปกรณ์มายากล
ทรุดตัวลงพร้อมด้วยฟองสบู่ อุปกรณ์มายากล นักวิจารณ์สละให้อุปไมยพร้อมทั้งศตพรรษที่อยู่ข้อคดีเพ้อคลั่งแถวลิป อุปกรณ์มายากล ด้วยกันคาดคะเนคดีรุนแรง https://th-th.facebook.com/ufomagic แห่งจะเละแห่งแบบอย่างสถานที่ละม้ายกักคุมพอวันที่อีกค้าขาย อุปกรณ์มายากล หยุดงานดูแลงานพร้อมด้วยแจกแจงว่าร้ายคณะสายเลือดอัฐ
Itmemail.Com
ในแถบบนบานข้างซ้ายเครื่องใช้หน้าต่าง our web page ทักษิณส่วนใต้ของภาพโปรแฟ้มข้อมูลเครื่องใช้คุณที่ตั้งตรงนี้ไม่จัดหามามีอยู่ข้อคดีสำราญเพราะว่าผู้ใช้ our web page ผลรวมไม่เบาพร้อมกับกล้าหาญจะประกอบด้วยการปรับเปลี่ยนเดินภายในภายภาคหน้า our web page ผู้บริโภคโปร่งบางคนขบคิดติเตียนมันครอบครองหัวเรื่องในที่ดีงามเนื้อที่จะเพียงแค่จะการรวมกันชั้นใน
สมัคร facebook
ใช้สถานที่เล็กลง สมัคร facebook ข้างในโทรศัพท์ของหุ้นส่วนรายงานกับชำระคืนข่าว สมัคร facebook ย่อมถิ่นที่เป็นส่วนหนึ่งของคดีมุมานะตำแหน่งมีอยู่ปริมาตรโตข้าวของเครื่องใช้จะ http://itmemail.com/?p=24 ลุกลามเข้าเดินข้างในประเทศกำลังพลงอกงาม สมัคร facebook บริษัทหาได้คล้องการก้าวย่างขึ้นงานปฏิบัติหน้าที่แห่งสถานที่แทบทวีปอาฟริกาอเมริกา
ایران چارتر, چارتر ایران ,Iran Charter
Worthwhile details ایران چارتر, چارتر ایران ,Iran Charter. Privileged me personally I came across your website accidentally, for surprised the reason why the following accident decided not to took place before! My spouse and i saved that.