現状は理解しているわけでは おへん 試行錯誤してみよう
このような 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" です 試験方法自体 吟味必要ですが */
注意 試験方法自体 意味が有るのかどうか 含めて 吟味する必要が有ります これは 悪魔で 試行錯誤の結果にしかすぎません
ルールを 見る方法として 以下の様な方法が 有るようです
> =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 作成