戻る

3106:$@ & $: and ${HUB} & ${REMOTE}

無限ループ

$@

test15.cf (sendmail.cf として 試験ように作成したもの)に

SHubset
R$-     $1@${HUB}

という形の ものが ありました 参考にしている ウクライナのものには

http://www.unix.org.ua/orelly/networking/sendmail/ch11_04.htm
SHubset # Rewrite the sender for the hub
R$-                          $@ $1@${HUB}   user -> user@hub     new
$@return immediately (new)
When $@ begins (prefixes) the RHS of any rule, it tells sendmail to return (exit the current rule set) immediately after it has rewritten the workspace. If the $@ prefix did not appear at the start of the RHS, sendmail would rewrite the workspace and then evaluate the LHS again. The $@ also prevents the workspace from being carried down to any additional rules in the current rule set. An immediate return from this rule is desirable because additional rules might corrupt the now correct workspace.

これに 依ると $@ が 無いと 駄目で すよ ということが 書いてあるようです 素人の にゃんたろうは 見えるけれど 読めません が そういうことのようです。 従って test15.cf (sendmail.cf として 試験ように作成したもの)にも追記する必要があります、 多摩たま 動く場合の 条件も有るのでしょうが 、何方にしても そのままでは 他の パターン 単独の ユーザー (johon pochi tama 等)は処理できても その 他の ものは 対応出来なかったので

補足

以前に 別の所で 無限ループ 対策として

S0
R$+     morethanone

に対して Infinite loop in ruleset 0, rule 1
一度だけ書き換えを行う プリフィクス $: "
を 導入した事が 有りました

S0
R$+     $: onlyonetime

その場合は $: を RHS の 前におく ことにより 対策を取った事が 有ります 今回はこれに 相当するものとして $@を 導入する事に なります。ここで 良くみておかねばいけんのは

S0
R@$+        $#error $: Missing user name
R$+         $#hub $@${REMOTE} $:$1
         ***************
R$+      $: onlyonetime
         ***************
R$-      $@ $1@${HUB} 

同じ記号をつかっているのだが 場所に依って 意味が 異なるということです プリフィクスとして 使用する場合 その他の所で使用する場合 それぞれ 意味 が異なるということが素人には 混乱の 元になっているのです

$@ は書き換え後にリターンするプリ フィクス ということです

相違

ほなら なんで 2種類あるん? 違いは 有るんでは ないかいな?

$:   次のルールに進む 処理は 1回

$@   次のルールは進まない 処理は 1回 これで 終わりです

ルールを順番に 進めていくが この処理は 1回であとに 続くルールを処理 していく場合 は $: を 使用し この ルールは ここで 終わり次の ルー ルに いく必要は 無い場合は $@ を 使う 又 RHS の 前に置いて 使用し ないと その意味は 別の 意味になる。参考ウクライナ

http://www.unix.org.ua/orelly/networking/sendmail/ch28_06.htm#SML2-CH-28-SECT-6-2

悪魔で雰囲気 として SRULE というものが あれば

SRULE
RPatern1      $:  $OKIKAE1  /* この LHS に 一致する場合 処理は1回のみ 次のルール に 進む  */
Rpatern2          $OKIKAE2
Rpatern3          $OKIKAE3
Rpatern4          $OKIKAE4
Rpatern5      $@  $OKIKAE5  /* この LHS に 一致する場合 処理は1回のみ  */
Rpatern6          $OKIKAE6  /* そうして  SRULE というのは 終わりにして  */
                            /*  他の ルールセットがあれば そこに進む    */

と 理解しておきましょう

D{REMOTE} & D{HUB}

これに 関して 注意が必要です 現在あまり 十分に理解できてはいないので すが それぞれ ${REMOTE} ${HUB} の 様に 引用をしています、記号が異なれば 当然意味は 異なるという当り前の 事は別にして 具体的に 何を表しているんで しょう と云うことです。(sendmail)が どのように 取り扱うのか?現在の所は

D{REMOTE} ${REMOTE} ネットワーク内部で認識されるハブマシンの 名前
D{HUB}    ${HUB}    外部から認識される名前  
単純な場合は 同じ機器の 場合もあるし ${REMOTE} も ${HUB}も 同じ名前の 場
合も有ると云うこと
D{REMOTE} はシンボルであるので 機器の変更は可能
D{HUB} の 場合は DNS での 名前 世界で1個 

user1 ... user2 ... 
 \        /
D{HUB} ${HUB}              symbol in the localnet
   ||
D{REMOTE} ${REMOTE} DNS     only.one.in.the.world
     |                       333.555.999.888 
     |
 OUERT Internet

現状の理解度はこの程度ですが !

戻る

にゃんたろう 拝!
2006年10月 6日 (金) 22:24:39 JST 作成

Copyright © 2004.-2007. nyantarou All Rights Reserved.