戻る

sendmail -bt -d 0003

syserr: ExitStat = 70

37.5 Reference in Numer

一例 として 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 

echo =Stest to echo =S0

関連がわかり難いので

$ 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.