RSS

初出:2008年7月30日 12:44

Mac OS X Serverでのメールサーバー運用と並行して、Gmailも4年くらい使ってました。Mail Fetcher(他のメールサーバからPOP経由でメールを取得するあれです)が出てからは、うちのサーバーと同じくらいの負荷でもって運用していたわけですが、iPhoneを購入したときに思うところがありまして、先週末から一気に移行したのです。

思うところというのが...

  • iPhoneのMail.appは検索ができない。Gmailは検索がすごい
  • iPhoneに最適化されたWebメールって今のところGmailくらい
  • やはりGmailの迷惑メールフィルタは強力
  • サーバー側で受信メールのルール(フィルタ)設定&適用ができる
  • メールボックスの総容量が間もなく7GBを超えそう

...とまあ、こんな理由です。そもそも、なんで自宅でメールサーバーなんてものを運用しようかと思ったか? 星の数ほどあるメールサーバーホスティングでは何がいけなかったのか? というと、ひとつはIMAPへの対応。今では普通に当たり前なIMAPですが、6年とか前はまだまだ普通じゃなかった。でも、自宅と会社、とか、自宅に2台とかPCがあると、POPだと何かと管理がめんどくさく、昔からIMAPの必要性を痛感していたんです。そしてさらに、IMAPは基本、すべてのメールをサーバー側で保管・管理するものなので、メールボックスの容量はとにかく大きくなければならない。現にうちのサーバーは2000年からのメールを保管してありますが、10GBを超えてますし、これからも増え続けるでしょう。6年前にそのことを想定していたんですけど、当時は1GBを超えるメールサービスなんてありませんでしたから、自前で用意するしかなかったわけです。

一方、Gmaiはというと、2GBという大容量からスタートし、しかも微増ながら常に容量が増え続けるという面白い発想をもってました。これなら数年したら10GBも夢じゃないなと思い、友達に招待されて使い始めた...のはいいんですが、GmailがIMAPに対応したのは2007年11月と、ついこの前なんです。そこから半年、Macと初代iPhoneで使ってきまして、よしこれは使える!っと結論づけたのがつい先日だったというわけです。

Gmailを独自ドメインで運用するには、Google Apps(無料)に登録します。これでGmailの他、DocsやCalender、Gtalk、iGoogleなんかを独自ドメインで運用することができます。こうしたものを独自ドメインで動かすには、当然DNSの設定が必要になります。うちはMac OS X Server上でBINDを動かして、それをプライマリーにしているんですけど、今回の移行に伴い、セカンダリーDNSをXnameという無料DNSサービスに登録しました。そしてGoogle Appsの設定を行った上で、そちらのDNS情報もBINDに設定するわけですが、いろいろググっても、VALUE DOMAINというサービスでの設定方法はたくさん解説されてますが、BINDでの設定方法が書かれていない! そこで備忘録的に書いておきます。

Xnameにセカンダリーをお願いする際の設定は、/var/named の下にあるゾーンファイルに

WONDERWALL.NET. IN NS ns0.xname.org.
WONDERWALL.NET. IN NS ns1.xname.org.

と追加しました。WONDERWALL.NET.の部分は当然ながら、ご自身のドメイン名+ピリオドを書きます。で、Google Appsでは最初に、登録者が正しいドメイン所有者であることを調査するために、DNSのCNAMEを使って調査をかけられます。その設定は、同じくゾーンファイルに

googleXXXXXXXXXaf4X1f8 IN CNAME google.com.

と記入します。googleXXXXXXXXXaf4X1f8の部分はGoogleが生成したコードです。これをDNSに登録してしばし待つこと48時間。とは言っても、うちは3時間くらいで承認が通りました。

続いて、各サービスを独自ドメインで運用(Google Docsはdocument.wonderwall.netみたいな)するための設定です。同じくゾーンファイルに

WONDERWALL.NET. IN MX 5 aspmx.l.google.com.
WONDERWALL.NET. IN MX 10 alt1.aspmx.l.google.com.
WONDERWALL.NET. IN MX 10 alt2.aspmx.l.google.com.
WONDERWALL.NET. IN MX 20 aspmx2.googlemail.com.
WONDERWALL.NET. IN MX 20 aspmx3.googlemail.com.
WONDERWALL.NET. IN MX 20 aspmx4.googlemail.com.
WONDERWALL.NET. IN MX 20 aspmx5.googlemail.com.
gmail IN CNAME ghs.google.com.
document IN CNAME ghs.google.com.
calender IN CNAME ghs.google.com.
sites IN CNAME ghs.google.com.
google IN CNAME ghs.google.com.

と記入しました。これでしばし待つこと48時間。とは言っても、うちでは2時間くらいでMXレコードが切り替わり、そこからwonderwall.net宛のメールはGmailのほうへガンガン流れていきました。

Google AppsのGmailは、最初の登録申請の際にアカウントをいくつ作るかを宣言します。うちは適当に200とかしておきました。こうすることで、独自ドメインで200個まで、容量7GB弱のメールアカウントが作り放題です。とりあえず2000-2005@wonderwall.net、2006-2010@wonderwall.netというアカウントを作って、メールログはそちらに貯めていこうと思っています。

ふぅ、これで少しくらいサーバーが死んでも、誰にも迷惑をかけるまい。

Googleさんは、この記事をこう解釈しました

記事の詳細ページ

記事の全文を表示します。関連するコメントやトラックバックなどもこちらからどうぞ。

本日のBGM

★印があったら「これは聴いてみてほしい!」という推薦曲です。曲名をクリックするとiTunes Storeへジャンプします。

'; // loop through the songs in the array and get 4 fields that I want to see foreach ($songs as $song) { $output .= '
  • '; if ($song["Rating"] == 100){ $output .= ''.$song["Rating"].''; } $output .= '
    '; $output .= '
    '.$song["Name"].''; $output .= '
    '.$song["Artist"].''; $output .= ''.$song["Album"].''; if ($song["Year"]){ $output .= '('.$song["Year"].')'; } $output .= '
  • '; } // end the table $output .= ''; // show my new table print ($output); } ?>

    Now & Then

    Twitter Updates

      OAuthRequest('https://api.twitter.com/1.1/statuses/user_timeline.json','GET',array('screen_name' =>$search_word,'count' =>'3')); //Jsonデータをオブジェクトに変更 $oObj = json_decode($vRequest); //var_dump(json_decode($vRequest)); //オブジェクトを展開 for($i_tweet = 0; $i_tweet < sizeof($oObj); $i_tweet++){ $screen_name = $oObj[$i_tweet] -> {'screen_name'};//ユーザーID $profile_image_url = $oObj[$i_tweet] -> {'profile_image_url'};//プロフィール画像のURL $text = $oObj[$i_tweet] -> {'text'};//ツイート $date = $oObj[$i_tweet] -> {'created_at'};//時間 $tweet_time=strtotime($date);//Unixタイムスタンプ形式に変換 $now_time=time();//現在の時刻をUnixタイムスタンプで取得 $relative_time=$now_time-$tweet_time;//つぶやかれたのが何秒前か if($relative_time<60){//ss $displayTime = $relative_time.'秒前'; }elseif($relative_time>=60 && $relative_time<(60*60)){//mm $displayTime = floor($relative_time/60).'分前'; }elseif($relative_time>=(60*60) && $relative_time<(60*60*24)){//hh $displayTime = floor($relative_time/(60*60)).'時間前'; }elseif($relative_time>=(60*60*24)){//日付 $displayTime = date('n月j日',$tweet_time); } //表示 echo '
    • ' . $text .'' . $displayTime . '
    • '; } ?>
    follow me on Twitter