一例 として tub と space について 扱いに注意しないといけないようであ る。
最初この様な cf ファイルを作成してみよう これは 駄目なものである
$ cat 001_test.cf V10 Stest DAvalue1 R $A $A.new #間に tub を使用 R (tub) $A (tub) $A.new DAvalue2 R $A $A.new #間に tub を使用 R (tub) $A (tub) $A.new
この状態で 試験を してみよう
$ echo =Stest | /usr/sbin/sendmail -bt -d54.1 -C001_test.cf 001_test.cf: line 4: R line: null LHS syserr: ExitStat = 70 001_test.cf: line 6: R line: null LHS ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > R value1 R value2
あらー?
# cat syslog Sep 14 21:43:27 lx sendmail[657]: NOQUEUE: SYSERR(nyanta):\ 001_test.cf: line 4: R line: null LHS Sep 14 21:43:27 lx sendmail[657]: NOQUEUE: SYSERR(nyanta):\ 001_test.cf: line 6: R line: null LHS
なんでか?以下は抜粋 にゃんたろう の ような 素人にとっては 何の役にも 立たんのだが
http://www.unix.org.ua/orelly/networking/sendmail/ch37_05.htm http://www.unix.org.ua/orelly/networking/sendmail/ch37_05.htm
37.5.175 -d54.1
Show error return and output message
The exit values that are returned by sendmail are documented in Section 36.5. The -d54.1 debugging switch shows the exit value being set by the internal syserr() routine:
syserr: ExitStat = num
Here, num corresponds to the values defined in <sysexits.h>.
37.5.176 -d54.8
Show message and flags
The -d54.8 debugging switch causes the text of the error message to be printed along with the flags that control its actual output:
-- message (hold) (held)
If (hold) appears, it means that the message will be held (stored) and not output. If (held) appears, it means that the message was previously held and should not be added to the xf file. If neither is printed, the message will be logged and appended to the xf file. If the message on output fails, sendmail will attempt to log this panic message:
qid: SYSERR: putoutmsg (host): error on output channel sending "message": err
If the message was never queued, the qid will print as NOQUEUE. If you are not currently connected to a host, it will print as NO-HOST. The err is the error that caused the message to fail (as defined in either <sys/errno.h> or sysexits.h).
では修正しましょう
$ cp 001_test.cf 002_test.cf $ vi 002_test.cf $ cat 002_test.cf V10 Stest DAvalue1 R $A $A.new # R と $A の 間はスペース $A と $A.new の間は タブ(tub) DAvalue2 R $A $A.new
再度 試験しましょう
$ echo =Stest | /usr/sbin/sendmail -bt -d54.1 -C002_test.cf ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > Rvalue1 value1 . new Rvalue2 value2 . new
関連がわかり難いので
$ cp 002_test.cf 003_test.cf $ vi 003_test.cf $ cat 003_test.cf V10 S0 DAvalue1 R $A $A.new DAvalue2 R $A $A.new
今回は ”Stest”を ”S0”に 替えただけである
$ echo =Stest | /usr/sbin/sendmail -bt -d54.1 -C003_test.cf ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > Undefined ruleset test
ほたら
$ echo =S0 | /usr/sbin/sendmail -bt -d54.1 -C003_test.cf ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > Rvalue1 value1 . new Rvalue2 value2 . new
cf ファイルを ルールテストモードで 試験をする 場合 の方法として そ の方法として cf ファイルは この場合002_test.cfであり ルールテストモード の 方法は”- bt”オプションを 付けて その後 デバッグモード ”-d” オプションを 付けた 今回は ”-d54.1”とした 後 cf ファイル の 位置を-C002_test.cfとして 指定した
$ cat 002_test.cf V10 Stest DAvalue1 R $A $A.new DAvalue2 R $A $A.new $ echo =Stest | /usr/sbin/sendmail -bt -d54.1 -C002_test.cf ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Copyright © 2004.-2007. nyantarou All Rights Reserved.