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

» 2008年04月23日 06時30分 公開
[Michael-J.-Hammel,Open Tech Press]
SourceForge.JP Magazine
前のページへ 1|2       

設定

 sSMTP用の設定ファイルの場所は、前記でsSMTPをソースコードから構築する際にconfigureコマンドで使用した--prefixで指定したディレクトリの下となり、今回の場合は/usr/local/ssmtp/etc/ssmtp/ssmtp.confとなる。この設定ファイルには、デフォルトでは4つのよく使われるオプションが含まれているだけだが、後から幾つか認証用のオプションを追加することもできる。

 sSMTPを試しに構築してみると、わたしの環境では次のような設定ファイルが作成された(先頭に「#」記号がある行はコメント行)。

# /etc/ssmtp.conf -- a config file for sSMTP sendmail.

#

# The person who gets all mail for userids < 1000

# Make this empty to disable rewriting.

root=postmaster

# The place where the mail goes. The actual machine name is required

# no MX records are consulted. Commonly mailhosts are named mail.domain.com

# The example will fit if you are in domain.com and you mailhub is so named.

mailhub=mail

# Where will the mail seem to come from?

#rewriteDomain=graphics-muse.org

# The full hostname

hostname=kepler.graphics-muse.org


 root=の値は、cronジョブのエラー出力やログファイルの分析など、システムによって生成されたメールのすべてを受け取るためのメールアドレスに変更しよう。わたしの場合、この行は自分の個人用メールアドレスに変更した。

 mailhub=には、メールが送信されるべきSMTPサーバを定義する。この行には、メールリーダにSMTPサーバとして指定しているホストを指定しよう。

 hostname=には、メールの受信者に見せたいメールホストの名前を指定する。例えばわたしの場合、メールに対する返信はメールリーダーを使って受信できるようにISPのドメインに送ってほしいので、この行にはISPのドメインを指定した。このドメインは、外部に向けて送信するすべてのメールのドメイン部分になる。つまり、システム上の全ユーザーからのメールはこのドメインから送信されたように見える。

 rewriteDomain=は、送信元を別のドメインに見せかけるために使用できる。わたしの場合はすでにhostnameの行でサーバのアドレスを詐称しているので、この行はコメントのままにしておいた。

 自動生成直後の最初の状態の設定ファイルには、認証が必要なSMTPサーバにログインするための情報は含まれていない。この情報は、ISP経由でメールを送信するためにメールリーダーに指定する情報と同じ内容だ。この情報を指定するには、以下のような行を追加すればよい。

AuthUser=ユーザー名

AuthPass=パスワード

AuthMethod=CRAM-MD5


 前記のように設定しておくと、システムが/bin/mailを使用してメールを送信するたびに、実際にはsendmailに置き換わっているsSMTPが呼び出され、sSMTPが設定ファイルで指定された認証情報を使用してISPのSMTPサーバにログインして外部ホスト宛のメールを送信する。

注意点

 SendmailをsSMTPに入れ替えるのが有効なのは、ユーザーが1人しかいないデスクトップPCの場合だ。ユーザーが複数人いる場合にはsSMTPは使用しない方がよいかもしれない。というのもデフォルトでは、mailコマンドで送信されるすべてのメールが1人のユーザーから送信されたものであるようにみえるためだ。revaliasesという設定ファイルを追加して利用すれば、送信メールの特定のFrom:アドレスに対して特定のローカルユーザーを割り当て、特定のメールサーバ経由でそのメールを送るということは可能だ。しかし認証情報が必要なサーバの場合には、異なる認証情報を使用する異なるメールサーバ上で異なるログインをするように設定する方法というものは存在しない。つまりsSMTPでは、外部に送信するメールについて接続できるリモートのMTAは基本的には1つだけと考えた方がいいだろう。

 またシステム上の全ユーザーがsSMTPを使用するには全ユーザーがssmtp.confの読み取り権限を持っている必要があるということだが、誰もが読むことのできる設定ファイル内にISPのログイン情報を書くということは、システム上の全ユーザーがあなたのメールの認証情報を知ることができるということだ。繰り返すが、このことからも、sSMTPはシステム上にユーザーが1人しかいないホームユーザーにのみ向いているといえる。なおこの問題についてはユーザーとグループを適切に設定した上でsSMTPをsetuidプログラムとして実行することで対処することもできるが、そのようなことをするのは、そもそもの目的であった、できるだけシンプルにするということに反することになるだろう。

 sSMTPはSendmailの代わりになるが、完全に置き換わるわけではない。重要な違いの1つは、Sendmailとは違ってメールの受信を行えない点だ。メールをISPから受信して読むためには、メールリーダーを使用する必要がある。

 またsSMTPはメールのキューを管理しないため、送信メールを即座に配信しようとするという違いもある。なおsSMTPのマニュアルページでは、Sendmailがサポートしているものと同じコマンドラインオプションがすべて表記されているが、実際にはsSMTPはそれらのオプションのほとんどを無視するだけだ。

 最後に、sSMTPの実装上、送信メールのヘッダの容量には制限が設けられている。そのため、あまりに長い受信者リストやあまりに長いサブジェクトは含めないようにしよう。多数の受信者に対してメールを送信する必要がある場合には、すべての受信者をコマンドラインで手動で列挙するのではなく、エイリアスを設定すればよい。

 sSMTPは、その名の通り「シンプル」だ。設定には最低限の作業しか必要ではなく、長期的な保守もほとんど(あるいはまったく)必要ない。とはいえsSMTPはあらゆるユーザーにふさわしいわけではなく、マシン上にユーザーが1人しかいない場合の、技術者ではないホームユーザーに対して最大の価値を発揮する。そのようなユーザーにとってsSMTPは、メール管理を向上させるための簡単な方法となり得る。

Michael J. Hammelは、コロラド州コロラドスプリングズを拠点とするCEI(Colorado Engineering, Inc.)のソフトウェアエンジニア長。ソフトウェア開発/管理における20年以上の経験があり、さまざまなオンライン/紙媒体の雑誌で100を越える記事を執筆してきた。GIMP関連の3冊を含む、オープンソース関連の複数の書籍の著者。


関連キーワード

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


前のページへ 1|2       

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ