ルールセット 0 に ついて sendmail.cf を テスト用に 運用したときは 唯 番号 零 を 適当な 最初の 番号である という 認識でしか 有りませんが どう も sendmail の システムとしては 意味付けが されているようです、これも ウ クライナ の 所から (なんで ウクライナ)
http://www.unix.org.ua/orelly/networking/sendmail/ch09_01.htm
The flow of addresses for rule set 0 : にゃんたろうは 訳することができない ので 適当に 考えて下さい
---> 0 ===> Delivery agent | INPUT ===> 3 --> 2 ---> R= --> | |==> OUTPUT ----> 1 ---> S= -->
アドレス が 入ってくれば 必ず ルール セット 3 を 通る ようです そうし て ルール セット 0 で アドレスの 3つ組をきめるということのようです。
なんか こんがらがって来そうなので とりあえず そうかな と云うことに し ておきます。ここで sendmail.cf としてテスト用の cf ファイルを 作成します 内容は
$ cat test08.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=10, R=20/40, A=mail -d $u
S0
R$+ $#hub $@${REMOTE} $:$1
”S0”以降が 今回の 胆です それ以前は 流 用しています。ここで少しシンボルの説明
$# メール配信エージェント $@ ホスト $: ユーザー (今回は繰り返しを行わない という意味ではない)
ますます こんがらがってきそうです 以前 $+ の所で $: は 繰り返しを 止める というもので 使用しましたが 今回は 別の 意味に なります、参考までに
S0
R$+ $: onlyonetime /* 繰り返しをおこなわない */
ひつこいようですが これらは 正解か どうか 不明 と いうより 間違っているような 感じです。
RHS の $# 変換オペレーター というもんは それに続くテキスト(空白無視、 次のオペレーターの直前まで、ただしこのオペレーターは 含まない)が使用す べき配信エージェントのシンボル名であることをsendmail 示すと云うことです どないすんねん?
まず 作業領域に $# が 入ります 次に
Mhub, P=[IPC], S=0, R=0, F=mDFMuXa, T=DNS/RFC822/SMTP, A=IPC $h
を 見てみましょう 分割文字
( ) < > , ; \r \n
. : % @ ! ^ / [ ] +
を 思い出して 見ると 以下の様に 区分されるのが わかるでしょう
Mhub, P=[IPC], S=0, R=0, F=mDFMuXa, T=DNS/RFC822/SMTP, A=IPC $h
つまり この場合は hub という物が 切り出されると云うことです。したがって 作業領域”workspace”は
$# hub
の様に 変化します まだまだ途中です
本当に 再度 このものは 正解か どうか 不明 というよ り 間違って いるのでしょう
http://www.unix.org.ua/orelly/networking/sendmail/ch09_02.htm
9.2.1 The Delivery Agent ($#)
The first part of the triple is the name of the delivery agent. The RHS $# transformation operator tells sendmail that the text following (up to but not including the next operator, ignoring spaces) is the symbolic name of the delivery agent to use.
The symbolic name hub was defined in the client.cf file as
# Delivery agent definition to forward mail to hub
Mhub, P=[IPC], S=0, R=0, F=mDFMuXa, T=DNS/RFC822/SMTP, A=IPC $h
When the RHS is copied into the workspace, any transformation operators such as $# are copied as is and become new tokens:
$# the workspace thus far
When text, such as hub, is copied into the workspace, it is tokenized by using the separation characters: [1]
[1] As a result, the symbolic name of the mail delivery agent cannot contain any separation characters.
.:@[] you can change these
()<>,;\"\r\n
you cannot change these
Since our symbolic name hub contains none of those characters, it is copied as a single token into the workspace:
$# hub the workspace thus far
単純に hub という文字列に 区切り文字 ないよ という風 に よめる ということ。対象としているのは ”Mhub”の ”hub”だけを 考えて いるようであるということ
つまり
Mhub, P=[IPC], S=0, R=0, F=mDFMuXa, T=DNS/RFC822/SMTP, A=IPC $h
とある中で
Mhub
だけを 対象に している なんで わざわざ 区切り文字 や 定義の 全てを もっ てくるのだろう? 簡単に ”Mhub”は シンボル hub である というように しな いのは 何故?
RHS の $@ 変換オペレーター というもんは それに続くテキスト(空白無視、 次のオペレーターの直前まで、ただしこのオペレーターは 含まない)がメール の送り先ホストのアドレスであることをsendmail 示すと云うことです どないすんねん?
D{REMOTE}mailhost /* に対して */ $@${REMOTE}
つまり symbolic name hub というから hub のみを 見てると云うこと
${REMOTE} D{REMOTE} --->mailhost /* D{REMOTE}mailhost : {REMOTE} は mailhost いいまんねん */ mailhost /* ほなら ${REMOTE} は mailhost に なります */ $@${REMOTE} /* トークンに わけるので */ $@ ${REMOTE} ==> $@ mailhost
という風に なるようです。ここまでで
$# hub $@ mailhost
の様に 作業領域”workspace”が 変化します まだまだ途中です
$: 同じように sendmail に ユーザー というものを 示す 様です、今回 $+ というものが LHS で 与えられていると いうことは この場合 全てコピーに な ります。 つまり 1個以上の トークンが 与えられたら それが ユーザー と云 うことになる ただ
$:$1
のように $1 という 尻尾がついています これは なんでっしゃろということ ですが
$+.$+
のようなものがあれば
$+ . $+ /* LHS に 複数有る場合 */ ^ ^ | | $1 $2
のように 割り当てる 今回は $+ が 1個 なので 断らなくても 良いようで すが これが ルール なのでしょう。
入力 として 以下のものが有るとする
sannkou@nisurumono /* トークンに わかれると */ sannkou @ nisurumono /* に なる */
sendmail.cf として 次の ものが あるとする
$ cat test08.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=10, R=20/40, A=mail -d $u S0 R$+ $#hub $@${REMOTE} $:$1
ルール 零番は
R$+ $#hub $@${REMOTE} $:$1
である 作業領域”workspace”を WKS として省略すると
sannkou@nisurumono ---> WKS WKS :: sannkou @ nisurumono <------ $#hub Mhub, P=[IPC], S=0, R=0, F=mDFMuXa, T=DNS/RFC822/SMTP, A=IPC $h IMG WKS :: $# hub /* CONTINUE */ <------ $@${REMOTE} D{REMOTE}mailhost IMG WKS :: $# hub $@ mailhost /* CONTINUE */ <------ $:$1 sannkou@nisurumono ==== $+ sannkou @ nisurumono ==== $1 /* this case */ IMG WKS :: $# hub $@ mailhost $: sannkou @ nisurumono FINE /* 最終的に */ WKS :: $# hub $@ mailhost $: sannkou @ nisurumono
ほたら 試験 してみまひょ
$ /usr/sbin/sendmail -Ctest08.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 sannkou@nisurumono 0 input: sannkou @ nisurumono 0 returns: $# hub $@ mailhost $: sannkou @ nisurumono > 0 @koremoikeruno 0 input: @ koremoikeruno 0 returns: $# hub $@ mailhost $: @ koremoikeruno > 0 nanndemoiinoka 0 input: nanndemoiinoka 0 returns: $# hub $@ mailhost $: nanndemoiinoka > 0 watasi@inoxtute.masu 0 input: watasi @ inoxtute . masu 0 returns: $# hub $@ mailhost $: watasi @ inoxtute . masu > /quit
これが 現状の test08.cf の ルールセット 零番の 応答と云うことです、当 然このままでは使えないようですが、取り敢えず
メール配信エージェントのシンボルの 名前 :: hub メールの送り先の ホストの名前 :: mailhost メールの宛先のユーザーの 名前 :: sannkou @ nisurumono
こういう 事なのでしょう
混沌として 良くは わからないのですが ”メールの送り先の ホストの名前 ”と ”メールの宛先のユーザーの 名前”はどのような 関係に なるのでしょう 素人の考えでは ”メールの送り先の ホストの名前”と ”メールの宛先のユー ザーの 名前 ”というのは ほとんど 同じに 感じてしまう ”メールの宛先のユー ザーの 名前”が きまれば ”メールの送り先の ホストの名前”は そこから 導 かれるように 感じるのだけれど 異なる 概念なのでしょう、素人の考えを 乱暴 にいえば
メールの宛先のユーザーの 名前 = ユーザーの 名前 + メールの送り先の ホストの名前
のように 考えているが そうでは 無いようです。いままでは メールの宛先 が
yu-za@me-ru-no-hosuto
であれば
メールの宛先のユーザーの 名前 :: yu-za (若しくは) yu-za@me-ru-no-hosuto メールの送り先の ホストの名前 :: me-ru-no-hosuto
のように 単純に 考えていましたが 色々な log (/var/log/messages) を 見 てみると
仮定として 当てはめて 良いのかどうかは おいといて メールの 送受信 の データーから 以下の ような パターンを 見る事が 出来ます。 メールの宛先のユーザーの 名前 メールの送り先の ホストの名前 に 相当するとすれば に 相当するとすれば これは 送受信の 相手の もの これは 送受信の relay= ... の 部分 aru-yu-za@iwayuru.tu-ka.au.nado lsean.iwayuru.tu-ka.au.nado. nmoPF23.iwayuru.tu-ka.au.nado imt2omta04.iwayuru.tu-ka.au.nado imt2omta01.iwayuru.tu-ka.au.nado imt2omta02.iwayuru.tu-ka.au.nado imt2omta03.iwayuru.tu-ka.au.nado imt2omta05.iwayuru.tu-ka.au.nado nmtkoALT01-06.iwayuru.tu-ka.au.nado nmtkoALT01-08.iwayuru.tu-ka.au.nado nmtkoALT01-01.iwayuru.tu-ka.au.nado
のような データーのパターンがえられる lsean.iwayuru.tu-ka.au.nado. は 送信の時の 相手と してであり その他は 受信 した時の 相手で 色々 異なっているようである。送 信する時も 受信する時も 同じ ユーザーの 名前 (aru-yu-za@iwayuru.tu-ka.au.nado) で 対応した時の log の 抜粋である。こういうことを 言おうとしているのであ ろうか? まだ 見極めは つかない。
にゃんたろう 拝!
2006年10月 3日 (火) 21:21:18 JST 作成