Sendmailの代わりにシンプルなsSMTPを使うLeverage OSS(1/2 ページ)

Sendmailは高機能だが、ライトなユーザーにとっては、理想的なツールだとは言い難い点もある。本稿では、複雑なSendmailの代わりに使用できるシンプルなツールとしてsSMTPを紹介する。

» 2008年04月23日 06時30分 公開
[Michael-J.-Hammel,Open Tech Press]
SourceForge.JP Magazine

 Sendmailといえば、古くはSlackwareの黎明(れいめい)期よりLinuxディストリビューションで使われ続けてきた由緒あるプログラムだ。しかしSendmailは高機能すぎるため、主にISPのメールサーバを利用している普通のデスクトップユーザーにとっては必ずしも理想的なソリューションではない。一方、sSMTPはそのような場合にうってつけのシンプルなソリューションだ。

 MTA(Mail Transfer Agent)として知られるアプリケーションは、はるか昔に、つまりインターネットでSMTP(Simple Mail Transfer Protocol)が標準規格化されるよりも前に、メールの処理やメール配信のための最適なルートの決定を手助けするものとして設計された。そのような最も初期のMTAの1つがSendmailで、複数のネットワーク間でメール配信をするために非常に普及した。Linuxが広まりつつあった当時、Sendmailはメール配信用のオープンソースソフトウェアとして唯一実用的なものだったため、多くのLinuxディストリビューション上で提供されるデフォルトのMTAになった。

 メールの処理はこれまでも常に分業化されていて、MTAがメールの配信を受け持つのに対し、ユーザーがメールを作成/管理するのにはGNOMEのEvolution、KDEのKMail、MozillaのThunderbirdなどといったMUA(Mail User Agent)が使われる。MUAはメールの配信については最初のステップしか把握していない。言い換えると、MUAは最終的なメールのあて先にメールが届くまでを知っているわけではなく、通常はサーバ上にある特定のMTAにメールを届ける(その後MTAが最終的なあて先までのメール配信を担当する)方法について把握しているだけだ。

 メール経由で警告を送るcronジョブや何らかの自動化システムを使用している場合、システムがメールの送信にデフォルトで使用することになるのはSendmailだ。これは、Linuxシステムのmailコマンド(通常は/bin/mail)が使用するデフォルトのMTAがSendmailであるためだ。そのためそのようなメールもISPのメールサーバから受け取るためにはメールリーダーの設定を行うだけでなく、Sendmailの設定も行う必要があるということになる。

 残念ながらSendmailの設定は非常に煩雑なため、ベテランユーザーでもできることなら避けて済ませたいという代物だ。そのためSendmailは、普通のデスクトップユーザーにとって理想的なツールだとは言い難い。

 Sendmailの代替物として普及しているMTAにはQMailとPostfixの2つがあり、どちらも当初はシンプルなMTAだったが、おのずと複雑なシステムへと変化し、今では単に手元のマシンからISPまでメールを送りたいというだけの普通のデスクトップユーザーのニーズをはるかに越えた機能が備わっている。そのほかにも、elmやpineなど/bin/mail以外のツールに直接SMTPを扱わせてメールを送信する方法もあるが、これらはフル装備のMUAクライアントなので、ISPにメールを届けるというメインの目的にとってはオプションがあまりに多すぎてオーバースペックだ。

シンプルな方法:sSMTP

 sSMTPは、複雑なSendmailの代わりに使用できるシンプルなツールだ。前記のような代替物とは違って複雑ではない。sSMTPを使えば、SMTPに関する設定をよりシンプルで小さな設定ファイルで置き換えることができる。この設定ファイルでは、リモートのSMTPサーバ、認証情報(ユーザー名とパスワード)、送信メールに表示する送信元ドメインなどをメールリーダーの設定と似た感じで設定できる。

 sSMTPは、各ディストリビューションのパッケージマネジャー経由でインストールすることもできるし、ソースからインストールすることもできる。後者の場合は、ソースパッケージを展開した後、ソースコードのあるディレクトリに移動して「./configure --prefix=/usr/local/ssmtp --enable-ssl --enable-md5auth」をコマンドラインで実行すればよい。このようにしてSSLとMD5Authを有効にしておけばSMTPのログインが必要なISPとのやり取りを行うことができる。また必要ならIPv6のサポートも有効にできる。詳しくは--helpを参照しよう。

 設定が完了したら、通例のmakeコマンドとsudo make installコマンドとを使用してパッケージの構築とインストールをする。installコマンドを実行すると、幾つかの項目を入力するよう求められるので、表示された指示に従えばよい。インストールが完了すれば、/usr/local/ssmtpというディレクトリが作成されていることと、sbinサブディレクトリの中にsSMTPのバイナリ、etc/ssmtpサブディレクトリの中に設定ファイルがそれぞれあることを確認できるはずだ。

 この時点でSendmailを終了して、sSMTPと置き換えることができるようになった。System Vのinitスクリプトを使用しているLinuxディストリビューション(最近のディストリビューションはほとんどが使用している)上でSendmailを終了するには、serviceコマンドを使うとよいだろう。

sudo service sendmail stop

sudo chkconfig --levels 2345 sendmail off


 1つ目のコマンドは、その時点で実行中のSendmailのインスタンスを終了する。2つ目のコマンドは、リブート時にSendmailが再び起動しないようにする。手元のLinuxディストリビューションがSysVInitパッケージを使用していない場合は、「sudo killall sendmail」などのコマンドを手動で実行してsendmailのプロセスを終了する必要があるだろう。

 Sendmailを置き換えるには単に、Sendmailを別のファイル名でバックアップした上で、sendmailからsSMTPへのシンボリックリンクを作成すればよい。

sudo mv /usr/sbin/sendmail /usr/sbin/sendmail.orig

sudo ln -s /usr/local/ssmtp/sbin/ssmtp /usr/sbin/sendmail


 1つ目のコマンドは、元のsendmailを邪魔にならないように別のファイル名(sendmail.orig)にする。2つめのコマンドは、システム上のプログラムがsendmailを呼び出した際にsSMTPが実行されるようにしている。こうしておけば、sSMTPを使用していて何か問題が起こったとしても、シンボリックリンクを削除して、名前を変更しておいたsendmailのファイルを元の名前に戻すだけでよい。

関連キーワード

sendmail | ISP | メールサーバ | Leverage OSS


       1|2 次のページへ

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ