目次
sendmailの設定

(2003/03/04更新) sendmail 8.12.7までのバージョンに共通するセキュリティホールが2003年3月4日に報告されましたので、sendmail 8.9.3へのセキュリティパッチの適用を反映しました。
(2003/04/01更新) 新たなセキュリティホールが2003年3月30日に報告されましたので、sendmail 8.9.3へのセキュリティパッチの適用を反映しました。

 ここでは、UNIX系のOSを使った単一のメールサーバを設けることを前提として、SMTPサービスプログラムsendmailの設定方法を説明します。
 スパムメール中継拒否対策を施した設定ファイルsendmail.cfのテンプレートを提供していますので、参考になさってください。
 ここでご紹介する設定方法はsendmail 8.9.3のものです。提供しているsendmail.cfのテンプレートは、8.9.3への適合を確認しているものです。8.12.7までのバージョンに共通するセキュリティホールが2003年3月4日および3月30日に報告されましたが、それ以外に8.9.3のセキュリティホールは発見されていませんので、ここで述べる方法でメールサーバを安全に運用できると思います。

1. sendmail 8.9.3を入手する
 sendmail 8.9.3を入手してください。IIJなどからダウンロードできます。ファイル名は「sendmail.8.9.3.tar.gz」です。
 また、sendmailコンソーシアムのFTPサイトからsendmail 8.9.3セキュリティパッチファイル「sendmail.8.9.3.security.cr.patch」および「prescan.tar.gz.uu」を入手してください。
 もしUNIXマシンがまだインターネットに接続できないなら、Windowsのブラウザでダウンロードして、Windows対応のFTPクライアントソフト(FFFTPなど)でサーバに送り込むのが簡単でしょう。

2. sendmailをインストールする
 入手したsendmail 8.9.3のファイルとそのセキュリティパッチのファイルを作業用ディレクトリに置き、そのディレクトリ位置で以下のようにコマンドを打ちます(「make install」を行う直前にsuコマンドでrootになってください)。
tar xvfz sendmail.8.9.3.tar.gz
uudecode -p < prescan.tar.gz.uu | gunzip -c | tar -xf -
cd sendmail-8.9.3
patch -p0 < ../sendmail.8.9.3.security.cr.patch
cd src
patch < ../../prescan.8.9.3.patch
cd ..
make
su
make install
 これでsendmailがインストールされます。
 今までsendmailがインストールされていなかった場合は、ブート時に自動実行されるコマンドを収めたファイルに
/usr/lib/sendmail -bd -q30m
というコマンドを追記してください。ここで「-q30m」は、一時的なトラブルと考えられる原因で配送が失敗した場合の再試行間隔を30分と指定するものです。1時間なら「-q1h」と指定します。

3. sendmail.cfを作成する
 設定ファイルsendmail.cfの作成は、慣れていない人には非常にやっかいです。そこで、Gabacho-Netのメールサーバのsendmail.cfを真似ていただく方法を説明します。
 まず、sendmail.cfのテンプレートをここからダウンロードしてください(Microsoft Internet Explorerをお使いの方は、ここを右クリックして「対象をファイルに保存」を選んでください)。
 次に、それをサーバに置き、viやmuleなどのエディタを使って、以下に示す文字列を検索して編集してください。
 以上のように編集したファイルを、rootになって/etcディレクトリの下に置いてください。なお、所有者はrootとし、所有者以外に書き込み権を与えないようにモードを設定してください。

4. 設定の試験
 sendmail.cfが正しくできているかどうかを試験するには、sendmailをテストモードで起動します。以下に、gabacho-unet.ocn.ne.jpドメインでの例を示します(入力する部分を下線で示します)。
おことわり gabacho-unet.ocn.ne.jpドメインは、このページを最初に作成した時のものであり、現在は無効になっています。
% /usr/lib/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 0 root@gabacho-unet.ocn.ne.jp
rewrite: ruleset   0   input: root @ gabacho-unet . ocn . ne . jp
…(省略)…
rewrite: ruleset   0 returns: $# local $: root
> 0 root@example.ad.jp
rewrite: ruleset   0   input: root @ example . ad . jp
…(省略)…
rewrite: ruleset   0 returns: $# smtp $@ example . ad . jp . $: root < @ example . ad . jp >
> 
 このように、自ドメインの適当なアドレスを指定した時に最後に「rewrite: ruleset 0 returns: $# local $: …」、他ドメインの適当なアドレスを指定した時に最後に「rewrite: ruleset 0 returns: $# smtp $@ …」が現れればOKです。
 sendmailのテストモードを終了させるには、Ctrl+Dを打ってください。

5. スパムメール対策の試験
 スパムメールの中継を拒絶する設定がうまくできているかどうかを試験するには、もしISPのダイヤルアップ接続サービスを契約しているなら、それを使う方法があります。ダイヤルアップ接続で、送信メールサーバとして自サイトのメールサーバを指定してメールを送信してみます。自ドメイン宛のメールは送信できて、他ドメイン宛の送信がエラーになればOKです(常時接続サイトから見てダイヤルアップ接続点は外部ですから、外から来て他ドメインへ行くメールを拒絶するのが正常です)。
 なお、ダイヤルアップ接続でメールを正常に送信するには、[付録 A]をご覧ください。
 あるいは、不正中継チェックサービスを利用する方法もあります。たとえば長崎ネットワークサービスがそれを提供してくれています。自分のメールサーバを完全修飾ドメイン名で指定して、以下のような結果になればOKです(Gabacho-Netの試験結果です)。

a.gabacho-unet.ocn.ne.jp (pri=10)

…(省略)…

正常:中継は拒否されました。

合格: あなたがお使いのMXサーバーは、不正な中継を行わないように設定されています。

[付録 A] 外出先から送信可能にする方法
 外出先でISPのダイヤルアップ接続を利用する場合、自サイトのメールサーバを送信サーバとして指定すると、スパムメール対策のために、他ドメイン宛のメールは拒絶されてしまいます。しかし、 という条件が満たされる場合には、以下の方法によって送信を可能にすることができます。
 まず、エディタでsendmail.cfの中の次の二つの行を検索します。 それぞれ、コメントアウトを解除してください(行頭の「#」を削除します)。
 そして、次の例のように、ISPのドメイン名を記述した/etc/sendmail.roamdomainファイル、およびユーザーの送信元メールアドレスを記述した/etc/sendmail.roamusersファイルを作ります。
cd /etc
echo isp.ne.jp > sendmail.roamdomain
echo taro@mydomain.co.jp > sendmail.roamusers
echo hanako@mydomain.co.jp >> sendmail.roamusers
以後、修正時にはエディタで編集してください。いずれのファイルも、記述項目が複数ある場合は一行に一つずつ書きます。
 これらのファイルの作成あるいは修正が終わったら、次のようにしてsendmailを再起動します。
ps ax|grep sendmail
  284 ?        S      0:00 sendmail: accepting connections on port 25
kill -TERM 284
/usr/lib/sendmail -bd -q30m
psコマンドで調べたプロセス番号(ここの例では284)をkillコマンドで指定します。

 ISPを限定しなくてすむ方法としては、まずPOP3でアクセスして認証をパスしたら送信できるという方式があります。しかし、付加プログラムが必要で、qpopperやsendmail.cfにパッチを当てなければならないので、システム管理に慣れていない人には荷が重い方法です。
 ここで説明した方法は、同じISPのユーザーが自サイトのユーザーのメールアドレスをかたればスパムメールを送信できてしまうという問題があります。しかし、その可能性は低いでしょうから、小規模サイトではこの簡単な方法でもよいだろうと思います。
 ISPのメールサーバを利用できる契約があれば、外出先では送信にそれを利用する方が、ここで述べた方法をとるよりもいっそう安全です。メーラーで送信サーバの設定をISPのメールサーバに変更するだけです。メーラーに設定した差出人アドレスは、通常、ISPから割り当てられたものに変更する必要はなく、自サイトのものでかまいません。

[補足] このsendmail.cfの条件
 ここでテンプレートとして提供しているsendmail.cfは、以下の条件で作成したものです。
 ご質問はお受けしますが、これらの条件からはずれる場合についてのご質問はご勘弁ください。(_"_)

目次 ホーム