sendmail-8.9.1 で サーバを守るっ!!
 SAMP メールの中継として利用されるサーバが自分のサーバだったと知ったら・・。ガクゼンとして、世間に顔向け出来ないですよね。後、エラーメールは沢山来るやらロードアベレージはなんか異様に高いやらで・・。良い事一つも無いですね。

 と、言う事で、この URL では今まで、sendmail-8.8.8qmail1.02 等、いろいろな MTA の設定に付いて書いて来ましたが、今回はその最新版である、senamil-8.9.1a と、それで利用する sendmail.cf に付いて書いて見たいと思います。
 また、後半では、当然ながら、バーチャルメールに対応した、senmail.cf の作り方も書いて見たいと思います。sendmail-8.8.8 のバーチャルメール対応はこちらを参考にしてください。

 と、言う事で早速必要となるファイルを持って来ましょう。

1.sendmail を拾ってきます。 → sendmail.8.9.1.tar.gz
2.sendmail の最新パッチを拾ってきます。 → sendmail.8.9.1a.patch
3. CF の最新版を拾ってきます。 → CF-3.7Wpre7.tar.gz

・sendmail-8.9.1 のコンパイル
 以上で準備は整いました。では早速コンパイルに掛かりましょう。まず最初は、sendmail.8.9.1.tar.gz のコンパイルを行います。ソース単体では、バージョンが sendmail-8.9.1 になってしまいますが、そこに、一緒に拾って来たパッチを当てると8.9.1a と言うバージョンになります。

----------------
# cd /usr/local/src
# tar xvzfp sendmail.8.9.1.tar.gz
# cd sendmail-8.9.1/src
# cat ~/sendmail.8.9.1a.patch | patch -p	*1
# ./makesendmail
# cp /usr/sbin/sendmail /usr/sbin/sendmail.ORG	*2
# ./makesendmail install
# 
----------------
*1. sendmail.8.9.1a.patch を sendmail の src ディレクトリで当てます。
*2. 必要なら、オリジナルの sendmail を backup してください。
 一応、これで 最新のバージョンの sendmail がインストールされました。簡単に終ります。良かったですねぇぇ(^^)

・CF、cf、/etc/sendmail.cf・・。
 自力で作るのが異常に大変だぁぁ・・(g_g)。2.2.7-RELEASE に標準添付の sendmail.cf をそのまま使う場合は、以下を修正してください。sendmail は 8.9 から sendmail.cf に記述されたバージョンを見る様になりました。ここを直さなくても動かない事は無いのですが、ワーニングが出力されます。ま、気にしないと言うのであれば別段問題は感じないのですが・・(^^;;。と、言う事で、既存の sendmail.cf は一部修正のみでそのまま使えます。;-)

----------------
# level 7 config file format
V7/Berkeley

   ↓

V8/Berkeley
----------------
 これで /var/run/sendmail.pid を見て sendmail をリスタートして上げましょう。

 さて、続いていよいよ自力で sendmail を作ってみましょう;-)。まずは、CF を作ります。その昔にも書きましたが、以下の手順です。

----------------
# cd /usr/local/src
# tar xvzfp CF-3.7Wpre7.tar.gz
# cd CF-3.7Wpre7
# make cleantools
# make tools
# make samples
# cd Samples
#
----------------
 さて、準備は一応出来ました。Samples には sendmail.cf のモトになる def ファイルが沢山有りますが、とりあえずは、compat28W-v8.def と言うのが一番近そうなのでこれを自分の好みにカスタマイズしましょう。対 SPAM 対応、不正な中継として利用されない様にもしましょう。

 おっと、その前に、README.jpn と、doc/MANUAL.jpn に目を通せばある程度そのパラメータが解ると思います。熟読とまでは行かなくとも、とりあえずは SPAM 関係には目を通してしてください;-)。

 と、言う事で一応私の作った CF をここに載せて見ましょう;-)。基本は、Samples/compat28W-v8.def で要らないのを消して、SPAM 対応のを追加しています。 → compat28W-v8.def

 この def ファイルの各パラメータの説明は全て doc/MANUAL.jpn に書かれているのでそちらを御覧ください。

 さ、続いて def ファイルを CF-3.7Wpre7 のディレクトリの下に置いて、以下のコマンドで make します。

----------------
# make compat28W-v8.cf
MASTERDIR=Master TOOLDIR=Tools  Tools/Configure compat28W-v8.def > compat28W-v8.cf.tmp
mv -f compat28W-v8.cf.tmp compat28W-v8.cf
# sendmail -bt -C ./compat28W-v8.cf
#
----------------
 make で、新しく作られる cf を指定します。これで完了です。出来た senmail.cf を例の如くテストします。テスト方法はこちらに載っています。 → sendmail -bt -C ./sample.cf

 テストで、localhost 内処理、外部の SMTP への送信が正しく行われればとりあえずは OK でしょう。ふふふ(^^)。

 後、関連するファイルの設定を行いましょう。def ファイルで

--- def ファイルの設定
LOCAL_HOST_IPADDR=/etc/sendmail.localip
LOCAL_HOST_DOMAIN=/etc/sendmail.localdomain
--- MANUAL.jpn に書かれている内容
LOCAL_HOST_IPADDR=/etc/sendmail.localip (デフォルトは未定義)
        受信/中継を無条件で許可する SMTP 接続ホストの IP アドレスのリスト、
        あるいはそれが記述されたファイル(テキスト形式)を指定する。
        一般に、組織内のホストが該当するように記述する。
        許可された場合、後述の ALLOW_* によるチェックは行われないので、
        あらゆる宛先に対してメールを送信することが可能となる。
        130.54 を記述すれば、130.54.*.* が許可される。
        LOCAL_HOST_DOMAIN は後述の CLIENT_HOST_IPADDR より先に判定される。
LOCAL_HOST_DOMAIN=/etc/sendmail.localdomain (デフォルトは未定義)
        受信/中継を無条件で許可する SMTP 接続ホストのドメインのリスト、
        あるいはそれが記述されたファイル(テキスト形式)を指定する。
        一般に、組織内のホストが該当するように記述する。
        許可された場合、後述の ALLOW_* によるチェックは行われないので、
        あらゆる宛先に対してメールを送信することが可能となる。
        kyoto-u.ac.jp を記述すれば、*.kyoto-u.ac.jp も許可される。
        LOCAL_HOST_DOMAIN は後述の CLIENT_HOST_DOMAIN より先に判定される。
---
 を指定しましたがこのファイルはとりあえず、
--- /etc/sendmail.localip
127.0.0.1
192.168.1
----------------
--- /etc/sendmail.localdomain
localhost
running-dog.net
----------------
 こんな感じで良いんではないでしょうか。ふぅぅ。後、これとは別に、sendmail.relay.from を指定すると面白いかもしれません。doc/MANUAL.jpn と、後、今回出来た sendmail.cf を覗いて見てください;-)。

 さささ、一応出来ました。良かったですねぇぇ(^^)。後は、メーラの smtp サーバの設定の所に、今回のマシンを指定してテストしてみましょ。はじかれてエラーとなれば spam のテストは OK ですね。

 尚、送信の設定に付いては何も書いていませんが、お手もとの MS/OS のメールクライアントで使うかしてください。え?私ですか?私は自分のデスクトップですので、当然、mule+mew+im です(^^)V。From: 行は ~/.im/Config で思う様に変更出来るので苦労していません。

98/10/09 追加分
 どうも、LOCAL_HOST_IPADDR、LOCAL_HOST_DOMAIN で指定する内容と言うのは、qmail で言う所の、/var/qmail/control/rcpthosts みたいなものでここに書かれたモノがローカルホスト内で処理されるみたいで、あんま SPAM 対応の処理にはなっていないんですね。(^^;;

 と、言う事で、make sample.cf して出来た sendmail.cf を手で編集してしまいましょう。必要なパラメータは

---
#F{RelayFrom} -o /etc/sendmail.relay.from
---

になります。この一行のコメントーはずして /etc/sendmail.relay.from と言うファイルを用意してあげましょう。中身は以下の様になります。

--- /etc/sendmail.relay.from
running-dog.net
shiro.running-dog.net
----------------
つまり、ここに書いた From: 行を指定した SMTP からしか受け付けません。後は他の設定ファイルと組み合わせることによりいろいろな対応が可能となっています。
98/10/09 追加分ここまで。

・sendmail-8.9.1 でバーチャルメール
 いやぁぁ・・。以前紹介した、メールのバーチャルドメインをしようっ!!。特集ですが、どうも、sendmail-8.8.8 で、FreeBSD に標準添付の sendmail.cf にしか有効ではないみたいなんですね。
 と、言うのも、今回の sendmail-8.9.1 と、CF-3.7Wpre7 で作られる sendmail.cf には Ruleset 98 と言うのが存在しないのです・・。と、言う事で新たな設定でのトライです。ふみふみ・・。

 と、言う事で早速作りはじめますが、 def は前出のモノを使います。これにちょっとだけ行を追加して、関係するファイルを作って上げます。

----------------
USERTABLE_MAPS='shiro.running-dog.net=btree:/etc/usertable.db'
----------------
この一行を適当な所で追加してあげます。あ、言い忘れました。環境は以下にしましょう。
FQDN            : pochi.running-dog.net
メール用 domain : running-dog.net
バーチャル用 domain : shiro.running-dog.net
受信用 login 名 : takano
 さささ、この設定を組み込んで、def ファイルを make して、sendmail.cf を新たに作成します。その後、/etc/usertable.db と言うファイルを用意します。この設定に付いても doc/MANUAL.jpn に書いてあるのでそちらを確認してください。
--- /etc/usertable(text file)
takachan:maildrop       takano
takano:maildrop         takano
postmaster:maildrop     takano
webmaster:maildrop      takano
----------------
ちょっと説明しますと、

一行目
 takachan@shiro.running-dog.net に来たメールは、/etc/usertable.db と言う btreeなでータベースを参照して、maildrop と言うワザを使い、takano と言う login のスプールに格納する。

二行目
 takano@shiro.running-dog.net に来たメールは、/etc/usertable.db と言う btreeなでータベースを参照して、maildrop と言うワザを使い、takano と言う login のスプールに格納する。

 普通、takano と言うのは、takano@running-dog.net と言うので使われているので、この takano と言うスプールにはいろいろなメールを貯める事が出来ます。後、「ワザ」ですが、doc/MANUAL.jpn を読めば解ると思いますが、他にも「掟破りの逆十字」じゃ無かった。mailname と言う転送設定とか、受信ドメインの書換え等に使える「ワザ」がアルみたいです。

 さ、usertable と言うテキストファイルを今度は db 形式にしましょう。こちらは、Samples/Tables の中に、makeusertable、usertable と言うファイルが有るので参考にしてください。

--- CF-3.7Wpre7/Samples/Tables/makeusertable
#! /bin/sh

PATH=/usr/bin
export PATH

MAKEMAP=makemap
TABLE=/etc/usertable
DB=/etc/usertable.db

$MAKEMAP btree $DB < $TABLE
----------------
 これで usertable.db も完成しました。後は、例の如く、sendmail-bt -C samole.cf して、sendmail のテストをしてみましょう。localhost で回る事と、他の smtp に出て行く事を確認した後、sendmail.cf としてしかるべき所に置き、sendmail をリスタートしてすかさず送信テスト。自分のスプールに溜る事を確認しておしまい。あ、当然、DNS の MX レコードは向いていますよね?

 と、言う事で駆け足で新しい sendmail-8.9.1、それ対応の sendmail.cf さらにはバーチャル対応の sendmail.cf まで作ってしまいまた。ふふふ(^^)。これで、むやみやたらに SPAM の中継にされる事も無くなりましたね。良かったぁぁ(^^)。


Copyright (c) 1997-2004 takachan@running-dog.net All Rights Reserved.