[PHP-users 14286] Re: 大量のメールをすばやく送りたい

Osamu Shigematsu php-users@php.gr.jp
2003年 3月 25日 (火) 07:54:27 JST


重松です。こんにちは。

> その SMTP サーバーが tcpserver + qmail-smtpd であれば、
> tcpserver に -HRl0 オプションを追加してみるとか。
> 意味はマニュアル (? Web ページしか無いんだっけ?) を参照。
> 
> -H が効くなら、クライアント側の IP アドレスの逆引きをできないとか、
> SMTP サーバーホストの DNS クライアントの設定がおかしいといった
> 原因が考えられます。
> 
> 通常は ident 情報もクライアント/ローカルのホスト名とも必要ないので、
> tcpserver -HRl0 でいいと思いますけどね。

これについては、調べて、そう対処を依頼してみます。

> 「qmail だと手間がかかり、ほかの MTA なら手間はかならない」と
> 読めたのですが、そういうわけではないということですか?
> (でも、そうだとすると、「qmail だと」そうなる理由がわかりませんが)

そういう意味ではありません。

こういうニーズ (大量の、似たような内容で、ほんのちょっとだけ
個人向けにカスタマイズした、宣伝、告知を目的としたメールを、
できるだけ迅速に配送したい) に対応した MTA が、
あってもおかしくないかなと思いました。

> 「そういう」とはどれを指していらっしゃいますか?
> 
> 少ないリソースで、宛先ごとにメッセージなどを差し込みでき、高速にメール
> 配送できる MTA ってことでしょうか。

そうです。それを MTA と呼ぶかどうかは、いささか議論を呼ぶ余地がありそうですが。

> > で、これが、qmail-smtpd を経由するってことなのでしょうか。
> 
> 「これ」とはどれのことですか?

ちょっと混乱してきたので、整理してみました。

1. qmail-inject の場合:
  (1.1) PHP で、メールを組み立てる。
  (1.2) qmail-inject を起動して、メールを渡す。qmail-inject は RFC 822 の
      まともなヘッダをつけてくれる。
  (1.3) qmail-queuq がキューに突っ込む
  (1.4) qmail-send がキューから読み出す
  (1.5) 基本的にリモート宛だから、qmail-rspawn が起動される。qmail-remote が
      外部に SMTP 接続をする。

2. qmail-smtpd の場合:
  (2.1) PHP で、メールを組み立てる。
      このとき、まともなヘッダをすべて自力でつける。
  (2.2) sokect で qmail-smtpd に接続する。
  (2.3) qmail-queuq がキューに突っ込む
  (2.4) qmail-send がキューから読み出す
  (2.5) 基本的にリモート宛だから、qmail-rspawn が起動される。qmail-remote が
      外部に SMTP 接続をする。

ということで、結局、qmail-smtpd だろうと、qmail-queue を経由しますね。
思いっきり、qmail-remote を直接使うことと勘違いしました。

で、現状を言うと、Windows の専用ソフトのパターンは、qmail-smtpd と同じで、
(2.1) と (2.2) の送信処理が Windows で実行されています。

このとき、ボトルネックとなりうるのは、
  (a) メールの組み立て自体が遅い (Windows のソフトが遅い)
  (b) 名前解決など、リンクの確立までが遅い (DNS, LAN, WAN が遅い, 設定ミス)
  (c) 通信速度が遅い (LAN, tcpserver などが遅い, 設定ミス)
  (d) SMTP の送信処理が遅い (Windows のソフトが遅い)
  (e) SMTP の受信処理が遅い (qmail-smtpd が遅い)
となると考えました。

で、上記については、原因を切り分けるために、qmail-inject を使って、
qmail-smtpd を経由しないで送ったらどうなるか測定して欲しいと、
伝えたのですが、どうっだったか、私はわかってません。
# 私がわからないことを、どうわかれというのだと怒られそうですが。;)

いずれにしても、ログの入手は困難だと思います。

なので、qmail-inject + PHP で送って、それなりに速く動けば、
それはそれで問題解決になるし、ただ、個人的に興味がなかったことなので、
(別にねずみ講とか、マルチやってるわけではないので)
PHP での前例、問題へのアプローチ方法などについての情報が欲しかったんです。

-- 
Osamu Shigematsu <m5issige@mr.hitachi-medical.co.jp>





PHP-users メーリングリストの案内