vine-users ML アーカイブ



[vine-users:052328] Re: qmail でメール送信が遅い

  • From: "OOSATO,Kazzrou" <kazz@xxxxxxxxxxxxxx>
  • Subject: [vine-users:052328] Re: qmail でメール送信が遅い
  • Date: Mon, 22 Jul 2002 23:29:07 +0900
おおさとです。

> From: "h.kobayashi" <s_andrews@xxxxxxxxx>
> Subject: [vine-users:052322] Re: qmail でメール送信が遅い
> Date: Mon, 22 Jul 2002 15:01:17 +0900
> Message-ID: 20020722141608.DF77.S_ANDREWS@xxxxxxxxx

> > サーバーから LAN 内の PC の逆引きが出来てない感じもします
> > が、LAN 内部の DNS はどうなっているんでしょう。
> > 
> これは、
> クライアントPCのIP:クライアントPCのホスト名
> という事でしょうか??
> そういった設定はしておりません。

昨今のメールサーバは一般的に SMTP を投げてきた先を逆引きします。
この場合、メールサーバがクライアントのプラーベートアドレスを解
決できないとインターネット側に問い合わせを投げてしまいます。
そのときどうなるかは相手次第で、最悪 blackhole.isi.edu まで行っ
てしまうので、タイムアウトは上流のコンディションに左右されます。
ですから、一見無事に動いているように見えたメールサーバがある日
突然タイムアウトで受けつけなくなるという事態が起こりえます。

# 昨日まで動いていたんですけど、今朝から急にタイムアウトで送信
# できないんです。と SOS が来る。

もちろん、正しくはプライベートアドレスはプラーベートで解決する
ことです。しかし正しくなくてもたまたま動いてしまうことが問題な
んですね。 内部に DNS を立てるのが面倒ならば、サーバに hosts を
持たせてもいいわけで、逆引きができさえすればいいので機械的に生
成した名前でもいいです。

一例ですが、安直な解決として、機械的 hosts 自動生成スクリプト
なんてのを作って重宝しています。

#! /bin/bash
NETWORK=${1}
HostName=${2}
Digit1=${NETWORK%%.*}
Digit2=${NETWORK#*.}
Digit2=${Digit2%%.*}
Digit3=${NETWORK#*.*.}
Digit3=${Digit3%%.*}
Digit4=0
HEXARRAY="0 1 2 3 4 5 6 7 8 9 A B C D E F"

Digit=0
for HexArray1 in ${HEXARRAY}; do
  for HexArray2 in ${HEXARRAY}; do
    if [ "${Digit}" = "${Digit1}" ]; then
      HostName=${HostName}${HexArray1}${HexArray2}
    fi
    Digit=$((Digit + 1))
  done
done

Digit=0
for HexArray1 in ${HEXARRAY}; do
  for HexArray2 in ${HEXARRAY}; do
    if [ "${Digit}" = "${Digit2}" ]; then
      HostName=${HostName}${HexArray1}${HexArray2}
    fi
    Digit=$((Digit + 1))
  done
done

Digit=0
for HexArray1 in ${HEXARRAY}; do
  for HexArray2 in ${HEXARRAY}; do
    if [ "${Digit}" = "${Digit3}" ]; then
      HostName=${HostName}${HexArray1}${HexArray2}
    fi
    Digit=$((Digit + 1))
  done
done

for HexArray1 in ${HEXARRAY}; do
  for HexArray2 in ${HEXARRAY}; do
    if [ ${Digit4} -gt 0 ] && [ ${Digit4} -lt 255 ]; then
      if [ ! "${Digit1}.${Digit2}.${Digit3}.${Digit4}" = "${IPADDR_INT}" ]; then
        echo ${Digit1}.${Digit2}.${Digit3}.${Digit4} ${HostName}${HexArray1}${HexArray2}
      fi
    fi
    Digit4=$((Digit4 + 1))
  done
done


$ このスクリプト ネットワークアドレス 適当な文字列
として実行すると、クラスC の hosts を自動生成してくれる仕掛です。
254 行も手で書くと疲れるので、ただのサボリ技ですが :-)。
 
-- 
  ;      kazz@xxxxxxxxxxxxxx
  ;     oosato@xxxxxxxxxxxxx
  ; 大里和朗@江戸川区西葛西