ルールを検査する方法で パターン が 決まって しまってると 使い難くなり
ます
doredore@soredemo.kondo.kuru
areha@sonnnani.tooi.node
jar@asuha.amede.shou
の 様な 物を 対象に する場合 全てに 対応 させる事は 出来ない事は
無いでしょう
Rdoredore@soredemo.kondo.kuru u
Rareha@sonnnani.tooi.node v
Rjar@asuha.amede.shou w
....
の様にすれば 良いのであって 全世界の 物を 書き込んで 行けば いいわけです
から、実用とは 思いませんが、ほたら なんらかの 代替手段で もって それを
表す ように せなば なんねい と云うことになります。そこで ”$+”を 使用す
る事に なります ”$+”は なんでしょうか ? 1個以上の トークンに マッチ
する といわれています、ほたら それは どういうこと 役目を 果たすのでしょ
うか ? わからなければ試行錯誤するより手はありません。このような
sendmail.cf に 対応するものを 作成してみます
$ cat test06.cf V10/Berkeley D{REMOTE}mailhost Mhub, P=[IPC],S=0,R=0, F=mDFMuXa, T=DNS/RFC822/SMTP ,A=IPC $h Mlocal, P=/bin/mail, F=lsDFMAw5:/@rmn, S=0, R=0, A=mail -d $u S0 R$+ morethanone
とにかく試験してみましょう
$ /usr/sbin/sendmail -Ctest06.cf -bt Mhub: Warning: first argument in [IPC] mailer must be TCP or FILE ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 0 omaehaahoka 0 input: omaehaahoka Infinite loop in ruleset 0, rule 1 0 returns: morethanone > 0 uso@dekatameta 0 input: uso @ dekatameta Infinite loop in ruleset 0, rule 1 0 returns: morethanone > /quit
このような ルール設定は 間違って いるようです ”Infinite loop in ruleset 0, rule 1”て 文句を 言 われます が 内容は 置き換わって いるようです。ある意味 当然です 要するに 1個以上のトークンが存在すれば 置き換えるのですから、但し、まともでないので syslog に
# cat syslog Oct 2 11:09:10 tama sendmail[355]: k9228rW6000355: SYSERR(nyanco): Infinite loop in ruleset 0, rule 1
いけません という log が 書き込まれます、では 取り敢えず いけませんと いわれないように しましょう
この記号 ”$:”というのは 意味が 一つに 限定される理由では 有りません 今回は 1回 仕事をしたら それで もう 止める という 機能を もたせた 使用 方法です
$ cat test06.cf
V10/Berkeley
D{REMOTE}mailhost
Mhub, P=[IPC],S=0,R=0, F=mDFMuXa, T=DNS/RFC822/SMTP ,A=IPC $h
Mlocal, P=/bin/mail, F=lsDFMAw5:/@rmn, S=0, R=0, A=mail -d $u
S0
R$+ $: onlyonetime
こんどは どうなるでしょう
$ /usr/sbin/sendmail -Ctest06.cf -bt Mhub: Warning: first argument in [IPC] mailer must be TCP or FILE ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 0 omaehaahoka 0 input: omaehaahoka 0 returns: onlyonetime > 0 uso@dekatameta 0 input: uso @ dekatameta 0 returns: onlyonetime > /quit
おしかりを 受けなくなった ということは 言えます。 再度 強調 しておきますが 記号 ”$:” というのは 上記の様な 場所 で 使用した場合 1回で 止めとう という 機能 を 発揮すると云うことです。RHS の 冒頭に ”$:”を 使用した場合に "一度だけ書き換えを行う プリフィクス $: " ということです。
S0 R$+ $: onlyonetime ^ ^ ^ | | | LHS v RHS PreFix : 一度だけ書き換えを行う プリフィクス
今回の場合 作業領域 ”workspace”には 最初1個以上の トークン があれ ば ”morethanone”に 書き換わります そこで これ以上は 書き換えても 同じ 物を 書き換える 作業を 律義に 続けるのが お仕事だと 考えて 何時までも 続けようとします。この時 誰かが ”あかんで”というので エラーで 停止さ せた様です そのときの 作業領域”workspace”の 値が ”morethanone”であっ た と云うことのようです。次に "一度だけ書き換 えを行う プリフィクス$: " を 導入して 無間地獄から 開放した と云うことになりました、さて 目的の ”@” と ”$+”は どうなるのでしょうか?
にゃんたろう 拝!
2006年10月 2日 (月) 21:18:13 JST 作成