電子メールシステムで使われているメール転送エージェント(MTA:Mail Transport Agent)とは、EvolutionやMozilla Thunderbirdなどのクライアントアプリケーションから出されたメールを収集し、宛先として指定されたマシンに配送するためのルーティングを行うプログラムである。こうした処理は、差出人と受取人の間をつなぐ一種の“配管接続”をする作業だとでも考えればいいだろう。現在利用可能なMTAとしては、Postfix、Sendmail、qmailなどの優れたメールサーバが存在しているが、これらを立ち上げるにはいずれも膨大な量の設定を必要とする。そのため、例えば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をサポートする本格的なメールストアと組み合わせることで、実用レベルのメールサーバソリューションとなるだけの拡張性も備えているのだ。
