Smail――簡単な設定で即座に使える軽量型メールサーバ

 電子メールシステムで使われているメール転送エージェント(MTA:Mail Transport Agent)とは、EvolutionやMozilla Thunderbirdなどのクライアントアプリケーションから出されたメールを収集し、宛先として指定されたマシンに配送するためのルーティングを行うプログラムである。こうした処理は、差出人と受取人の間をつなぐ一種の“配管接続”をする作業だとでも考えればいいだろう。現在利用可能なMTAとしては、PostfixSendmailqmailなどの優れたメールサーバが存在しているが、これらを立ち上げるにはいずれも膨大な量の設定を必要とする。そのため、例えばWeb開発プロジェクトに付随するメール関連の試験や、限られたローカル環境のみをカバーしたメール配信をこなせるだけのMTAが欲しい、というユーザにとっては導入時の負担が大きすぎるとも言える。その点、複雑な設定をほとんど必要とせず、多機能型MTAよりも少ないメモリ消費量で運用可能なSmailこそは、こうしたシナリオに適しているMTAとしていいはずだ。

 Smailのコマンドライン操作はSendmailとほぼ共通しており、Sendmailに習熟したユーザであれば、付属ドキュメントを簡単にチェックするだけでSmailを使いこなせるだろう。ここで使われる設定ファイル群もSendmailより簡単な構成となっているが、それにもかかわらずSmailの場合、システムリソースを大量に消費することなく、多数のユーザをサポートできるよう作られているのだ。実はSmail自身は1994年という結構古くから流通しているアプリケーションであり、リリースされた時期はSendmailと大差ないのである。開発者の説明によると、Smailのセキュリティはかなりのレベルに到達しており、実際、1994年から現在に至るまでに残されている安全性上の不備は1件しかないとされている。その1件とは最近確認されたヒープベースのバッファオーバーフローに関する問題であるが、発現する環境は実行可能ヒープを使用するi386システムに限られているとのことだ。その他、シグナル処理に関する脆弱性も存在するが、これはプロジェクトのWebサイトにて既に対応パッチが公開されており、これを適用する際に必要となる作業はsrc/addr.cファイルに1行分のコードをペーストするだけでしかない。いずれにせよこの不具合については、次に予定されている3.3リリースにて、ソースレベルで修正されることになるだろう。

 セットアップと設定に要する負担が極めて低いSmailは、電子メール用のインフラストラクチャ構築を手短に済ませたく、複雑な機能も必要としないというケースにおける、最適なソリューションとしていいだろう。その具体的な使用環境としては、電子メールの通知機能を実装したアプリケーションをユーザが実行するシステムというものが考えられる。例えば私が携わっているRuby on Railsを用いたアプリケーション開発の場合、新規アカウントの登録ユーザに対するメールメッセージでの通知機能の試験を行う際にSmailを使用している。それと同時にSmailは、POPやIMAPをサポートする本格的なメールストアと組み合わせることで、実用レベルのメールサーバソリューションとなるだけの拡張性も備えているのだ。

Smailのセットアップと設定

 Smailは、大部分のディストリビューションのリポジトリに収録されているので、インストールそのものは簡単に実行できるだろう。例えばDebianおよびDebian系ディストリビューションの場合は、「apt-get install smail」というコマンドを実行すればいい。ただしSmailパッケージがリポジトリに収録されていないディストリビューションの場合は、ユーザによる手作業にて、開発元のサイトからソースコードのダウンロードをしなくてはならない。

 DebianベースのシステムにSmailをインストールした場合は、パッケージマネージャが自動で設定ユーティリティを立ち上げてくれるが、その他のプラットフォームでは、コマンドラインでのsmailconfigコマンドの入力による手作業でのユーティリティ起動が必要となるかもしれない。

 この設定ユーティリティでは、初期設定に必要な一連の質問がすべて提示されるため、ユーザが設定ファイルを開いて編集するという作業は、基本的には不要なはずだ。実際にsmailconfigを起動すると初期設定用の各種オプションが提示されるが、大部分のユーザに共通するであろうSmailをインターネットサイトの1つとしてセットアップするための設定は、これらのうち1番目の選択肢として配置されている。このオプションは、SMTPあるいはスマートホストを電子メールのリレーサーバに用いて、複数のユーザを相手にしたインターネットメールの送受信を行うための設定だ。同じく2番目のオプションもスマートホストを利用する設定だが、こちらはSMTPの代わりにUUCP(Unix to Unix Copy)を使うことを想定している。3番目のオプションは、Smailをセントラルスイッチ用に設定するためのもので、ここではユーザのマシンを対象としたメールの送受信は行われず、他のメール処理用サーバに向けた転送が行われる。最後のオプションはローカル専用の設定であり、この設定下で電子メールを受信できるのは、ローカルマシンを使用するユーザだけとなる。

 Smailが最適な選択肢となるのは、仮想ユーザを必要としないシステムであり、ユーザによるメール転送を許可する必要のない場合である。ウィザードにより構成されたデフォルト設定をユーザ設定で上書きするには、/etc/sendmail/configをテキストエディタにて編集すればいい。ここでユーザは、ホスト名、キュー設定、SMTPフラグ(サーバによる応答のスタイル)の変更および、許可する接続に関する調整を行うことができる。このテキストファイルに指定した設定は、設定ウィザードによる指定値よりも優先されるが、ウィザードを再実行すると既存の設定ファイルはリセットされてしまう。こうした仕様が役立つのは、ユーザによる設定変更によってSmailの挙動がおかしくなったが、正常時の設定ファイルをバックアップしていなかったという場合である。

 初期設定さえ完了してしまえば、メール送信サーバとしてSmailを使用する手順は極めて簡単だ。例えばDebianベースのシステムにおけるSmailは、システムブート時にデーモンの1つとして起動するようセットアップされている。その他にもSmailの起動設定は、各システムで使用されているGNOMEやKDEの設定パネルおよび、コマンドラインユーティリティから実行することもできる。メッセージ送信を行いたい場合は、alpineなどのメールユーザエージェント(MUA:Mail User Agent)を使用するか、Smailの起動時に「smail user@host.com」というコマンド指定をすればいい。メール管理にグラフィカル系アプリケーションを使いたいのであれば、ローカル設置型のメールボックスに対応したBalsaを使用すればいいだろう。なおこの場合のメール送信時には、Smailにメッセージが終了したことを認識させるための記号(1つのピリオドだけを含む行)を、メッセージ本体に続けて指定しなくてはならない。またメッセージに関する情報をメールサーバに伝えるヘッダをユーザ指定することも可能で、例えば、他のメールエージェントに認識させるサブジェクトフィールドを追加したければ「Subject: Smail Review」などと記述しておく。

 Smailは、メッセージの受信、収集、分類をするIMAPストアと併用することもできる。私が好んで使用しているIMAPサーバはCyrus IMAPで、これは大部分のディストリビューションにてリポジトリに収録されているものだ。Cyrusのセットアップは比較的難しい部類に属すが、そのインストールと設定については、同プロジェクトのWebサイトで解説されている指示に従っておけばいい。またSmailと併用するための設定は、Sendmail用の設定とほぼ共通している。

 Smailは、初期設定の手順が自動化され、消費するリソースも小さく、簡易的なメールサーバを必要とするシステムに適したソリューションと位置付けていいだろう。またSmailの場合、POPやIMAP機能を追加するのも容易であり、そのための最も簡単な方法はCyrus IMAPと併用することだ。あるいはSquirrelMailなどのWebインタフェースと組み合わせれば、一般のISPで提供されているものに引けを取らない電子メールシステムを構築して、各自のユーザに公開できるはずである。

Kurt Edelbrockは大学生であると同時に、テクノロジ関係のジャーナリストおよびブロガーとしても活動中で、オープンソースに関係する様々な記事を執筆しつつ、某マンモス公立大学のコンサルタントも務めている。

Linux.com 原文(2008年9月29日)