簡単な メモ なんにも 触れてないが 色々 sendmail.cf の 替りに testxx.cf を作成してきたが それは
一番目は ルールセット 0 で 処理を します また 今まで 下記の 様な事を 作成して sendmail.cf の テスト版 と云うことで見てきました
sendmail が 配信する場合
sendmail | envelope -------> look for :: recipients address extract | | rule set 3 -----> stripping address | rule set 0 ----> decide mail delivery agent $# $@ $: ==>$#hub $@${REMOTE} $:$1 $# The mail delivery agent $@ The host $: The user
このような 処理を した後 発信者の アドレス処理を 始める
hub配信エージェント を 再度 見ておくと
Mhub, P=[IPC], S=0, R=0, F=mDFMuXa, T=DNS/RFC822/SMTP, A=IPC $h
ここで S=0に なっていました ”S=”という のは 発信者アドレスの配信エージェント特有の処理を実行するルールセットの 番号を 指定する事のようです(番号で無くても良いようですが簡単にいえば) つまり S=123 等 決めてやれば良いのですが 素人の にゃんたろうに とっては 何番に して良い 思い付きません というのは 使える番号を 理解していないのです 少なくとも 0,3 は 駄目ですし 色々 見 てると 0 〜 5 までは 駄目 また 6 〜 9 は将来の sendmail に 予約 してあるそうです
ただ この場合 sendmail さんに お任せの 方法が あるようなので それを 採用することにします。この場合は S=数字 ではなく $=文字列 で 表示すれば 良いとの事です。ほなら そういう風に してみまひょ
Mhub, P=[IPC], S=Hubset, R=0, F=mDFMuXa, T=DNS/RFC822/SMTP, A=IPC $h
S=0をS=Hubsetにしました
目的は 発信者の アドレスで 発信するのではなく全て Hub から発信された ように見せかける事です
では ルールセット Hubset を つくって いきます 宣言するのは S0 S3 等を 参考に すると SHubset で宣言する事になります (数字だけちゃうん? とかい うことは 却下です 駄目なときは 又考える というより 参考のにした 資料の通り)
ユーザーのみの 場合 つまり jhon pochi tama の 様な場合は jhon@nanigasi.fake とか pochi@nanigasi.fake や tama@nanigasi.fakeに 変換 する この場合は
jhon ----> (パターン) @ (nanigasi.fake 外部に 認識される メールハブ の アドレス)
この場合の パターンを 表現する物として $* とか $+ を 使っても 良いの だろうが そうすると jhon の 場合は 上手く行くだろうが jhon@nanigasi が 来た場合は ひょっとしたら jhon@nanigasi@nanigasi.fake に なったりすると 不味い そこで 新 しく LHS ワイルドカードオペレータ というものを 導入する事に なるようです
LHS ワイルドカードオペレータ
演算子 説明
$+ 1個以上のトークンにマッチ
$* 0個以上のトークンにマッチ
$- 1個のトークンにマッチ
今回は $-を 使用します さすれば LHS は 以下の 様になると良いでしょう
R$-
RHS として 位置は 最初の 1個 であるから $1 とすれば 良いでしょう そ うして @がきて 外部に 認識される メー ルハブ の アドレス がくれば 良いので
R$- $1@(外部に 認識される メールハブ の アドレス)
”外部に 認識される メールハブ の アドレス”について テスト用 cf に
... D{REMOTE}mailhost ... R$+ $#hub $@${REMOTE} $:$1 ...
の 場所が 有った事を 再度 見てみると 今回 D{HUB}nanigasi.fake なんか で 定義 する部分が 必要となるでしょう そうしておいて ${REMOTE} とに 対し て ${HUB}を 引用するとすれば
R$- $1@(外部に 認識される メールハブ の アドレス) ********************************* D{HUB}nanigasi.fake /* まず 決めて */ .... R$- $1@${HUB} /* ${HUB}で引用 */ .....
ちゃんちゃん! あとは 試験するだけ といっても まだ作成していない
このようなものを 作成
$ 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}
ほたら pochi は どうなるか 最初 ルール 3 から始めて 次にHubset コンマ で 区切り コンマの左右には スペース 等を いれないで pochi ですよ まあ やっ た方が 早いや!
$ /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 -----trying rule: $- ----- rule fails Hubset returns: pochi @ nanigasi . fake > /quit
結果は 予想外です 無限ループに 陥るはずなんですが?
$ /usr/sbin/sendmail -Ctest15.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> > 3,Hubset jhon 3 input: jhon 3 returns: jhon Hubset input: jhon Hubset returns: jhon @ nanigasi . fake > /quit
全部では 無いが @ と 他の物が ついている場合は どうなるか?
$ /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 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
轟沈です まだ 何か足りないようです
無限ループの問題 表にでていないように 感じる D{REMOTE}mailhost と D{HUB}nanigasi.fake の 再度 確認 (吟味)をする必要が ある 今日はここま で
にゃんたろう 拝!
2006年10月 5日 (木) 22:48:16 JST 作成