ルールセットの目的
ルールセット 目的 0 メール配信エージェントを決定する 1 発信者のアドレスを処理する 2 受信者のアドレスを処理する 3 全てのアドレスの前処理を行う 4 全てのアドレスの後処理を行う 5 エイリアスされていないローカルユーザに関する書き換えを行う 6~9 reserved for futute sendmail Max 99
現時点で 理解している事は 何を使用して 送信するための アドレスを 明確 にする事が 必要という事の様である。 なんで そんなことが 必要であるかは良く理解は 出来ない 郵便を出すには 相手先の住所と 氏名を 書いてあれば ほとんど (差出人を 書き忘れても)届くと思うが (切手を針忘れると 問題だが) sendmail というものは 愛想の無い奴で 色々 書式を決めないと 送ってくれない 融通のきかない 物のようです。
ついでに ルールを 見る方法を 思い出しておこう 動作モード を”b”に 続 く”t”テストをする 合わせて テストモード ということで 確認する。この場 合は 実際の sendmail.cf の 物を 見ると云うことです。
$ /usr/sbin/sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > /* この状態で 零番 を 見るには = : イコール と S : エス と 0 : 零を入力 */ > =S0 R$* $: $> Parse0 $1 R< @ > $# local $: < @ > R$* $: $> ParseLocal $1 R$* $: $> Parse1 $1 > /quit
で ルール 零番を 見る事が出来る 止める場合は ” /quit”で やめる、(ルー ルセット 零番)これの意味は 理解はしていないのであるが、見るだけです。そ のうち わかるようになるかも しれません。
といっても 何の事やら というので 実際に やってみる まずルールを記入す る、以前の物に 追記すると
$ cat test03.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
Rleft.side new.stuff
大事な点は ”Rleft.side”と”new.stuff”の間は タブでなけれな いけないと 言う事である 空 白というか スペースを 並べた物は 駄目と云うことです。ほたら 見てみましょ う
$ /usr/sbin/sendmail -Ctest03.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> > =S0 Rleft . side new . stuff > /quit
表示がされた物は 何か空白が 補われているようですが まあそれはさておき 動作試験を してみましょう。
有るメールアドレスを 入力する場合、次に 決めた ”left.side”を 入力す る場合は
$ /usr/sbin/sendmail -Ctest03.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 dokoka@yosono.sa-ba /* 適当な メールアドレスを 入力 */ 0 input: dokoka @ yosono . sa-ba /* パターンに合わないので */ 0 returns: dokoka @ yosono . sa-ba /* 何にもせんのじゃ */ > 0 left.side 0 input: left . side /* パターンに 合ってるので */ 0 returns: new . stuff /* 置き換えさせて頂きます */ > /quit
これから わかる事は 有るルール に 従ってその条件に合致すれば そのルール を実行すると云うことの 様です。この場合は
S0 /* ルール 零番の 開始をしますと云うこと */ Rleft.side new.stuff /* この場合の ルールは */ /* R : 有る条件に 合えば 書き換える */ /* その ルールというのは 有る 文字数字の並び */ /* 例えば この場合は left.side であれば new.stuffに つまり */ /* left.side このパターンであれば new.stuff に 置き換える */
という理由で 今回作成した 零番の ルールは パターン ”left.side”の 場 合は 置き換えるが パターンに 合わなければ なんも しないと 言うルールである。
http://ja.wikipedia.org/wiki/%E5%AD%97%E5%8F%A5
なにか 文字数字 の 並びが有る場合 どこで 区切るかは ものにより 色々有 るかもしれないが ニハニハニハニハトリガイマス は 何処で区切るかにより 意 味が 異なる場合が ある。sendmail さんも 文字列を 取り扱う場合 何らかの規 則で もって 分解 するようです 上記の例で
S0 Rleft.side new.stuff /* 上記のようなもので追記したが */ > =S0 Rleft . side new . stuff ^ ^ ^ ^ | | | | /* sp sp sp sp sp は 空白らしきもの */ /* 何か 空白の ようなものが 間に 有るように 表現される */
これは sendmail が ”Rleft.side new.stuff”を トークン に 別けた のであろうと 考えられる 正解か どうかは別であるが この様なものであろうと 考える事にしよう。
sendmail さんが 作業を する場所が 有るようです それは 有る バッファ workspace と 言う所で 行い 入力されたものを そこ(workspace)で トー クン という物に 分解して 置いておくようです その場合 input : 某 returns :こ れだ の様に 表示 されるようです、部分を再掲すると
0 input: dokoka @ yosono . sa-ba 0 returns: dokoka @ yosono . sa-ba ======================== 0 input: left . side 0 returns: new . stuff
物の本に依ると 以下の様な 表現に なっているが にゃんたろう の システム では 上記の ような 表示に なる。にゃんたろう の システム は 正常で無いの かも しれない。
rewrite: ruleset 0 input : dokoka @ yosono . sa-ba rewrite: ruleset 0 returns : dokoka @ yosono . sa-ba
”case sensitive”と ”case insensitive” sendmail さんは どちらなのでしょうか?
$ /usr/sbin/sendmail -Ctest03.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 LEFT.SIDE 0 input: LEFT . SIDE 0 returns: new . stuff > /quit
”case insensitive” の ようです どっちゃでもこい !
にゃんたろう 拝!
2006年10月 1日 (日) 22:52:17 JST 作成