next up previous contents
Next: 6.3.3 Case 2. 外側にリレーホスト、内側は Up: 6.3 メール環境の設計 Previous: 6.3.1 sendmail.cf generator -

6.3.2 Case 1. すべて DNS による配送を行う場合

この場合、MX レコードに指定されたドメイン・マスターへ全てのメールが届き、 それを内部へ 再配送します。内部から外部へメールを送る場合は、直接 SMTP によって外部へ 配送がなされます。
\epsfile{file=alldns}

この場合、ドメイン・マスターに届いたメールは、ドメイン・マスターの sendmail.mx が NIS の aliases map を参照して適切なスプール・ホストに 再配送することになります。 従って、NIS サーバーの /etc/aliases に各メンバーごとの aliases が 記述されていなければならず、/var/yp/Makefile が make されていなければ なりません( aliases database の再構築と slave server への転送)。

        # /etc/aliases
        #    中略
        member01:member01@lxa1.summer1.wakhok.ac.jp
        member02:member02@lxa1.summer1.wakhok.ac.jp
        member03:member03@lxa1.summer1.wakhok.ac.jp
        member04:member04@lxa2.summer1.wakhok.ac.jp
        member05:member05@lxa2.summer1.wakhok.ac.jp
        ...

用意すべき sendmail.cf は、スプール・ホスト(ハブ・ホストと兼用)用と 非スプールホスト用の2種類で です。

# DNS + NIS + hub,spool
CF_TYPE=R8V8
OS_TYPE=solaris2.5-ml
MX_SENDMAIL=yes
MY_DOMAIN='summer1.wakhok.ac.jp'
FROM_ADDRESS='$m'
RECIPIENT_GENERIC=yes
REWRITE_GENERIC_FROM=lower
REWRITE_GENERIC_TO=lower
ACCEPT_ADDRS='$m'       # can be used with R8 sendmail
KANJI_CONVERSION=yes
LOCAL_MAILER_PATH='/bin/binmail.kc'
NIS_LOOKUP_DELIVER=yes
FORMAT_RECEIVED=Novers-Ident-Dest-Multi
NIS_ALIAS_MAP=mail.aliases
AUTO_REBUILD='True'
SMTP_GREETING_MSG='$j Sendmail R8/$Z; $b'
MAIL_RELAY_RESTRICTION=yes
CHECK_RELAY_DEFAULT=allow # (allow/deny)
LOCAL_HOST_IPADDR=/etc/sendmail.localip
ALLOW_RECIPIENT_DOMAIN=summer1.wakhok.ac.jp
DONT_BLAME_SENDMAIL=MapInUnsafeDirPath

# DNS + NIS + no-spool
# 上の def に以下の2行を追加する
HUB_HOST='lxa1'
SPOOL_HOST='lxa1'

以下、主に書き換えが必要な項目について解説します。

OSTYPE

使用している OS の種類を指定します。指定出来る名前は、Master/OSTYPE にある 名前を使用できます。solaris2.5 用は、solaris2.5 と solaris2.5-ml がありますが、 前者は Solaris2.5 の /bin/mail 用で、後者が sendmail に付属の mail.local 用です。

a50s            bsdi2.0@        irix            newsos6         solaris2.5
aix3            bsdi2.1@        irix4@          nextstep        solaris2.5-ml
aix4            bsdi3.0@        irix5           nt3.5           solaris2.6@
altos           bsdi3.1@        irix6@          nt4.0           solaris2.6-ml@
amdahl-uts      dgux            isc4.1          os2             sunos3.5
aux             domainos        linux           osf1            sunos4
bsd386          ds90            linux-debian    ptx2            sunos4.1@
bsd4.3          dynix3.2        maxion          riscos4.5       svr4
bsd4.4          ews-ux4         mklinux         sco-uw7         ultrix4.1
bsdi1.0@        hpux10          newsos4         sco3.2          unios-b
bsdi1.1@        hpux9           newsos4.1@      solaris2.1

MY_DOMAIN

次に自サイトのドメイン名の決定です。通常これは自動的に補われる筈ですが、 うまく動作しない場合もあるので、その場合は陽に指定します。 その場合、シングル・クォーテーションで囲むのを忘れてはいけません。

FROM_ADDRESS

次に重要なのが、From 行のアドレスの指定方法です。デフォルトでは、 FROM_ADDRESS には $j が指定されるので、[host name].[domain name] の ように設定されます。従って、lxa1.summer1.wakhok.ac.jp のように From 行の アドレスが設定されますが、これをドメイン名のみに書き換えたい場合は、 $m を指定すれば良いでしょう。

RECIPIENT_GENERIC

次に、ローカル配送の場合のアドレス設定で、ユーザー名のみのアドレスを どうするかですが、RECIPIENT_GENERIC を no (デフォルト)にすると $j (ホスト名)が適応されるので、ここも $m になるようにしておきます。

REWRITE_GENERIC

RECIPIENT_GENERIC と同様に、 $m になるようにします。特に、@*.mydomain に対しても書き換えを行って、 $m に書き換えるようにします。こうすることによって、ユーザーが陽に @lxa1.mydomain 宛のメイルを出した場合でも、強制的に、@mydomain に書き換えら れるので無駄なトラフィックや思わぬ障害を避けることが出来ます。

ACCEPT_ADDRS

ドメイン名のみのメールを受け取るためには、sendmail R8 では、
# addresses which should be accepted as local
ACCEPT_ADDRS='$m'       # can be used with R8 sendmail
とし、R5 では、
##ACCEPT_ADDRS=$MY_DOMAIN
のようにします。 但し、マクロ文字 MY_DOMAIN を指定していない場合には、'summer1.wakhok.ac.jp' のように指定します。

KANJI_CONVERSION

CF に付属のスクリプトを用いて、スプールに書き込む際の漢字コードを 選択出来るようにしたい場合に指定する。

LOCAL_MAILER_PATH

KANJI_CONVERSION を指定した場合に、binmail.kc の場所を指定します。 標準では /usr/lib/binmail.kc になっていますが、ここでは /bin/binmail.kc とします。

NIS_LOOKUP_DELIVER

NIS の host map を用いて配送したい場合には、NIS_LOOKUP_DELIVER を yes に します。@[host] 及び @[host].mydomain の場合に適用されることになっています。

NIS_ALIAS_MAP

NIS の aliases の map file の名前を指定します。これが無いと、NIS の aliases map を見に行きません。

AUTO_REBUILD

newaliases を自動的に実行します。これが無いと、NIS の aliases マップまたは ローカルの /etc/aliases に変更があるたびに、手で newaliases をしなければ なりません。

HUB_HOST

ハブ・ホスト(ドメイン・マスター)名を書きます。

SPOOL_HOST

ローカルにはスプールを持っていない場合(NFS マウントする場合)や、 スプールホストに必ず転送したい場合にホスト名を書きます。 但し、すべてのマシン名を剥ぎ取り、NIS aliases による配送をしている 場合には特に指定しなくても良いのですが、 何等かの原因で NIS aliases が見えないと ローカル・メイルがスプールに落ちてしまうので、設定しておいた方が良いでしょう。 また、NFS マウントしている場合は、必ず必要です。

MAIL_RELAY_RESTRICTION

yes にすると、SPAM 対策用として作成されます。SPAM 対策用 cf の基本は、 内部から外部への配送は全て許可され、外部から内部への配送も特別に指定 しない限り許可されます。一方、外部から外部への配送は特別に許可しない 限り、デフォルトでは禁止されます。

CHECK_RELAY_DEFAULT

allow がデフォルト。deny にすると、特別に許可しない限り、SMTP 接続を 拒否する。

LOCAL_HOST_IPADDR

内部の IP アドレスを指定するか、それを記述したファイルを指定する。 例えば、/etc/sendmail.localip を指定した場合には、以下のように記述する。

  202.11.98.129
  202.11.98.130
  ...
ネットワーク全部を指定する場合には、202.11.98 と上位のネットワーク部 のみを記述すれば、202.11.98.* の意味になります。

ALLOW_RECIPIENT_DOMAIN

ここに記述したドメインは、すべて内部と同じように取り扱う。通常は、内部の ドメイン名を記述する。

DONT_BLAME_SENDMAIL

sendmail.8.9.x では、ファイルのパーミッションや、ディレクトリのパーミッション に対して非常に厳しくなっている。例えば、/var が group 書き込みが ON ならば、 そこに map file などを作成したり、そこにおいたデータベースファイルの読み込み そのものを拒否する(しかも、注意すべきは、file not found などというメッセージ や、cannot write というようなメッセージを出すので勘違いしやすい)。 しかし、/var などは色々なプログラムで使用されるので、 必ずしも sendmail のこの厳格な基準を適用することが難しい。これを緩和するための ものが、DONT_BLAME_SENDMAIL で、この後ろに、オプションを書く。オプションは 多岐にわたるので、ここでは詳しくは解説しないが、 CF-3.7Wpre6/doc/98-0001-04.jis.txt に JCERT による解説があるのでそちらを参照 されたい。取り合えずは、NIS のデータベースや、/etc/mail に aliases database を構築する際に必要なので、MapInUnsafeDirPath のオプションのみを設定する。 これが気になる人は、/etc/mail に関しては、owner を root にして group 書き込み を禁止すれば良い。NIS に関しては、/var の問題が関係するので難しいが、別に このオプションを付けた cf ファイルを用意し、Makefile から呼ばれる sendmail に関してはこの cf を使用するように -C オプションで指定すると良いでしょう。


next up previous contents
Next: 6.3.3 Case 2. 外側にリレーホスト、内側は Up: 6.3 メール環境の設計 Previous: 6.3.1 sendmail.cf generator -
Noriyo Kanayama