CentOSのネットワーク経由でのインストールが終わったら,ホーム・サーバー上でメール・サービスを稼働させよう。今回は,携帯電話にメールを転送したり,Web画面でメールを見たりできるようにする。
前回は,今となっては旧型の携帯ノートPC「ThinkPad s30」に,Linuxディストリビューションの「CentOS」をネットワーク・インストールして,ホーム・サーバーの“土台”を構築した。今回は,ホーム・サーバー上で動かすサーバー・アプリケーションとして,メール・サービスを導入してみよう。
自宅で利用するメール・サービスは,インターネット・プロバイダが提供するものを使っている場合が多いだろう。プロバイダのサーバーから直接メーラー(メール・クライアント)でメールを送受信する形態だ。
ところが,ホーム・サーバー上でメール・サービスを稼働させると,プロバイダで契約しているメールをフィルタリングしたり,携帯電話に転送したり,Webメールを稼働できたりする。今回は,これらのサービスを実現してみよう。
CentOSのバージョン4.4が登場
本題に入る前に,ここで使用するCentOS 4.4について触れておきたい(注:2007年6月20日現在,既にCentOS5,およびCentOS4.5が公開されている。関連記事1と関連記事2を参照)。
バージョン4.4は,ThinkPad s30に導入したCentOS 4.3の新版である。これから導入するのであれば,前回と同じ手順で新版をインストールしよう。
既にバージョン4.3をインストールしていれば,yumコマンドを使って簡単にアップデートできる。
|
バージョン4.4になって,一部のサーバー・アプリケーションの設定ファイルのフォーマットが変更されている。今回から,バージョン4.4の利用を前提に説明する。
メール・サーバーを構築する
ホーム・サーバーでメール・サービスを稼働させれば,次に挙げるようなことを実現できる。
・スパムを退治する
「メール最大の悩みはスパム」という読者は少なくないはずだ。そこでスパム・フィルタを活用してスパム・メールを排除しよう。
・携帯電話などにメールを転送する
携帯電話でのパケット通信の定額化やメール・サービスの無料化を追い風に,携帯電話をより一層活用するユーザーが増えている。ここでは,プロバイダあてに届いたメールを携帯電話に転送する。
・別のネットワークから閲覧する
プロバイダのメール・サービスは,セキュリティ上の配慮から,外部ネットワークからのメール閲覧を許可していないケースが多い。そこで,別のネットワーク環境からメールを閲覧できるよう,Webメールを稼働する。
今回は,この3点を実現する。そのために,必要なのは図1にあるようなシステムだ。簡単に説明すると,まずプロバイダのメール・サーバーから「Fetchmail」でメールを受信する。サーバーに置くメール・サーバーには「Postfix」を利用する。CentOSは標準のメール・サーバーとして「sendmail」を採用するが,設定や管理が簡単なPostfixを利用する。
図1●今回作成するシステムのメールの流れ Fetchmailがプロバイダのメール・サーバーからのメールを受信する。 [画像のクリックで拡大表示] |
次に,「Procmail」とスパム・フィルタの「SpamAssassin」「bsfilter」を組み合わせて,スパム・メールを排除する。携帯電話への転送は,Procmailが行う。最後に,IMAPサーバーの「Dovecot」を稼働し,Webメーラー・ソフト「Squirrelmail」を使って,Webブラウザからメールが見られるようにする。
Postfixのインストールと設定
図1のシステムで核になるのはPostfixである。Postfixから導入していこう。
PostfixとProcmail,デフォルト(初期設定)のメール・サーバーを切り替える「system-switch-mail」をまとめてインストールする。
なお,サーバーを構築する作業は,すべて管理者権限で行う。
|
インストールができたら,system-switch-mailコマンドを実行し,デフォルトのメール・サーバーをPostfixに変更する(写真1)。
写真1●デフォルトのメール・サーバーをPostfixに切り替える 矢印キーで「Postfix」を選択し,Tabキーでカーソルを「Ok」ボタンに合わせてスペース・キーを押す。 |
続いて,Postfixの設定を行う。/etc/postfix/main.cfファイルをテキスト・エディタで開き,図2に示す行を変更する。main.cfの設定項目は多いが,今回のように自宅のLAN内で利用するなら,初期設定から変更すべき個所は少ない。
|
図2●/etc/postfix/main.cfファイルの変更例 |
「myhostname」には,通常,このサーバーのFQDNを記述するが,LAN内には正式なFQDNが与えられていない。したがって,コメントアウトする。
「home_mailbox」の右辺は,メールをスプールする「Maildir/」ディレクトリを指定する。後述するIMAPサーバーのDovecotが利用するディレクトリだ。
「mailbox_command」の右辺には,Procmailを指定しておく。
「mynetwork」の右辺には,このメール・サーバーを利用するホストのIPアドレスを設定する。もし,このPostfixにメールをリレーさせない(ローカル配信のみ利用)のなら,「127.0.0.0/8」を設定しておくだけでよい。リレーをさせるのなら,図2のようにLANのIPアドレスもカンマ区切りで設定しておこう。
以上を編集してmain.cfファイルを保存する。そしてホーム・ディレクトリにメール・スプール用のMaildirディレクトリを作成する。
|
上記はユーザー名「yoneda」の例だ。メールを利用するすべてのアカウントについて上記のようにMaildirを作成しておく。
以上を実行したら,最後にPostfixを再起動する。
|
スパム・フィルタの設定
スパム・フィルタは,万全とは言えないまでも,スパムの被害を減らすのに役に立つ。UNIX系では,SpamAssassinが広く利用されている。
SpamAssassinは,キーワードなどを指定したルールによるスパム検出に加えて,学習機能を持つ「ベイジアン・フィルタ」による検出機能も備える。ただし,SpamAssassinでも検出できないスパムもある。そこで今回はスパム・フィルタをもう一つ加えて,スパム検出の精度を上げることにする。
追加するのは,Rubyで記述された国産のスパム・フィルタ「bsfilter」だ。検出方法にはベイジアン・フィルタを使用,優れた日本語のトークン解析機能を持つ。筆者が使用した印象では,日本語のスパム・メールの検出精度は,SpamAssassinよりもbsfilterの方が高い。
SpamAssassinはCentOSのパッケージに含まれており,yumコマンドでインストールできる。
|
一方,bsfilterはCentOSのパッケージとしては提供されていない。前述したように,bsfilterはRubyを使用するため,先にインストールしておく。
|
次に,bsfilterのバイナリ・アーカイブを入手する。2006年9月上旬時点では,バージョン1.0.14が最新だった。バイナリ・アーカイブである「bsfilter-1.0.14.tgz」を次の公式サイトから入手する。
|
入手できたら,次のコマンドで展開しよう。
|
bsfilter-1.0.14ディレクトリに展開されるので,Rubyスクリプト(UNIX向け)を/usr/local/bin/の下にコピーすれば,bsfilterを利用できる。
|
最後に,Procmailのシステム共通設定ファイル/etc/procmailrcを図3のように設定する。
|
図3●/etc/procmailrcファイルを編集する |
これで,受信したすべてのメールはスパム・フィルタのSpamAssassinとbsfilterのチェックを受けるようになる。
DovecotとSquirrelmailの設定
続いて,IMAPサーバーのDovecotを導入し,Webメーラー・ソフトのSquirrelmailを設定しよう。
まず,Dovecotをインストールする。
|
Dovecotの設定ファイルは,/etc/dovecot.confである。サーバーをLAN内で設置する場合であれば,テキスト・エディタで「protocols」から始まる行を次のように書き換えるだけだ。
|
これでDovecotをIMAPサーバーとして稼働できる。設定を変えたら再起動しておこう。
|
続いてSquirrelmailを設定する。Squirrelmailは,Webブラウザからメールを見られるようにするため,HTTPサーバー(Apache HTTP Server)とPHPも必要である。そこで,まとめてインストールしよう。
|
インストールできたら,正しく動作しているか,調べてみよう。
まずは,ドキュメント・ルートの/var/www/htmlディレクトリに,次の内容のファイルを「phpinfo.php」という名前で保存する。
|
次に,Webブラウザで次のURLにアクセスする。
|
これで,写真2のような表示が出れば,正しくインストールされている。もし表示されない場合は,Webサーバーを再起動してみよう。
写真2●テスト・ファイルphpinfo.phpを表示したところ [画像のクリックで拡大表示] |
|
PHPの動作が確認できたら,Squirrelmailの設定に移ろう。カレント・ディレクトリを/usr/share/squirrelmail/configに変更し,このディレクトリにあるconf.plを実行しよう。
|
すると写真3の設定メニューが現れる。まず,「C」を入力して,カラー・モードをオフにする。コンソールの文字が見えない場合があるからだ。続いて,「2」として「Server Settings」を選択しよう。ここで「A」と入力してIMAPサーバーの設定を変更する(写真4)。
写真3●Squirrelmailの設定メニュー [画像のクリックで拡大表示] |
写真4●IMAP Serverの設定を変更する [画像のクリックで拡大表示] |
写真4では,「Server software」を「other」に,「Delimiter」(フォルダの区切り文字)を「.」(ピリオド)に換えておく。そのほかの設定についても,写真4と同じになっているかを確認する。
これでOKだ。最後に「S」と入力して設定を保存してから,「Q」と入力して設定メニューを終了させる。 設定を終わったら,次のURLをWebブラウザに入力する。
|
設定が正しくできていれば,ログイン画面が表示されるはずだ。サーバーに登録されたユーザー名とパスワードを入力すればログインできる(写真5)。
写真5●Squirrelmailにログインした |
写真5は,筆者が使用しているため,既にフォルダがいくつか設定されている。初期状態では受信箱(INBOXフォルダ),ゴミ箱(Trashフォルダ),送信済みフォルダ(Sentフォルダ)しか見えない。後述するスパム処理を行うために必要な「Junk」というフォルダを,画面上部の「フォルダ」というリンクをクリックして作成する。
なお,今回設置したIMAPサーバーは,ThunderbirdといったIMAPをサポートするメーラーでも利用できる。使い慣れたメール・クライアントでも試してみよう。
ユーザー別の設定を行う
以上でサーバー側の設定は完了した。続いて各ユーザーの設定を行う。
まずは,管理者権限から,実際にメールを利用するユーザー・アカウントに切り替える。
次に,スパム・メールを処理するProcmailを設定する。ホーム・ディレクトリに,p.88の図4を参考にした「.procmailrc」というファイルを作成する。.(ピリオド)から始まるため,隠しファイルとして見えないことがある。設定を変更して見てほしい。
図4●~/.procmailrcの例 |
図4の設定例では,次の条件を満たすメールが,Junkフォルダに移動する。
|
なお,IMAPフォルダはMaildirディレクトリにあり,ピリオドが区切り文字として使用されている。IMAP上でのJunkフォルダは,「~/Maildir/.Junk」と指定する必要があるので注意してほしい。
次に,既にスパムの送信元と分かっているメール・アドレスを,ホーム・ディレクトリ以下に作成する「.spammer_from」ファイル内に,改行区切りで次のように列記しておく。
|
これで,記述されているアドレスからのスパム・メールは,無条件でJunkフォルダに移動する。
次は,携帯電話へのメール転送の設定だ。携帯電話は大きなサイズのメールを扱えないことが多い。例では10000バイト以下のメールに限定した。また,HTMLメールも携帯電話では扱えないことがあるため,転送しないように設定した。バイト数などは,携帯電話の仕様やキャリアに応じて調節しよう。
プロバイダからのメール受信
次に,インターネット・プロバイダのメール・サーバーからメールを受信する設定を施す。受信には,Fetchmailを利用する。既にインストールされているので,設定するだけだ。
メールを利用する一般ユーザーのアカウントでホーム・ディレクトリに「.fetchmailrc」というファイルを作成し,図5のように記述しよう。「poll」の横にインターネット・プロバイダのメール・サーバーのホスト名またはIPアドレスを記述する。「user」と「pass」には,それぞれユーザー名とパスワードを設定する。
図5●~/.fetchmailrcの例 |
最後は定期実行するために,「cron」にFetchmailを登録する。cronの設定は,次のようにコマンドを実行すると,個人用の設定ファイル(crontab)がGNOMEエディタで開かれる。
|
設定例を図6に示す。
|
図6●crontabの設定例 |
図6の設定では,プロバイダのメールを15分おきに受信する。午前2時以降の深夜には,自動的にSpamAssassinとbsfilterの学習プロセスを起動して,ベイジアン・フィルタの精度を向上させる。
その際は,Junkフォルダの既読メール(Dovecotでは,フォルダ内のcur以下に既読メールが格納される)をスパムと学習する。同時に,INBOXフォルダの既読メールを非スパムとして学習する。これで,bsfilterでスパムと判定されたが,SpamAssassinでは非スパムと判定されたメール,あるいは逆の場合もスパムとして学習できる。
これで,ThnkPad s30を使ったメール・サーバーを構築できた。プロバイダのメール・アカウントを使いつつ,転送やスパム処理を自前で行うだけで,かなり便利に使えるようになったはずだ。
次回はWebサーバーなど定番のサーバー・アプリケーションをセットアップする。