SPAM

emailがSPAMであふれて正常な運用を妨げるようになったのは、20世紀の最後の数年だったと記憶しています。

現在、わたしのgmailのアカウントでは、スパム判定されているのが800件ぐらいあります。30日たつと自動で消去されますから、30日で800件、1日25件程度と言うことになります。一時期は1日200件はSPAMが来ていたので、そのころから比べるとずいぶん減ったと思います。SPAMそのものが減ったのではなくて、怪しいメールはそもそもgmailが受け取らないようにしているようなので、実際にはこれより多いかもしれません。

SPAMの件数

97年ごろの機械学習によるSPAM判定の最初期には、SPAM ASSASSINなどのベイジアンフィルタを自前で運用して避けていましたが、利便性や精度の点で、もはやgmailのスパムよけがないとメールは運用できない感じです。とくに、長く使っているメールアドレスにはSPAMがたくさん来るので、その傾向が強い。googleのスパムよけは強力なんだけど、誤判定が結構あって、メールが紛失するのが難点です。とくに、logwatchや、新聞、Gunosyなどの毎日来るメールがSPAMに落ちていたり、そもそも受信していなかったりします。

Financial Timesのメールがスパムに

というわけで、GoogleにSPAM判定されたメールを顧みることは通常ありませんが、必要なメールがSPAM判定されていないか、たまには確かめたほうがいい感じです。

そのついでにSPAMもたまには見てみると面白いです。たとえばこれ。

SPAMの例

たぶん日本人が書いたメールではないですよね。意味もわかりませんが、少し前に「おまえはMicrosoft Awardに当選したので、手続きをして賞金を受け取れ」というような英文のスパムがはやっていた[1]ので、そのパクリだと思われますが、不完全です。webサイトも書いてありませんし。

ということで、もはやメールは「確実な伝達手段」ではなく、「送っても、高い確率でどこかに消えてなくなる可能性がある」メディアになりました。Googleもemailの再発明をしようとしていましたが[2]なかなかうまくいきませんね。カジュアルな連絡はLINEなどのIMに置き換わりつつある印象があります。ビジネスはまだemailですが、不特定の人から(たとえばどこかで名刺を渡した人から)メールをもらうような場合には、どこかに消えてしまう可能性が高いので要注意です。

参考文献

  1. Scam email received from microsoft award promotion 2011?, Microsoft Community
  2. Google Wave: Google Tries to Reinvent Email

Google+の閲覧数

数日前から、Google+のユーザープロファイルのページに、閲覧数が表示されるようになったようです[1][2]。Techcrunchによると「Google+なんか誰も見てないと思ってるだろー、そんなことないですよー、ほーらこんなにみられてるんだよー、Google+すごいよねー、つかいたいよねー、みなおしたよねー」ということらしい。なるほど。

どれぐらいみられているものかと言うと、たとえばGoogle Glassのページ。

2014年4月4日現在、Google Glassのページ

フォロワーが63万、9700万 views です。なるほど。で、わたしのはどんなもんかなー、と思って私のプロファイルを見てみると。

2014年4月4日現在

フォロワー数84、1200万views ^^; なにげに多い。なにが見られているのか気になりますが、これ以上の細かいことはわからないようです。Google+の中だけでこんなに見られたとは思えないので、なにかがGoogleの検索結果の上位のほうに表示されたんでしょうか。なんなんでしょうか。わかりません ^^; なんだかよくわかりませんが、たしかに「Google+見直した」と言う感じはします ^^;

あなたのGoogle+の非閲覧数はいくつですか?

参考文献

  1. Google+ Adds Total Content View Counts To Profile Pages
  2. Google Plus adds view counter to profile pages. What’s your number?

iPhoneを経由してパソコンからインターネットにつなぐ方法 (テザリング)

※当然ですがなにが起きても自己責任でお願いします。

iPhoneはもちろんWiFiがないところでも3Gの電波を使ってインターネットに接続することができますが、
これをモデムのようにしてパソコンからも使えたらいいなー、とおもいませんか?

Tethering by iPhone

図1. テザリング

こんな感じです。参考文献[1][2]の方法でできそうなのでメモしておきます。

  1. まずはじめにjp_softbank_iphonepacket_usims.mobileconfig.gzをダウンロードする。
  2. ダウンロードしたら解凍する。解凍後のファイル名が「jp_softbank_iphonepacket_usims.mobileconfig」であることを確認する。
  3. そのファイルをメールでiPhoneに送る。gmailでも何でもよい。
  4. メールを見ると、こんな感じになるので
    Tethering by iPhone

    添付ファイルをポチッとする。

  5. するとこんな画面になる。
    Tethering by iPhone

    「install」をポチッと押して、画面の指示に従う。

  6. インストールが終わると、「Settings」の「General」の「Network」に「Internet Tethering」というのができているので「On」にする。
    Tethering by iPhone
  7. この状態でUSBケーブルを使ってMacとiPhoneをつなぐと、新しいネットワークデバイスが検出されました、となって、System Preferencesのネットワークを開くように言われるので開くとこんな感じになってます。
    Tethering by iPhone

    ここでは「Ethernet Adaptor (en3)」というのがiPhoneのことですから、それを選んで「Using DHCP」になっていることを確かめて「Apply」でつながります!

  8. Bluetoothでつなぎたい場合は、あらかじめペアリングしておいてから、こんなかんじで
    Tethering by iPhone
  9. 成功するとこんな感じに!
    Tethering by iPhone

これを試して見ている皆さんはSoftbankから別料金を請求されやしないかと戦々恐々のようですが、どうなんでしょうねー?

でもこれで相当便利になること間違いなしですね。

参考文献

WordPressで保存された履歴を削除し、さらに履歴を保存する数を制限もしくは無効にする方法

WordPressから記事をExportして、さらにImportすることがあります。WordPressでは、Exportすると
xmlのファイルになるのですが、これがサイズが大きいことがあります。中を見てみると、過去の版(履歴)も含まれています。
これは、exportしてimportしたときに、前のサイトでの編集の履歴までインポートできるので、便利な機能ではあるのですが、
記事を書いている最中にマメに「保存」「保存」とするとどんどん版がふえて、エクスポートファイルのサイズも
どんどん大きくなってしまいます。そこで、サイズの削減のために過去の履歴を削除することを考えてみます。

削除は簡単で、mySQLのサーヴァーに接続して下のコマンドを実行します。

DELETE FROM wp_posts WHERE post_type="revision";

テーブル名「wp_posts」は該当するものにかえてください。「接頭辞_posts」の形式です。重要なデータの場合は、念のため
実行する前にテーブルをバックアップしたほうがいいでしょうね。

ちなみに、あるサイトでこれを実行したところ、18MBあったエクスポートファイルが3.4MBになりました。1/6!

そもそも、なんでこんなにたくさんリビジョンを保存するのであろうか。必要あるのかしら? と思われた向きには、
保存する履歴の数を指定する機能があります。ただしWordpress 2.6以降のみ? 調査はしていません。

その方法は wp-config.phpに次のような行を追加するだけ。

define('WP_POST_REVISIONS', 数);

「数」に数字をいれると、その数だけにリビジョンが制限されます。0やfalseにするとリビジョンを保存する機能が
無効になるようです。

いやー、こんな定数があるなんて知らなかった…WordPressにはまだまだおもしろい機能がたくさんありそうです。

参考文献

  1. How to delete existing WordPress post revisions stored/saved, My Digital Life, 2008
  2. Disable and turn off post revisions tracking in wordpress 2.6 or above, My Digital Life, 2008
  3. How to store every post revisions on each auto save in wordpress with limit on versions count, My Digital Life, 2008

Blogger(blogspot.com)をよそへリダイレクトする方法

ウェブのURLを変更する場合、301リダイレクトをすると検索エンジンが「URLが変更になったんだな」と認識してくれることになっていますが、Bloggerからよそへひっこす場合、定番の.htaccessを使った方法やPHPのスクリプトを使う方法がつかえません。かわりの方法を試してみたのでメモしておきます。

手順は以下のとおり。

  1. 移転元のBloggerから、移転先のWordpressへ記事をインポートしておく。パーマリンクも同じにしておく。
  2. Bloggerの「レイアウト」「HTMLの編集」で、<header>と</header>の間に下記の2行をいれる。
    <meta content='0;url=http://your.new.blog.domain.com/newdir/' http-equiv='refresh'/>
    <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/>
    
  3. 同じくBloggerの「レイアウト」「HTMLの編集」で、「<b:section class=’main’ id=’main’ showaddelement=…」のすぐあとに以下のコードをいれる。
    <b:widget id='Redirector' locked='true' title='Blog Posts' type='Blog'>
    <b:includable id='main'>
    <b:if cond='data:blog.pageType == "item"'>
    <b:loop values='data:posts' var='post'>
    <script type='text/javascript'>
    var new_page=&#39;your.new.blog.domain.com/newdir/&#39;;
    var permalink = &#39;<data:post.url/>&#39;;
    var timestamp = &#39;<data:post.timestampISO8601/>&#39;;
    timestamp = timestamp.split(&#39;-&#39;);
    timestamp = timestamp[0]+&#39;/&#39;+timestamp[1];
    new_page = permalink.replace(/youroldblog.blogspot.com/20[0-9]{2}/[0-9]{2}/,new_page+timestamp);
    document.location.href = new_page;
    </script>
    </b:loop>
    </b:if>
    </b:includable>
    </b:widget>
    

このコードでは移転元と移転先のパーマリンクがwordpressでいうところの「/%year%/%monthnum%/%postname%.html」であるということを前提としています。ちがう場合は、timestampあたりを適当に修正してください。このコードは参考文献[1]をベースに、おかしいところを多少変更しました。

「1.」が案外むづかしい。ふつうにインポートすると、パーマリンクが保存されません。記事の数が多い場合は困るね。要検討です。

「2.」の meta http-equiv=’refresh’は正確には301リダイレクトにはなりませんが、Yahoo!やGoogleは転送前の時間が0または1の場合は301として、それより大きい場合は302として扱うそうです(参考文献[2])。なので、これでよしとしよう。

というわけで、ためしにやってみました。http://unixjp.blogspot.com/2006/05/blog-post.htmlにアクセスすると、http://narak.jp/wptest/2006/05/blog-post.htmlへリダイレクトされるようにしました。Google/Yahoo!が301扱いを
してくれているかどうかはわかりませんが….

参考文献

  1. How To Redirect Blogger Beta To WordPress.Com, laffers.net, 2007
  2. 301 Moved Permanentlyでウェブサイトを転送する方法, たんきゅうラボ, 2006

autopagerize + firefoxが動かなくなった時の対処法

どうもここのところとっても便利なautopagerize(参考文献[1])が動かなくなっているようです。
うーん、なんで動かない!? のかなー? とおもっていたのですが、autopagerizeするための(次のページを取得するための)情報を
書いてあるサイトが落ちているのが原因のようです(参考文献[2])。

というわけで、対処しよう! 参考文献[2]によると、ご親切な方が問題のファイルを1日に1回コピーして置いておいてくれる
サーヴァーを作ってくださっているようなので、それを使わせていただきます。どうもありがとうございます。

修正のしかたですが、まずはメニューから「Tools」 -> 「Greasemonkey」 -> 「Manage User Scripts…」を選んで、
出てくるダイアログで「Edit」ボタンを押します。

autopage

図1. 「Tools」 -> 「Greasemonkey」 -> 「Manage User Scripts…」を選び

autopage2

図2. 「Edit」ボタンを押す

初めての場合は、編集するのに使うエディタをどれにするのか決めろ、と言われるので、適当に指定します。私はEmacsにしました。すると、「autopagerize.user.js」が指定したエディタで開くのでこれを修正します。31行目にあるここの部分

var SITEINFO_IMPORT_URLS = [
    'http://wedata.net/databases/AutoPagerize/items.json',
]

これを、以下のように修正します。

var SITEINFO_IMPORT_URLS = [
    'http://wedata.net/databases/AutoPagerize/items.json',
    'http://utatane.appjet.net/databases/AutoPagerize/items.json',
]

「http://utatane.appjet.net/databases/AutoPagerize/items.json」というのが、追加の行です。
参考文献[2]では、元のwadata.netをコメントアウトするようにしていますが、ソースの695行付近をみるとforeachしているので、
上記のように複数指定しておけば大丈夫です。修正が終わったらセーブします。

これでまたautopagerizeが動くようになりました! have fun!

参考文献

  1. Firefoxでしたまでスクロールすると自動でページをめくってもらえるスクリプト(AutoPagerize), がんちゃんのブログ, 2007
  2. thx !!! Constellation and negipo, The Whole World is peaceful., 2008

Mac OS X用のMSN Messenger(互換)ソフト Adium

メッセンジャー系のソフトウェアにはいろいろありますが、もっともユーザーが多そうなのがMicrosoftのMSN Messengerですね。Mac版はversion 6が公開されていますが、Windows版の最新版はWindows Live Messenger Version 2008というらしいです。2008のまえのバージョンがVersion 7ですから、Mac版はWindows版より2世代も古いことになります。

Mac版は古いので、いろいろな新しい機能(手書き送信とか)が動きません。それだけならいいんだけど、なんかあんまりメンテナンスもされていないので、いろいろおかしいかんじ。そこで、MacでMSN Messengerする場合は、Microsoft純正クライアントよりも、こちらをつかったほうがよいです。

adium

図1. Adium.app

しかもこのAdiumはMSN Messengerだけでなく、Yahoo!チャット(日本のも、米国のも)、Google Talkなどにも対応しています。よって、1つのクライアントで、同時に複数のサービスに接続して利用できます。便利すぎる!

対応表

図2. 対応表

インストールは簡単。Adiumのダウンロードのページから、目的のファイルをダウンロードします。dmgファイルになっているので、ダブルクリックしてマウントします。マウントしたものを開くと、次の図のようになっているので、左のアイコンを右のApplicationsのフォルダーにドラッグ&ドロップするだけで、インストール完了です。

Adium.dmg

図3. インストールします

あとは起動して、アカウントの設定をするだけ! アカウントの設定は、Adium → Preferences… → Accountで左下の「+」をおします。

account.jpg

図4. Preferences…

すると、図2の対応するアカウントの一覧が出てくるので、利用したいサービスのものを選びます。ここではMSN Messengerを選んでみます。するとアカウントの情報をいれる窓が出てきますので、入力します。

account2.jpg

図5. アカウントの設定画面

アイコンとか表示名とかの設定もできますが、とりあえず図にあるパスポートIDとパスワードだけ設定しておけばよいでしょう。

Statusメニューで状態を「Available」にすると、チャットができます!

chatting

図6. 会話中

見た目はすきなようにかえられます。MacでMSN Messengerなんかまだ使っている君、さっそくAdiumに変更しよう!

参考文献

  1. Mactopia Japan : Microsoft Messenger for Mac 6
  2. Adium

winmail.datはgmailかyahoo mailで読むことができます

ときどき添付ファイルが「winmail.dat」というへんてこなファイル名になっていて、どうにも読めないことがあります。これは、Outlookで「リッチテキスト形式」で送信するとこういう変なものになるらしい(参考文献[1])。こまったもんです。

これを読めるようにするツールもあるようですが、こんな変なものを読むだけのためのソフトウェアをインストールするのはいやですね。それにWindowsだけじゃなくて、MacやLinuxやNetBSDやiPhoneも使っている場合、いちいちそれ用のソフトを使っている最中のマシンにインストールするのもいやです。でも大丈夫。なにもインストールしなくても、これを簡単に読むための方法があるんです。単にgmailかyahooメールに転送すればいいとのこと(参考文献[2])。というわけで実際にやってみた。

私はOutlookはもっていないので、winmail.datで送られてきたメールを持っている人に転送してもらいました。winmail.datだけ転送してもらったので、いったん保存して、それをmewというMUAでふたたび添付して自分宛に送信しました。なぜmewかというと、ファイルを添付したときにファイルの種類を「application/ms-tnef」にする必要があるからです。ふつうのメイラーではファイルの種類を変更するのがむづかしいんですね。たとえば、gmailでwinmail.datファイルを普通に添付すると「application/octet-stream」になってしまいます。直接Outlookのひとからwimail.datが送られてきた場合は、ふつうのメイラーを使ってメールをまるごとgmailかyahooメールにフォワードすればいいはずです。

まずgmailの場合を見てみましょう。当然ですが受信はできていますね。

gmail

図1. gmailでwinmail.datを受信

ところが表示もダウンロード後のファイルもwinmail.datのままで読むことができませんでした。なぜだ!

winmail.jpg

図2. gmailでは失敗

しょうがないので、yahooメールに転送してみました。

yahoo mail

図3. yahooメールに転送

こっちは添付ファイルをダウンロードしようとするとapplication/ms-tnefであると認識しています。ファイル名も表示されていませんね。

yahoo2.jpg

図4. yahoo メールではapplication/ms-tnefと認識

これをダウンロードするとファイル名が「winmail.dat」ではなくなっています。ShowLetterというファイル名になりました。yahooメールの仕様なのか、そういうファイル名で元の送信者が送ってきていたのかはわかりません。

success.jpg

図5. ShowLetter

このファイルを開いてみると、ふつうのテキストファイルとして読むことが出来ました。パチパチ! というわけで、もしwinmail.datが送られてきたら、

  1. 送られてきたメールをそのままgmailかyahooメールに「転送」する。
  2. gmailやyahooメールから添付ファイルを「ダウンロード」する。
  3. そうすると、普通に読める形式のファイルとしてダウンロードされる。

こんなかんじで処理しましょう! でも、gmailではよめないかも。

参考文献

  1. 受信者が WinMail.dat ファイルが添付されたメッセージを受信する, Outlook 2007 のヘルプと使い方(Microsoft)
  2. Winmail.datファイルを読むには、Gmailを使おう!, TechCzar.com, 2008

たいへんお行儀の悪いMJ12botとは?

先日のエントリ「さくらのレンタルサーバーで503」で掲載したグラフで、急にアクセスが多くなっているところがあります。再掲しますと、下記のグラフです。

a traffic cused by majestic 12 virus

図1. 1月15日に妙なピークが

ログを確認すると、「MJ12bot/v1.0.8 (http://majestic12.co.uk/bot.php?+)」というボットが15日に15070 Hitsしてきています。朝の9時にアクセスし始めて、夜の9時に終わっていますから12時間で15000Hitsです。15000/12/60=20、つまり1分間に20Hits、3秒に1リクエストです。すごすぎ。

http://majestic12.co.uk/をみると、majestic12はSETI@homeの技術を応用した分散コンピューティングによる検索エンジンらしくて、 いろんなチームが処理結果を競っています。それでめちゃくちゃアクセスしてくるのかー、とおもったのですが…majestic12のbotの説明書をみてみると、

Fake MJ12bot v1.0.8 (virus based botnet)

どうも去年の10月ぐらいから、ウイルスによって拡大するニセモノのMJ12botが跋扈しているようで ^^;; ちなみにホンモノのボットの最新版はv1.2.1らしいです。majestic12のなかのひともたいへんですね。よくよく調べてみると、ホンモノのMJ12bot (v1.2.1でした)もときどきアクセスにきているようです。そっちは大変お行儀がよく、4, 5ページクロールしたらすぐいなくなってるようでした。

今回やってきたウイルスのにせMJ12botは、なにもしなくても12時間ちょっとでいなくなりましたが、とりあえずブロックしておきました。ブロックの方法は「.htaccess」に下記のように書きます。

order allow,deny
allow from all
# reject fake mj12
SetEnvIfNoCase User-Agent "^MJ12bot/v?1.[01].[0-9]{1,2}" block
Deny from env=block

まあ、こんかいの503病はこれが原因ではなさそうですが、みょーなのがやってきて遅くなったらいやだしね。

参考文献

  1. MJ12bot, Majestic 12 Distributed Search Engine, 2007

さくらのレンタルサーバで503 Service Temporarily Unavailableが出る謎

さくらのレンタルサーバのスタンダードを借りているのですが、2、3日前から503 Service Temporarily Unavailableがでるようになりました。phpのみで、ふつうのhtmlはOK。URLでphpを直接指定すると503で、URLでディレクトリを指定してphpを参照すると403 Forbiddenになっちゃいます。

503.jpg

図1. 503 Service Temporarily Unavailable

performancepartscentral.comってのがさくらの上で動いているドメインです。これをみたとき、なにがおこったのかさっぱりわからず、てっきりサーバが壊れたのかと思ってさくらに問合せをしたところ、下記のようなお返事をいただきました。

「503 Service Temporarily Unavailable」というエラーメッセージは、
一時的にウェブアクセスが集中している、もしくは、お客さまにて設置
されているCGIプログラムが誤作動を起こしている場合において表示され
ます。

▼ オンラインマニュアル エラーメッセージ集
http://support.sakura.ad.jp/support/manual/rs/errmsg_web.shtml#503

弊社「さくらのレンタルサーバ」サービスは1台のサーバを複数のお客様と
共有して使用いただく、いわゆる”共用サーバ”となります。
そのため、1人のお客様がサーバの性能を使い果たし、サーバの負荷に
よって他のお客様へご迷惑をおかけすることのないよう様々な制限が
設けられております。

お客様のサーバを確認いたしましたところ、お客様のアカウントに対して
CGIやPHPによるアクセス制限が設けられておりました。今回こちらの制限の
緩和を行なわせていただきました。
しかしながら、今後同様にサーバに許容範囲を超える過負荷等が発生しま
した場合、再度制限が設けられる可能性がございますのでご注意ください
ますようお願いいたします。

なお、これらの制限につきましてはサーバへの負荷がかかる状態を確認
すると制限を掛かり、負荷が緩和されると制限を解除いたします。
弊社にて定めている具体的なしきい値につきましては時流により変動いた
しますため、申し訳ございませんが
公表させていただいておりません。あらかじめご了承ください。

要するに具体的な制限値があるわけではなく、「負荷が掛かる状態」を確認すると制限がかかるということらしいです。
つまり、わたしが動かしているサイトのどれかが負荷をかけたので、503の規制がかかったということですね。
でも、10月や11月とくらべると、わたしのサイトへのアクセスは激減しているはずなのに、10月や11月には503にならず、
1月に急に503になるのはおかしい気がします。そこで、 アクセス数と503の回数をグラフにしてみました。

hits-503.jpg

図2. 1日あたりの503の回数とhit数

ログを見ると1月8日の夜23時ごろから規制がはじまってます。でもねえ、グラフにしてみるとはっきりわかるとおり、
やっぱり10月とくらべるとだんぜんアクセス数も少ないし、規制がはじまったときの
絶対的な値もいちにち2000ヒットや4000ヒットですよ? なにがきっかけで規制がはじまったのかちっともわからん…

今回の件があるまでぜんぜんしらなかったけど、さくらは「503」になることがよくあるらしいですね。それで文句が
よく出ているようですが、なんか、503規制をはじめるアルゴリズムがダサイのが文句が出る原因じゃないかって気がしてきた。
ちゃんと理解可能な理由で503規制がはじまれば、ユーザー側で対策もとれるし文句はでないのでは….?

この件は、またあとでさくらに問合せしてみるかも。

参考文献

  1. 共有さくら鯖の503の謎, またたび.ws, 2005
  2. さくら(sakura)インターネットの503 Service Temporarily Unavailableについて, 時事ネタに釣られるブログ, 2007