FreeBSD 7.1へようこそ

第2回 FreeBSDで安心・快適通信【I】ホームサーバでエコメール

この記事を読むのに必要な時間:およそ 6 分

突然だが,筆者はこの原稿を執筆している今現在,地球の反対側の国,ブラジル共和国に出張中である。故あってLatin American Test Workshop(LATW 2009)という集積回路の信頼性テストを議論する学会のアジア代表を数年前から務めている縁で,10周年記念の今年の会議に出席することにした。ブラジルに行くには世界のどこを経由しても同じだけ時間がかかるもので,筆者が利用したデルタ航空はアトランタ経由で日本からはほぼ一直線なのだが,乗り継ぎ時間も含めて,家を出てからホテルに着くまで丸38時間の道程だ。

幸いにというか,今では世界中のどこでもメールが使えるので,日本にいるのとかわらないペースで日常の仕事をこなしているのだが,海外でメールを使うときに厄介なのが大量のスパムメールの問題である。筆者が使っている大学のメールアドレスは,1993年から使いつづけているということもあってか,あちこちのスパマーに登録されてしまっており,残念ながら新着メールの9割から9割5分,1日900通ものスパムをフィルタ処理しなくてはならない。名刺に印刷している手前アドレスを変えるわけにもいかず,機械的にフィルタをすると大事なメールが自動処理されてしまってビジネスチャンスを逃すかもしれないということで,毎日一応全部に目を通している。特に海外に行ったときには,いつもの「常時接続,ブロードバンド」環境のつもりで読んでいると,通信時間と料金の無駄が,ばかにならないほど膨れあがってしまう。

筆者はFreeBSDのおかげで,海外からインターネットへ接続する2週間の合計時間2時間以下で,合計1万通~2万通のメールをダウンロードして読むことができる。この秘密は「まとめてダウンロード」メソッドを使っているからだ。本稿ではこのテクニックを紹介しよう。

図1 真夏のブラジル

図1 真夏のブラジル

普通のとき~ 筆者のメール環境

筆者は「機械を信用せず,全部のメールに(Subjectだけでも)目を通す」主義である。さらに「メールはEmacsで読む」主義で,ソフトウェアはmh-e,2000年からはWanderlustを使ってきた。この「Wanderlustで全メールいきなりダウンロード」メソッドが破綻したのは2005年,今回と同じくLATWに出席のためブラジルに出張したときだった。なにしろ回線が細くて(10Kバイト/sくらいだったと記憶),まともにやると,日本では数分で終わるところがブラジルからでは数時間かかってしまうとわかって愕然としたのだ。

そこで導入したのがThunderbirdである。Thunderbirdには,「ヘッダのみを取得」するというオプションがあるので,これを使い,ヘッダだけをまず読んで要・不要をふるい分けて,サーバ上の不要なメールを消去した後で全文をダウンロードするようにしたわけである。さらに,Thunderbirdにはスパムメールフィルタが付いているので,これを併用することで,不要なメール量をかなり削減することができた。

利用に先立って,Thunderbirdの「Account options」を開き,通常のようにサーバ名やユーザ名を登録する他,図2のように「□Fetch headers only」「□Leave messages on server」「□Until I delete them」をチェックしておく。ちなみに,筆者が利用しているプロトコルは「POP」(Post Office Protocol)だが,そのままではパスワードが平文で流れるので,「□Use secure authentication」にもチェックして「APOP」で接続する。より安全なSSL(Secure Sockets Layer)などを使いたいところだが,プロバイダによっては提供していなかったりするのが痛いところだ(仕方ない)。

図2 Thunderbirdの設定

図2 Thunderbirdの設定

毎日の手順は図3のようになる。【1】Thunderbirdを起動してメールを「読み込む」と,図4のように,メッセージのヘッダのみ表示される。この状態で「click hereのハイパーリンクをクリックすると,本文がThunderbirdに取りこまれるのだが,今回その操作は行わず,ひたすら【2】不要なメールの削除を行い,ゴミ箱を空(Empty trash)にする。不要なメールの選別には,Thunderbirdのスパムフィルタが意外に便利である※1)。

※1)
…のだが,最近50000通メールをダウンロードした頃からフィルタの動作がおかしくなった感じがする。読者諸賢のところではどうだろうか。

そうして,【3】再びメールを「読み込む」と,ゴミ箱から消したメールの本体がサーバから消えてくれるので,あとは【4】anderlustやSylpheedなどの「普段使っているメールソフト(MailUser Agent: MUA)」で,メールを読み込めばよい。このメソッドを開発したおかげで,ブラジルから数時間かかったメールのダウンロードを1時間以内に短縮できるようになり,ずいぶんと助かった。もう4年も前の話である。

図3 ヘッダだけダウンロードしてフィルタする

図3 ヘッダだけダウンロードしてフィルタする

インターネットには常時接続する

図4 「ゴミ箱を空」にする

図4 「ゴミ箱を空」にする

著者プロフィール

三田吉郎(みたよしお)

東京大学 大学院工学系研究科 電気系工学専攻准教授。講義「電気磁気学」「わかる電子回路」やマイクロマシン研究の傍ら,FreeBSDの普及,開発に尽力する。FreeBSD ports committer。国際派を自任し,2007~8年9月までフランス国立情報学研究所(INRIA)招聘教授。共著書に「FreeBSD徹底入門」(翔泳社),「FreeBSD Expert」など。

コメント

  • ロックしなくて良いのでしょうか

    > cp /var/mail/mita; cat /dev/null > /var/mail/mita
    cp の引数が一つに見える(ドットがない?)という点もありますが、そもそも /var/mail 以下をロックせずに触って良いものでしょうか。cp と cat の間に到着したメールが消滅するように見えるのですが。
    「Maildir 使えよ」というのが正解という気もしますが、ローカルでの POP3 アクセスの場合は速度が気にならないということであれば、メールを全部取って消すということなら Perl 等で POP3 経由で取得+消去を行うスクリプトを書くのも簡単そうです。(fetchmail などでもできるかも知れません)
    私ならこのスクリプトのメール出力を標準出力としておいて
    ssh remotehost "スクリプト | gzip" > mita.gz
    とか、zcat 経由で直接ローカルに書き込んでも良いかも知れません。POP3 のパスワードをどう扱うかがちょっと悩みですが、気にならないならスクリプト中に書いておく、気になるならスクリプトはパスワードを標準入力から読むようにしておいて、ssh 経由で送り込む、でしょうか。ssh 起動前にエコーバックを切っておけば良いかと。
    この方法ならメールサーバが ssh ログインが出来なくても、「POP3 アクセススクリプト」を自宅等の国内 FreeBSD サーバに仕込んでおけば動くでしょう。
    同じサーバ内でも POP3 のオーバヘッドが問題になるようであれば、真面目にロックしてから /var/mail 以下を操作すべきではないでしょうか。
    余談ですがメールファイルを操作するなら
    ・ロックを気にする必要がない
    ・ファイル名がユニークと保証されているのでコピーしても上書きされない
    ・ファイル名に未読・既読の情報が入っているのでコピーしても MUA に依らず未読・既読の情報が失われない
    などで Maildir が有利かと思います。

    Commented : #1  荻野 (2009/03/13, 13:48)

コメントの記入