戻る

3103:rule set 3

ルールセット 3 に ついて は ルールセット 0 1 2 に 入る前に 必要な ア ドレス を 取りだす ための 物のようです まず 通常は 以下の ような形で 得 る事が 出来ると云うことで その形を見ておきましょう

From: address (Full Name and other comments)
From: Full Name <address>

sendmail が必要と するのは 何方の 形式に於いても”address”のみ 取り扱う事になる

rule set 3 :part01

ほんじゃ まず 手始めに 前処理 の ルールセットに 取り掛かる事に すると

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 test10.cf での アドレスの試験

今までは ルールセット 零 でのテストでしたが 今回は ルールセット 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

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

では 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 作成

Copyright © 2004.-2007. nyantarou All Rights Reserved.