戻る

0005 check_rcpt の 試行

現状は理解しているわけでは おへん 試行錯誤してみよう

check_rcpt の 試行 もう一つ

reject=550 5.7.1

このような sendmail に関する log が 残ってると します 適当に改行をし てるが 雰囲気は 理解できるでしょう。

Sep 13 13:53:40 servertest sendmail[5820]:\
 j8D4rdtZ005820: ruleset=check_rcpt, arg1=<popogigi1975@yahoo.com.tw>, \
relay=[219.133.247.112], reject=550 5.7.1 <popogigi1975@yahoo.com.tw>\
... Relaying denied. IP name lookup failed [219.133.247.112]
Sep 13 13:54:31 servertest sendmail[5820]: j8D4rdtZ005820: \
lost input channel from [219.133.247.112] to MTA after rcpt
Sep 13 13:54:31 servertest sendmail[5820]: j8D4rdtZ005820: \
from=<dgsergser@aol.com>, size=0, class=0, nrcpts=0, proto=SMTP, \
daemon=MTA, relay=[219.133.247.112]

さて 以下のように 仮定してみましょう
arg1=<popogigi1975@yahoo.com.tw>これが 検査の対象と なると云うことです
relay=[219.133.247.112] これが 要求してきた サーバーの IP アドレスと云うことです。
from=<dgsergser@aol.com> これが 送信者メールのアドレスと云うことです。

popogigi1975@yahoo.com.tw  :: dig yahoo.com.tw の 結果は 202.43.195.13
219.133.247.112            :: dig -x 219.133.247.112 の 結果は 
                                        中国の IP アドレスの ようです

dgsergser@aol.com          :: dig aol.com の 結果は 205.188.142.182
                                                     64.12.50.151

此の仮定から 考えられる事は popogigi1975@yahoo.com.tw は この IP アド レス [219.133.247.112 ] では 無いと 考えられます 又 発信者 も dgsergser@aol.com は まったく 別の IPアドレス 2個有りますが そこから 発 信 (送信)してきています というような 感じです

試験

実は試験方法も 良く理解できていないのですが 取り敢えず 試行錯誤してみ ましょう。 まず現在 動いている sendmail を 停止 してから

$ su -
Password: 
# ps ax | grep sendmail | grep -v grep
   86 ?        S      0:00 sendmail: accepting connections
# kill 86
# ps ax | grep sendmail | grep -v grep

アドレステストモードで 動かします

# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
/* まず アドレステストモードにて 立ち上げてみます                      */
/*  試験方法 これが 正解か どうかはさておき 以下の 仮定の試験をします  */
/*  使用する エリアの 確認をしておきます                               */
> ${client_name}
Undefined
> ${client_addr}
Undefined    /*    ここで 使用する ものを 決めてやります               */
> .D{client_addr}219.133.247.112          /* 発信者のIPアドレス        */
> check_rcpt popogigi1975@yahoo.com.tw    /* 発信者のメールアドレス    */
/* これは 送信してきたという 意味では 有りません                       */
/*  popogigi1975@yahoo.com.tw が 219.133.247.112  の ものとして        */
/*  仮定してるのであり 本当の所は 偽物と 考えられます                  */
...    /*  途中省略して                */
Relay_ok         returns: popogigi1975 @ yahoo . com . tw
Basic_check_rcpt returns: $# error $@ 5 . 7 . 1 $: "550 Relaying denied"
check_rcpt       returns: $# error $@ 5 . 7 . 1 $: "550 Relaying denied"
 /*  結果云々は   "550 Relaying denied" です 試験方法自体 良いのか悪いのか わからないが  */
.../* さて これも 良いのか悪いのかわからないが まず アドレステスト モード を 再起動します */
> /quit
# /usr/sbin/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Undefined            /*  何にも無いよ      */
> ${client_addr}
Undefined            /*  何にも無いよ      */
> .D{client_name}yahoo.com.tw
> ${client_name}     /*  確認しておきます  */
yahoo.com.tw
> check_rcpt popogigi1975@yahoo.com.tw
Relay_ok         returns: RELAY
Basic_check_rcpt returns: RELAY
check_rcpt       returns: RELAY
 /*  これは よいのですか? それでは   */
> ${client_addr}
Undefined
> ${client_name}
yahoo.com.tw
> .D{client_addr}219.133.247.112  /* {client_addr}を 決めてやります */
> ${client_addr}
219.133.247.112
> ${client_name}
yahoo.com.tw
/* これは 当然 おかしな組合せに なっているはずです  ここで 次の試験をします */
> check_rcpt popogigi1975@yahoo.com.tw
...
Relay_ok         returns: yahoo . com . tw
Basic_check_rcpt returns: $# error $@ 5 . 7 . 1 $: "550 Relaying denied"
check_rcpt       returns: $# error $@ 5 . 7 . 1 $: "550 Relaying denied"
/* 結果は  "550 Relaying denied" ですが これは 試験方法 も 含めて 良いのでしょうか?  */
/* 最後に これをやっておきましょう 送信者メールのアドレスを 決めてみます */
> ${client_addr}
219.133.247.112
> ${client_name}
yahoo.com.tw
/* 此処までは変化しません そのままの状態です                     */
>  .Dfdgsergser@aol.com   /*  送信者メールのアドレスを 決める    */
> $f
dgsergser@aol.com         /*   確認                              */
/*  さて 受信者を 決めねばいけんのかも しれません が             */
/* わからないので 送信者受信者 同じで まず 試験を してみましょう */
> check_rcpt dgsergser@aol.com
...
Relay_ok         returns: yahoo . com . tw
Basic_check_rcpt returns: $# error $@ 5 . 7 . 1 $: "550 Relaying denied"
check_rcpt       returns: $# error $@ 5 . 7 . 1 $: "550 Relaying denied"
/* 結果は       "550 Relaying denied"  と云うことです                */
/*  もう一つ メールアドレスが 有りました popogigi1975@yahoo.com.tw   */
/* これで 試験をしてみましょう                                       */
> ${client_addr}   /*   発信者のIPアドレス          */
219.133.247.112
> ${client_name}   /*     発信者のFQDN              */
yahoo.com.tw
> $f               /* 発信者のメールアドレス        */
dgsergser@aol.com
> check_rcpt popogigi1975@yahoo.com.tw
...
Relay_ok         returns: yahoo . com . tw
Basic_check_rcpt returns: $# error $@ 5 . 7 . 1 $: "550 Relaying denied"
check_rcpt       returns: $# error $@ 5 . 7 . 1 $: "550 Relaying denied"
 /*  結果云々は   "550 Relaying denied" です 試験方法自体 吟味必要ですが  */

注意 試験方法自体 意味が有るのかどうか 含めて 吟味する必要が有ります これは 悪魔で 試行錯誤の結果にしかすぎません

Show rule

ルールを 見る方法として 以下の様な方法が 有るようです

> =Scheck_rcpt
R$*             $: $1 $| $> Local_check_rcpt $1 
R$* $| $# $*            $# $2 
R$* $| $*               $@ $> Basic_check_rcpt $1 

> =SBasic_check_rcpt
R< >            $# error $@ nouser $: "553 User address required" 
R$@             $# error $@ nouser $: "553 User address required" 
R$*             $: < $&{deliveryMode} > $1 
R< d > $*               $@ deferred 
R< $* > $*              $: $2 
R$*             $: $1 $| @ $> Rcpt_ok $1 
R$* $| @ $# TEMP $+             $: $1 $| T $2 
R$* $| @ $# $*          $# $2 
R$* $| @ RELAY          $@ RELAY 
R$* $| @ $*             $: O $| $> Relay_ok $1 
R$* $| T $+             $: T $2 $| $> "Relay_ok" $1 
R$* $| $# TEMP $+               $# error $2 
R$* $| $# $*            $# $2 
R$* $| RELAY            $@ RELAY 
RT $+ $| $*             $# error $1 
R$*             $# error $@ 5 . 7 . 1 $: "550 Relaying denied" 

> =SRelay_ok
R$*             $: $&{client_addr} 
R$@             $@ RELAY 
R0              $@ RELAY 
R127 . 0 . 0 . 1                $@ RELAY 
RIPv6 : : : 1           $@ RELAY 
R$=R $*                 $@ RELAY 
R$*             $: $> A < $1 > < ? > < + Connect > < $1 > 
R< RELAY > $*           $@ RELAY 
R< < TMPF > > $*                $# TEMP $@ 4 . 3 . 0 $: "451 Temporary system failure. Please try again later." 
R< $* > < $* >          $: $2 
R$*             $: [ $1 ] 
R$=w            $@ RELAY 
R$*             $: < $&{client_resolve} > 
R< TEMP >               $# TEMP $@ 4 . 7 . 1 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr} 
R< FORGED >             $# error $@ 5 . 7 . 1 $: "550 Relaying denied. IP name possibly forged " $&{client_name} 
R< FAIL >               $# error $@ 5 . 7 . 1 $: "550 Relaying denied. IP name lookup failed " $&{client_name} 
R$*             $: < @ > $&{client_name} 
R< @ > $* $=P           $: < ? > $1 $2 
R< @ > $+               $: < ? > $[ $1 $] 
R$* .           $1 
R< ? > $=w              $@ RELAY 
R< ? > $=R              $@ RELAY 
R< ? > $*               $: < $( access Connect : $1 $: ? $) > < $1 > 
R< ? > < $* >           $: < $( access $1 $: ? $) > < $1 > 
R< RELAY > $*           $@ RELAY 
R< $* < TMPF > > $*             $# TEMP $@ 4 . 3 . 0 $: "451 Temporary system failure. Please try again later." 
R< $* > < $* >          $: $2 

戻る

にゃんたろう 拝!
2006年 9月17日 (日) 21:38:17 JST 作成

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