jhonn pochi tama の 形で watasi@koko 等で 無い場合
test15.cf (sendmail.cf として 試験用に作成したもの)にたいして プリフィックス $@ を 追記しましょう
$ cat test15.cf
V10/Berkeley
D{REMOTE}mailhost
D{HUB}nanigasi.fake
Mhub, P=[IPC], S=Hubset, 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@$+ $#error $: Missing user name
R$+ $#hub $@${REMOTE} $:$1
S3
R$* <> $* $n handle <> error address
R$* < $* < $* > $* > $* $2 < $3 > $4 de-nest brackets
R$* < $* > $* $2 basic RFC822 parsing
SHubset
R$- $@ $1@${HUB}
これで 最低限の 試験を行います
$ /usr/sbin/sendmail -Ctest15.cf -d21.12 -bt Mhub: Warning: first argument in [IPC] mailer must be TCP or FILE ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,Hubset pochi 3 input: pochi -----trying rule: $* < > $* ----- rule fails -----trying rule: $* < $* < $* > $* > $* ----- rule fails -----trying rule: $* < $* > $* ----- rule fails 3 returns: pochi Hubset input: pochi -----trying rule: $- -----rule matches: $@ $1 @ nanigasi . fake rewritten as: pochi @ nanigasi . fake Hubset returns: pochi @ nanigasi . fake > /quit
取り敢えず いけていると云うことに しておきましょう ここで 終わらずに 続けて tama@nanigasi を 試験すると 目的の ものは 得られなかった
3,Hubset tama@nanigasi 3 input: tama @ nanigasi -----trying rule: $* < > $* ----- rule fails -----trying rule: $* < $* < $* > $* > $* ----- rule fails -----trying rule: $* < $* > $* ----- rule fails 3 returns: tama @ nanigasi Hubset input: tama @ nanigasi -----trying rule: $- ----- rule fails Hubset returns: tama @ nanigasi > /quitここまでは 一応 出来ていました
jhonn pochi tama の 形 と watasi@koko 等も 扱えるようにする。少し補 足すると 現在 D{HUB}nanigasi.fake 計算機の名前 nanigasi ドメインfake と してますが (この表現は 正確とは言い難いが)もう少しありそうで なさそうな 名前に 変更しましょう つまり nyanco.kingdom.of.cat の ようなものに 変更します それは test16.cf の 様に なり ます。
$ cat test16.cf V10/Berkeley D{REMOTE}mailhost D{HUB}nyanco.kingdom.of.cat Mhub, P=[IPC], S=Hubset, 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@$+ $#error $: Missing user name R$+ $#hub $@${REMOTE} $:$1 S3 R$* <> $* $n handle <> error address R$* < $* < $* > $* > $* $2 < $3 > $4 de-nest brackets R$* < $* > $* $2 basic RFC822 parsing SHubset R$- $@ $1@${HUB}
試験結果の 抜粋
$ /usr/sbin/sendmail -Ctest16.cf -d21.12 -bt Mhub: Warning: first argument in [IPC] mailer must be TCP or FILE ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,Hubset tama ... rewritten as: tama @ nyanco . kingdom . of . cat Hubset returns: tama @ nyanco . kingdom . of . cat > 3,Hubset pochi@nyanco ... -----trying rule: $- ----- rule fails Hubset returns: pochi @ nyanco > /quit
さて pochi@nyanco を 処理する手だてを 考えましょう その前に オプション -d0.1 を 使用して 内部の ものを 確認しておきましょう
$ /usr/sbin/sendmail -Ctest16.cf -d0.1 -bt < /dev/null Version 8.12.11 Compiled with: DNSMAP LOG MATCHGECOS MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETUNIX NEWDB PIPELINING SCANF USERDB XDEBUG Mhub: Warning: first argument in [IPC] mailer must be TCP or FILE ============ SYSTEM IDENTITY (after readcf) ============ (short domain name) $w = nyanco (canonical domain name) $j = nyanco.kingdom.of.cat (subdomain name) $m = kingdom.of.cat (node name) $k = nyanco ======================================================== ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > /quit
pochi@nyanco を 処理するために $+ 持ってくる変わりに $w を 使用しようと いうことです。あるものは使えばいいのでしょうが どれだけ有るのでしょうか? わかりません おいおいです では その機能を 追加しましょう
R$- $@ $1@${HUB}
参考にして まず 1個 次に @ の文字 次に$w を 並べれば pochi@nyanco に 対 応出来ると 考えて また プリフィックス $@ も 同様に 追記すれば
R$-@$w $@ $1@${HUB}
を 追記します。さすれば
$ cat test17.cf V10/Berkeley D{REMOTE}mailhost D{HUB}nyanco.kingdom.of.cat Mhub, P=[IPC], S=Hubset, 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@$+ $#error $: Missing user name R$+ $#hub $@${REMOTE} $:$1 S3 R$* <> $* $n handle <> error address R$* < $* < $* > $* > $* $2 < $3 > $4 de-nest brackets R$* < $* > $* $2 basic RFC822 parsing SHubset R$- $@ $1@${HUB} R$-@$w $@ $1@${HUB}
ほたら 試験してみましょう
$ /usr/sbin/sendmail -Ctest17.cf -d21.12 -bt Mhub: Warning: first argument in [IPC] mailer must be TCP or FILE ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> /* Test of pochi Only User name */ > 3,Hubset pochi 3 input: pochi /* rule set 3 Begin */ -----trying rule: $* < > $* ----- rule fails -----trying rule: $* < $* < $* > $* > $* ----- rule fails -----trying rule: $* < $* > $* ----- rule fails 3 returns: pochi /* rule set 3 not apply */ Hubset input: pochi /* rule set Hubset Begin */ -----trying rule: $- /* cf R$- $@ $1@${HUB} */ -----rule matches: $@ $1 @ nyanco . kingdom . of . cat rewritten as: pochi @ nyanco . kingdom . of . cat Hubset returns: pochi @ nyanco . kingdom . of . cat /* End rule set Hubset & Return */ /* Do not apply Next rule effect of $@ So get worksoace value as upper */ /* Test of pochi@nyanco User@LOCAL (short domain name) */ > 3,Hubset pochi@nyanco 3 input: pochi @ nyanco /* rule set 3 Begin */ -----trying rule: $* < > $* ----- rule fails -----trying rule: $* < $* < $* > $* > $* ----- rule fails -----trying rule: $* < $* > $* ----- rule fails 3 returns: pochi @ nyanco /* rule set 3 not apply */ Hubset input: pochi @ nyanco /* rule set Hubset Begin */ -----trying rule: $- ----- rule fails /* Non matches cf R$- $@ $1@${HUB} */ -----trying rule: $- @ nyanco /* cf R$-@$w $@ $1@${HUB} */ -----rule matches: $@ $1 @ nyanco . kingdom . of . cat rewritten as: pochi @ nyanco . kingdom . of . cat Hubset returns: pochi @ nyanco . kingdom . of . cat /* End rule set Hubset & Return */ /* Do not apply Next rule effect of $@ So get worksoace value as upper */ /* In this case Next rule not Exist */ /* Test of pochi@nyanco.kingdom.of.cat User@FQDN (canonical domain name) */ > 3,Hubset pochi@nyanco.kingdom.of.cat 3 input: pochi @ nyanco . kingdom . of . cat /* rule set 3 Begin */ -----trying rule: $* < > $* ----- rule fails -----trying rule: $* < $* < $* > $* > $* ----- rule fails -----trying rule: $* < $* > $* ----- rule fails 3 returns: pochi @ nyanco . kingdom . of . cat /* rule set 3 not apply */ Hubset input: pochi @ nyanco . kingdom . of . cat /* rule set Hubset Begin */ -----trying rule: $- ----- rule fails -----trying rule: $- @ nyanco ----- rule fails Hubset returns: pochi @ nyanco . kingdom . of . cat /* rule set Hubset not apply */ > /quit
御覧の様に なる
この3様の 入力にたいしては ルールセット 3 については 適用される事は 無かった ルールセット Hubset については pochi の 場合 R$- $@ $1@${HUB} が適用されて $@ の 効果で 終わりになり その 結果 は Hubset returns: pochi @ nyanco . kingdom . of . cat pochi@nyanco の 場合 R$-@$w $@ $1@${HUB}が適用されて $@ の 効果で 終わりになり その 結果 は Hubset returns: pochi @ nyanco . kingdom . of . cat pochi@nyanco.kingdom.of.cat の 場合 は ルールセット Hubset の 適用するものは 無い Hubset returns: pochi @ nyanco . kingdom . of . cat
いずれの場合も 作業領域”workspace”の 最終の 中身の結果は 同じに なり ます。
nyanco . kingdom . of . cat のようなものは きっと 存在しないでしょう 自分自身の プライベート ネットワーク のみであれば 現在の 如く 作成は 可 能ですが
おおおおーーーーい !! ルール 1 は 未だか 四段目ですな!
にゃんたろう 拝!
2006年10月 6日 (金) 22:54:36 JST 作成