ルールセット 3 に ついて は ルールセット 0 1 2 に 入る前に 必要な ア ドレス を 取りだす ための 物のようです まず 通常は 以下の ような形で 得 る事が 出来ると云うことで その形を見ておきましょう
From: address (Full Name and other comments) From: Full Name <address>
sendmail が必要と するのは 何方の 形式に於いても”address”のみ 取り扱う事になる
ほんじゃ まず 手始めに 前処理 の ルールセットに 取り掛かる事に すると
nannrakanomono < hituyounamono > toriaezuhuyounamono
のようなものを取り扱う事に なります つまり いかのようなもの
$xx < $yy > $zzz $need
”$xx”、”$yy”、”$zzz” とに 何を 使えば 良いかといえば ”$+”しか 無いんじゃないの と云うことですが これは 1個以上の トークン に 合致 す る物でした ”<”の前に ”Full Name”がくるのであれば それで いいこと になります 即ち ルール R に 続けて
R$+<$+>$+ $2
忘れずに ルールセット 3 の 宣言も 必要です でそうすると
S3 R$+<$+>$+ $2
新しく sendmail.cf として 試験する test10.cf を 作成すると
$ cat test10.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@$+ $#error $: Missing user name
R$+ $#hub $@${REMOTE} $:$1
S3
R$+<$+>$+ $2
今までは ルールセット 零 でのテストでしたが 今回は ルールセット 3 の テストですので 入力 方法を 最初に 3 をいれます。
$ /usr/sbin/sendmail -Ctest10.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 Here comes the sun < korewo nukidasuno > She may be! 3 input: Here comes the sun < korewo nukidasuno > She may be! 3 returns: korewo nukidasuno > 3 < Kore OK? > nano 3 input: < Kore OK? > nano 3 returns: < Kore OK? > nano > 3 kore mo <Dame nano> 3 input: kore mo < Dame nano > 3 returns: kore mo < Dame nano > > 3 Jar <koreha IInoda> desyou 3 input: Jar < koreha IInoda > desyou 3 returns: koreha IInoda > /quit
結果は 思いどうりには いっていないと いう事のようです、当然なのでしょ うが 素人の にゃんたろうには 見抜けません
じゃ 零個 以上の 表現を 出来るものを 導入せねば というわけで ”$*”が 用意されていることの ようです。 test10.cf を やりなおしましょう
test11.cf は このように しました 又見やすいように (ほんとうか?)LHS の 部分に スペース を いれました
$ cat test11.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@$+ $#error $: Missing user name
R$+ $#hub $@${REMOTE} $:$1
S3
R$* < $* > $* $2
再度 試験してみましょう
$ /usr/sbin/sendmail -Ctest11.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 Here comes the sun < korewo nukidasuno > She may be! 3 input: Here comes the sun < korewo nukidasuno > She may be! 3 returns: korewo nukidasuno > 3 < Kore OK? > nano 3 input: < Kore OK? > nano 3 returns: Kore OK? > 3 kore mo <Dame nano> 3 input: kore mo < Dame nano > 3 returns: Dame nano > 3 Jar <koreha IInoda> desyou 3 input: Jar < koreha IInoda > desyou 3 returns: koreha IInoda > /quit
うまいこといったので それで ええやん!
<>の ようなものは どうなるんでしょう
$ /usr/sbin/sendmail -Ctest11.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 koreha <> umakuikino 3 input: koreha < > umakuikino 3 returns: > /quit
別に その通りですので なにか 不味いの 無い物は無い それで いいのでは? と 考えていますが sendmail は なーんも ない ものを 取り扱うようです いっ たりきたり 防止用
http://www.unix.org.ua/orelly/networking/sendmail/ch10_03.htm
"nothing" can be a legal address. The expression <> is a legal sender address that is used when sending bounced mail to prevent further bouncing.
これを 取り扱うために 別に 決めておく 必要が あるようです、マクロの部 分再掲 をしておきます
定義済み マクロには こんなものが あるようです
u : 受信者のユーザー名
h : 受信者のホスト名
n : エラーメッセージの発信者の名前
...
です これを 使用して つまり マクロ ですので ”$n”として 引用すると
R$* <> $* $n machigaino-adoresuwo-atukau
なんぞで 取り扱うようにし また その ルールは 現在設定の 前に 挿入しま す
では test12.cf にて対応させた内容を 確認しませう
$ cat test12.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@$+ $#error $: Missing user name R$+ $#hub $@${REMOTE} $:$1 S3 R$* <> $* $n handle <> error address R$* < $* > $* $2 basic RFC822 parsing
では 試験してみましょう、こんどはルールセット 3 と 0 にて 試験を 行い ますが 注意事項として 3,0 として 3sp,sp0 (sp は スペース などの略)のよ うに コンマ”,”の両側に 空白を いれ ないようにして 処理下さい では
$ /usr/sbin/sendmail -Ctest12.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,0 full name < otegami@koko.com > desu 3 input: full name < otegami @ koko . com > desu 3 returns: otegami @ koko . com 0 input: otegami @ koko . com 0 returns: $# hub $@ mailhost $: otegami @ koko . com > 3,0 <> 3 input: < > 3 returns: MAILER-DAEMON 0 input: MAILER-DAEMON 0 returns: $# hub $@ mailhost $: MAILER-DAEMON
これで おしまいに して良いのだろうか どうも <<nani>> の 形にたいして は 問題が有るようです 上記に続いて
> 3 <<nest>> 3 input: < < nest > > 3 returns: < nest
対策が必要です。
にゃんたろう 拝!
2006年10月 5日 (木) 21:06:43 JST 作成