Next: 6.3.3 Case 2. 外側にリレーホスト、内側は
Up: 6.3 メール環境の設計
Previous: 6.3.1 sendmail.cf generator -
この場合、MX レコードに指定されたドメイン・マスターへ全てのメールが届き、
それを内部へ
再配送します。内部から外部へメールを送る場合は、直接 SMTP によって外部へ
配送がなされます。
この場合、ドメイン・マスターに届いたメールは、ドメイン・マスターの
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: 6.3.3 Case 2. 外側にリレーホスト、内側は
Up: 6.3 メール環境の設計
Previous: 6.3.1 sendmail.cf generator -
Noriyo Kanayama