#!/usr/bin/perl ################## 設定項目 ###################### require '../jcode.pl'; $script = "./spam.cgi"; $subject = "スパムメールのご連絡 [BEYOND NETWORK]"; # sendmailのパス $sendmail = '/usr/sbin/sendmail'; # ヘッダーファイル $headerfile = '../header.html'; # 戻り先 $home = "http://www.beyondnetwork.com/"; # 送信先メールアドレス $mailto = 'luca@beyondnetwork.com'; ################## メイン処理 ###################### &decode; if ($FORM{'mode'} eq "send") { &send; } &html; ################## ヘッダー表示 #################### sub header { print "Content-type: text/html\n\n"; open (OUT, "$headerfile") || &error("ヘッダーファイルが開けませんでした"); while () { print $_; } close(OUT); EOM } ################## フッター表示 #################### sub footer { print "\n"; print "\n"; print "\n\n"; } ################## HTML表示 #################### sub html { &header; print <<"EOM";
  スパムメールのご報告

当サイトのドメインまたは、返信先に当サイトのドメインが含まれている、
スパムメールを受信された場合は、お手数ですがご連絡をお願いいたします。
早急に確認して、アカウント停止等の措置を取らさせていただきます。
フォームがご利用できない場合は、お手数ですがメールでご連絡ください。

メールアドレス※空白可
スパム送信元
メールヘッダー
メールの本文
EOM &footer; exit; } ################## 送信処理 #################### sub send { if ($FORM{'mailfrom'} eq "") { &error("スパムメールの送信元をご入力ください"); } if ($FORM{'mailfrom'} eq "") { &error("メールの本文をご入力ください"); } # 時間とホストを取得 &get_time; &get_host; $mail_body = <<"EOM"; $subject 送信日時:$date ブラウザ:$ENV{'HTTP_USER_AGENT'} ホスト名:$host Eメール:$FORM{'mail'} スパム送信元:$FORM{'mailfrom'} メールヘッダー: $FORM{'header'} メール内容: $FORM{'message'} EOM $subject2 = $subject; &jcode'convert(*subject2,'jis'); open(MAIL,"| $sendmail -t") || &error("メール送信に失敗しました"); print MAIL "To: $mailto\n"; print MAIL "From: $FORM{'mail'}\n"; print MAIL "Subject: $subject2\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "X-Mailer: $ver\n\n"; print MAIL "$mail_body\n"; close(MAIL); # 完了メッセージ &header; print <<"EOM";


スパムメールのご報告をいただき、誠にありがとうございました。

早急に確認しまして、アカウント削除等の措置を取らさせていただきます。


[もどる]
EOM &footer; exit; } ################## デコード処理 #################### sub decode { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 文字コード変換 (Shift-JISコード) &jcode'convert(*value,'sjis'); $FORM{$name} = $value; } } ################## エラー処理 #################### sub error { &header; print "



\n"; print "ERROR: $_[0]\n"; print "


\n"; print "[もどる]
\n"; print "
\n"; &footer; exit; } ################## 時間の取得 #################### sub get_time { $ENV{'TZ'} = "JST-9"; local($min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[1..6]; local(@week) = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); # 日時のフォーマット $date = sprintf("%04d/%02d/%02d(%s) %02d:%02d", $year+1900,$mon+1,$mday,$week[$wday],$hour,$min); } ################## ホスト情報の取得 #################### sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "" || $host eq $addr) { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr; } }