Subject: sendmail.cf

From: [email-masked] (Uchida Hitoshi)
Date: 22 Nov 93 00:50:52 GMT

内田@スズキです。

sendmail.cf の書き方についての質問です。

以下の図のようなネットがあったとします。

  -----Internet------+----TCP/IP------
                     |
             +-------+-------+
             |gw.updom.ac.jp |
             +-------+-------+
                     | UUCP name updomgw
                     |
                    UUCP
                     |
             +-------+-------+
             |gw.mydom.co.jp |
             +-------+-------+
                     |
  ----mydom.co.jp----+-----TCP/IP-----

(1) mydom.co.jp. の中では独自に Name server を運用していて、内部のメイル
    は MX でルーティングしています。
(2) Wildcard MX を使って、自ドメイン以外のメイルはすべて、 Gateway である 
    gw.mydom.co.jp に転送するように設定しています。
(3) 現状では gw.mydom.co.jp の sendmail.cf だけは mailconf で作成したもの
    を使ってスタティックにルーティングしています。

質問は、gw.mydom.co.jp でも sendmail.mx を使い、mydom.co.jp 宛のメイルは
MX でルーティングし、mydom.co.jp 以外の 外部向けメイルは無条件で UUCP で
updomgw(gw.updom.ac.jp) に送るようにしようというものです。

sendmail.cf に関する参考書があまりないので、HP の "ARPA サービスのインス
トールと管理" というマニュアルを読んで自分なりに考えてみました。しかし、
〜にマッチするというような表現は割と簡単なのですが 〜にマッチしないという
ような表現がうまくできません。

いままで、WIDE 版 sendmail.cf の一般的な設定と mailconf しか使ったことはな
かったのですが、一応以下のような sendmail.cf を始めて自分で考えてみました。
この設定に何かまずいところはあるでしょうか。また、もっとうまい方法はありま
すか?

なお、sendmail は 8.5+2.0Wb2、sendmail.cf は 2.8Wb を使用しています。
--------------------------------------------------
# local domain name
Dmmydom.co.jp

# local host name with domain (default: returned by gethostbyname())
Dwgw.mydom.co.jp

# my internet aliases
Cwmydom gw.mydom mydomalias

# mail from address
DS$m

# uucp host
DAupdomgw
CAMYDOM

.......途中省略........

###############################################
###   Machine dependent part of Rule Zero   ###
###############################################

# alias resolution                                              XXXXXXXX
R$*<@JUNET>$*           $:$1<@JUNET.AD.JP>$2
R$*<@JUICE>$*           $:$1<@JUICE.AD.JP>$2
R$*<@$*.JUICE>$*        $:$1<@$2.JUICE.OR.JP>$3
R$*<@NIFTY>$*           $:$1<@NIFTYSERVE.OR.JP>$2
#
#R$*<@$*ALIAS_NAME>$*   $:$1<@$2REAL_NAME>$3

# domain that connects this host by uucp to gateway mapping     XXXXXXXX
#R$*<@$*DOMAIN_NAME>$*  $:<@GATEWAY.UUCP>:$1<@$2DOMAIN_NAME>$3
#R$*<@$*$=A>$*          $:<@$A.UUCP>:$1<@$2$3>$4
#R$*<@$*$=B>$*          $:<@$B.UUCP>:$1<@$2$3>$4
#R$*<@$*$=C>$*          $:<@$C.UUCP>:$1<@$2$3>$4
#R$*<@$*$=D>$*          $:<@$D.UUCP>:$1<@$2$3>$4

################################################
#  MYDOM  local mail                           #
# name@domain のような形式は、組織内部のメイル #
# として配送する                               #
################################################

R$*<@$->                $:$1<@$2.$m>

##############################
#  Relay to updomgw          #
##############################

R$*<@$*$m>$*            $:$1<@$2MYDOM>$3
R$*<@$*$‾A>$*           $:<@$A.UUCP>:$1<@$2$3>$4
R$*<@$*$=A>$*           $:$1<@$2$m>$4
--------------------------------------------------

ようするに $‾x のメタ記号が word 単位でしかマッチしないので、直接 mudom.co.jp
にマッチしないという表現はできません。そこで $m を一旦 MYDOM に置き換えてから
$‾x で書き換えて、その後で元に戻しています。

テストした限りでは期待通りの変換をしてくれますが、なにぶんにも Gateway の
設定なので、皆さんの御意見を伺ってみようと思います。

--------------------------------------------------------
内田　仁	スズキ株式会社	技術研究所　ＫＰグループ
(E-Mail:[email-masked])

---

From: [email-masked] (NAKAMURA Kouzi)
Date: 22 Nov 93 05:09:17 GMT

In the message of 22 Nov 93 00:50:52 GMT
(<[email-masked]>), Uchida Hitoshi
<[email-masked]> wrote:

uchida> ようするに $‾x のメタ記号が word 単位でしかマッチしないので、
uchida> 直接 mudom.co.jpにマッチしないという表現はできません。そこで 
uchida> $m を一旦 MYDOM に置き換えてから$‾x で書き換えて、その後で元に
uchida> 戻しています。

動けばそれでいいとおもいますが、置換えが気に入らないということでしたら、

逆に、$m にマッチするのを（ruleset 0 で）先に #tcp で送り出してしまっ
て（これだけで MX 配送になるはずですよね？）、必要なら #local もやって、
残りは何も考えずに全部 uucp という書き方でＯＫですよね、確か。

 -                                                中村公治
 -
 -                                     電気通信大学情報システム学研究科
 -                                            [email-masked]

---

From: [email-masked] (Masanobu UMEDA)
Date: Mon, 22 Nov 1993 09:15:18 GMT

In article <[email-masked]> [email-masked] (Uchida Hitoshi) writes:

これじゃだめですか?  orchid.dat は, mailconf 用のサンプルです.
mailconf は, "-DJUNET" なしをお忘れなく.
----------------------------------------------------------------------
: This is a shar archive.  Extract with sh, not csh.
: The rest of this file will extract:
: mx-patch.sh orchid.dat
echo x mx-patch.sh
sed 's/^X//' > mx-patch.sh << '*-*-END-of-mx-patch.sh-*-*'
X#! /bin/sh
X# Patch script for sendmail.mx
X# Copyright(C) Masanobu UMEDA ([email-masked])
X
X# 1.3 Fri Sep 27 15:42:49 JST 1991
X# 1.2 Fri Sep 27 10:32:20 JST 1991
X# 1.1 Wed Sep  4 20:41:45 JST 1991
X# 1.0 Mon Jan 28 17:11:51 JST 1991
X
X# This script modifies sendmail configuration file generated by
X# mailconf so that
X# (0) Add 'OI' (option I) to use name server safely.
X# (1) Use MX unless route is explicitly specified.
X# (2) Send to gateway (by default jp-gate.wide.ad.jp) if domain unknown.
X#     If gateway is ".", mail to unknown domain are sent using MX.
X# (3) No need to enumerate lower domain name explicitly if MX available
X# (4) Send *.bitnet to *.bitnetjp.ad.jp or *.dom.bitnetjp.ad.jp using MX
X#     under the following rule in mailconf dat file.
X#     For Internet site (Internet reachable):
X#	bitnetjp: smtp-n bitnet
X#     For Domestic site (Internet unreachable):
X#	dom-bitnetjp: smtp-n bitnet
X#
X# Basic ideas by [email-masked], refer to HOW-TO-MX.doc for details.
X# BITNET additions by [email-masked]
X
X# Usage: mx-patch.sh [FILE [GATEWAY]]
X
Xconfig=$1
Xgateway=$2
X
Xconfig=${config:=sendmail.cf}
Xgateway=${gateway:=jp-gate.wide.ad.jp}
X
X# If specified gateway is '.', mail to unknown domain are sent using
X# MX.  Otherwise, mail to unknown domain are sent to the gateway.
Xif [ X$gateway = X. ]; then
X	gateway='$2'
Xfi
X
Xed $config <<'EOF'
X/^###   Options/
Xa
XOI
X.
X/^### deliver/
X/^[^#]/
Xi
XR<@mx-look-up.smtp-n.mailer>:$*<@$+>$*	$#smtp-n $@$2 $:$1@$2$3
XR<@root.smtp-n.mailer>:$*<@$+>$*	$#smtp-n $@GATEWAY $:$1@$2$3
XR<@bitnetjp.smtp-n.mailer>:$*<@$+.bitnet>$*	$#smtp-n $@$2.bitnetjp.ad.jp $:$1@$2.bitnet$3
XR<@dom-bitnetjp.smtp-n.mailer>:$*<@$+.bitnet>$*	$#smtp-n $@$2.dom.bitnetjp.ad.jp $:$1@$2.bitnet$3
X.
X/^#begin#.*<f74rule.jr/
X/^R$¥*<@$¥*>$¥*[ 	]*$@<@mx-look-up.smtp-n.mailer>:$1<@$2>$3/d
X/^#end#.*<f74rule.jr/
Xi
XR$*<@$*>$*		$@<@root.smtp-n.mailer>:$1<@$2>$3
X.
X/^#begin#.*<f71rule.jr/
X/ERROR>/
Xi
XR$*<@$*$-.LOCALC>$*	$@<@mx-look-up.smtp-n.mailer>:$1<@$2$3.$N>$4
XR$*<@$*$-.LOCALB>$*	$@<@mx-look-up.smtp-n.mailer>:$1<@$2$3.$M>$4
XR$*<@$*$-.LOCALA>$*	$@<@mx-look-up.smtp-n.mailer>:$1<@$2$3.$L>$4
X.
Xw
Xq
XEOF
X
Xed $config <<EOF
Xg/GATEWAY/s//$gateway/
Xw
Xq
XEOF
*-*-END-of-mx-patch.sh-*-*
echo x orchid.dat
sed 's/^X//' > orchid.dat << '*-*-END-of-orchid.dat-*-*'
X# This is a description file for 'mse.kyutech.ac.jp'
X# Make sure that -DJUNET option does not appear in src/Makefile
X
X#
X# Control Information
X#
X$control: !casesensitive
X$control: defsysname	# we don't beliave $w value defined by sendmail
X#$control: !junet		# Junet -> Jp
X#$control: !fromjunet
X$control: onereceived
X$control: fromstyle2
X$control: !genericfrom	# no host name in From: field
X$control: sendme        # send me too
X$control: noyp		# We have YP system
X$control: !useyp	# we do not use YP map (mail.aliases)
X$control: !severe	# forward message toward unknown domain to parent
X$version: 91May16	# Local Version
X$os: SunOS4.0		# Our Operating System
X
X# name information
X
X#name:	ac.jp
X#option: pseudo, omit
X
X#name:	kyutech.ac.jp
X#lower_level_name:
X#	mse
X
X#name:	mse.kyutech.ac.jp
X#option: omit
X#lower_level_name:
X#	gray
X#	green
X#	yellow
X
Xname:	*.mse.kyutech.ac.jp
Xlower_level_name:
X	NONE
X
X# Route information
X
Xmx-look-up: smtp-n
X	mse.kyutech.ac.jp
X	kyutech.ac.jp
X	ac.jp jp
X
Xbitnetjp: smtp-n bitnet
*-*-END-of-orchid.dat-*-*
exit 0
--
Masanobu UMEDA
[email-masked]
Faculty of Computer Science and System Engineering
Kyushu Institute of Technology

---

From: [email-masked] (Motonori NAKAMURA)
Date: Mon, 22 Nov 1993 10:20:17 GMT

> 残りは何も考えずに全部 uucp という書き方でＯＫですよね、確か。

具体的に書いてみると 2.8Wb であれば、最後から2番目のルール

# resolve SMTP traffic
R$*<@$*>$*		$#tcp$@$2$:$1<@$2>$3		[email-masked]

を以下のように書き換えるわけですね。

R$*<@$*$m>$*		$#tcp$@$2$m$:$1<@$2$m>$3	[email-masked]
R$*<@$*>$*		$#uucp$@$A$:$1<@$2>$3		[email-masked]

CF-3.1W ならこんな感じに定義します。

# domain names to be deliverd directly (all/none/"domain names")
DIRECT_DELIVER_DOMAINS='$m'
# relay host for indirect delivery (in case of none or "domain names")
DEFAULT_RELAY='uucp:remote-gaetway-name'

ただ、何でもかんでも上流に投げてしまうようにしておくと、
例えば user@hostA というドメインを省略した形式で送った場合などに、
自組織側の GW が hostA を知らなかったりすると、UUCP で上流にたどり
着いてからエラーとなって戻ってきたりするので、嫌ですけど。

これを避けるには、@one-token のアドレスを落したり、現時点で存在する
top domain を列挙したクラスをつくってチェックしたりすることになります。

＃ ニュースを書いている場合じゃないので、ひとまずこれだけ ^^;

                                  中村 素典 ＠京都大学 工学部 情報工学教室
                                               [email-masked]

---

From: [email-masked] (Shin-ichiro Kasiwagi)
Date: Wed, 24 Nov 1993 08:30:49 GMT

柏木＠東工大です。

> 着いてからエラーとなって戻ってきたりするので、嫌ですけど。

REJECT_ONE=yes としておけばいいのではないでしょうか?

--
  ------------------------------------------
    柏木 伸一郎   [email-masked] 
      (東工大 情報科学科 ４年 柴山研究室)