sendmail のインストール
Last Modified: Tue Dec 27 00:06:02 JST 2011
メールの原理
電子メールとは、メッセージを他のユーザに送るサービスの一種だ。
現在世界中で多くの人々がインターネットを介したメールサービスを利用しているが、
その原理を理解した上で使っている人は少ないと思う。
別にそんなもの知らなくても使うだけなら平気なのだが、管理者としてはそれではまずい。
以下に、簡単に配送の仕組みを説明しておく。
- ローカルのメール配送
Unix マシンでは、ローカルのメール転送は単なるファイルコピーである。
MTA として sendmail を使っている場合、メールのスプールディレクトリは /var/mail で、そこにユーザごとにファイルが用意されている。
新着メールはそのファイルへ追加コピーされていく。
- ホスト間のメール配送
リモートへのメール配送は、smtp を用いて行われる。
メールサーバは smtp ポートを監視しており、リクエストがあればコネクションを確立してメッセージを受信する。
受け取ったメールが自ホスト宛であれば、それをスプールに保存する。
もし他ホスト宛ならば、宛先のホストの smtp ポートへリクエストを発行し転送する(この動作をリレーと呼ぶ)。
- メールの受信
ユーザは、スプールに溜ったメールを自分で読み出すことによって最終的に受信完了となる。
このとき、2つの方法が考えられる。
- サーバへ直接ログインし、メールを読む。
Unix コマンドや、Unix 上で動作するメール・アプリを使う。
- サーバから POP3 や IMAP を用いてリモートマシンで読む。
Windows パソコンなどの、POP3 対応メール・アプリを使う。
POP3 は、メールシステムとは直接関係がない。
あくまでもメールスプールからメールを読み出すために提供されている仕組みのひとつに過ぎない。
- 一般的なパソコンユーザの場合
現代のインターネット事情を考慮して、ダイアルアップアクセスしている Windows ユーザのメール転送の手順をおさらいしておく。
- メールを作成し、送信ボタンを押す
メールソフトには、Becky とか Netscape Mailer とか Outlook とかあると思うが、いずれの場合も SMTP サーバ名を指定しているはずだ。
パソコンから送信されたメールは、いったんそのメールサーバが受け取る。
普通このサーバはダイアルアップサービスを提供している ISP が用意する。
- メールサーバが転送する
メールを受け取ったメールサーバは、宛先のアドレスを解析する。
そして送りつけるべきホスト名を割り出し、そのメールサーバへメッセージを転送する。
- 受取り側サーバがメールを保存する
宛先のメールサーバは、受け取ったメールをユーザごとに分類し、しかるべきディレクトリに保存する。
- 受取人がメールを読む
受取人もまた、Becky とか Netscape Mailer とか Outlook とかを利用していると思うが、いずれの場合も POP(または IMAP) サーバ名、ユーザ名、パスワードを指定しているはずだ。
これらの情報を用いて、メール・アプリがメールサーバのスプールからメールをコピーしてくる
(ついでにスプールを空にする)。
sendmail のインストール
sendmail のインストール作業そのものは、さほど難しくない。
手順は以下の通り。
- ソースを入手する。
www.sendmail.org をチェックして、最新バージョンをダウンロードする。
現在のところ、8.9.3 が最新である。
- ソースを展開する。
# tar zxf sendmail.8.9.3.tar.gz
# cd sendmail-8.9.3
|
- make し、install を実行する。
以上で、ともかく sendmail 本体はインストールされる。
sendmail.cf の作成
sendmail の動作を決定するのは、sendmail.cf というマクロファイルである。
sendmail.cf を直接記述したり変更するのは、はっきりいって大変なことだ。
一般には CF のようなパッケージも出回っているが、ここでは sendmail に付属のマクロパッケージで sendmail.cf を生成する方法について説明する。
元となるマクロパッケージは、sendmail-8.9.3/cf/cf ディレクトリにある、.mc ファイルである。
FreeBSD 用に使えるのは、このうちの generic-bsd-4.4.mc だ。
これと、sendmail-8.9.3/cf/m4/cf.m4 というファイルを用いて、次のコマンドで sendmail.cf が作成できる。
# m4 cf.m4 generic-bsd-4.4.mc >sendmail.cf
|
以上をまとめると、次のようになる。
- sendmail-8.9.3/cf ディレクトリに移動し、作業用ディレクトリを作成する。
# cd sendmail-8.9.3/cf
# mkdir site
|
- 元となる .mc ファイルをコピーする。
# cp ../cf/generic-bsd-4.4.mc sendmail.mc
|
- m4 コマンドを使って sendmail.cf を作成する。
# m4 ../m4/cf.m4 sendmail.mc >sendmail.cf
|
- 自分のドメイン名を書いた sendmail.cw ファイルを用意する。
# cat >sendmail.cw
mydomain.com
^D
|
- ファイルを /etc にコピーする。
# cp sendmail.cf sendmail.cw /etc
|
sendmail.cf の設定
sendmail.cf の設定は、その元となる .mc ファイルを変更することでコントロールすることができる。
まず、上記の方法でコピーしてきた sendmail.mc の内容を示す。
divert(-1)
#
# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
#
# (コメント省略)
#
divert(0)dnl
VERSIONID(`@(#)generic-bsd4.4.mc 8.7 (Berkeley) 5/19/1998')
OSTYPE(bsd4.4)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
MAILER(smtp)dnl
|
それぞれのディレクティブの意味は、sendmail のドキュメントを参照してほしい。
通常、このままの設定で十分だが、ひとつだけ追加すべき項目がある。
sendmail の再起動
sendmail.cf と、他の必要なファイルを /etc にコピーしたら、sendmail を再起動しなければならない。
通常ならば、デーモンとして動作している sendmail に HUP を送るだけでよい。
再起動したら、/var/log/maillog をチェックして、エラーが出ていないことを確かめる。
sendmail.cf にエラーがあっても、黙って終了してしまうので注意が必要だ。
[back to index]