土曜日, 7月 04, 2009

Google Apps を Value domain で設定メモ

Google Apps を Value domain で利用するとき、ハマった MX の設定メモ
DNS設定フィールドへ以下を記入
a * 000.000.000.000
mx ASPMX.L.GOOGLE.COM. 1
mx ALT1.ASPMX.L.GOOGLE.COM. 5
mx ALT2.ASPMX.L.GOOGLE.COM. 5
mx ASPMX2.GOOGLEMAIL.COM. 10
mx ASPMX3.GOOGLEMAIL.COM. 10
mx ASPMX4.GOOGLEMAIL.COM. 10
mx ASPMX5.GOOGLEMAIL.COM. 10
cname mail ghs.google.com.
txt @ v=spf1 include:aspmx.googlemail.com ~all
手順1
  1. Google Apps に申し込むとドメインの確認が必要になる。
  2. cname を mx レコードの下に追加でしばらく待つと確認される。
  3. 確認後は、この cname は削除する。
手順2
  1. Gmail を有効にするには、mx レコードの設定が必要になる。
  2. はじめからある mx と txt を削除して、引用のように設定。
  3. cname は、Gmail をオリジナルドメインで設定するため後で追加する必要があるため、初めから追加して無駄な時間を省く。
  4. mx レコードの確認は、コントロールパネル画面右上ヘルプより、管理の基本事項 › 管理者アカウントの管理 › MX レコードの設定 > セクション 4: MX レコードのステータスの確認 にドメインを入力する。
手順3
  1. mx レコードが確認されたら、メールをクリックして、ウェブアドレス > URLを変更 から、オリジナルドメインに変更する。
  2. すぐに、オリジナルURLから、Gmail を確認できるはず
以上、設定で少しハマったので、メモメモ・・・

日曜日, 5月 17, 2009

cgi全角文字チェック

英語スパムが掲示板に大量に来るので、まず英数チェックで対策。

はじめは以下のように、英数文字だけならOUTとしてみた。

#スパム対策

if( isAlNum($name) ){
  &error("<br>入力が制限されています。");
}
if( isAlNum($title) ){
  &error("<br>入力が制限されています。");
}
if( isAlNum($msg) ){
  &error("<br>入力が制限されています。");
}

sub isAlNum{
  my $str = shift || return(undef);

  #-- 英数字のみか --#
  if( $str =~ /^[a-zA-Z0-9]{1,}$/ ){
    return(1);
  }
  #-- 英数字以外が含まれる --#
  else{
    return(1);
  }
}

参考:CGI・Perl】半角英数字のみかチェックする


しかし、件名や名前に記号を入れられてチェックできず。
そこで、英数だけでなく記号も含むように以下のように改造。

sub isAlNum{
  my $str = shift || return(undef);

  #-- 英数字のみか --#
  if( $str =~ /^[!-~]{1,}$/ ){
    return(1);
  }
  #-- 英数字以外が含まれる --#
  else{
    return(1);
  }
}
しかし、これには半角スペースは含まれないので、
件名や名前に半角スペースが入るとOUT。

全角文字チェックがあったので、変更。

  my $str = shift || return(undef);

if ($str =~ /[\xA1-\xFE][\xA1-\xFE]/) {
  return(0);
}

else {
    return(1);
}
ところがこれは、eucのみで動作らしいので、動かず。

そこで、jcodeを使って無理やりeucに変換。
my $strは変換できないそうなので、cgi全部チェックして
$strを使ってないことを確認して、myをとる。

  $str = shift || return(undef);

jcode::convert(\$str, 'euc');

if ($str =~ /[\xA1-\xFE][\xA1-\xFE]/) {
  return(0);
}

else {
    return(1);
}


念のため、エラーもホスト情報でチェックしていると偽装

#スパム対策

if( isAlNum($name) ){
  &error("<br>$host は、アクセス制御されています。");
}
if( isAlNum($title) ){
  &error("<br>$host は、アクセス制御されています。");
}
if( isAlNum($msg) ){
  &error("<br>$host は、アクセス制御されています。");
}

なにもスパマーにエラー理由を正直に教える必要はないなと考え。

運用から12時間、現在のところは1件も入っていない。
まずは成功か・・・














Technoratiのタグ