- PR -

メールマガジンの配信はどうやってます?

投稿者投稿内容
TAD
会議室デビュー日: 2002/06/19
投稿数: 7
投稿日時: 2002-06-21 22:22
はじめまして。

現在、メールマガジンの配信システムを構築・運営しているのですが
配信数が増加しており配信に時間がかかるようになってきました。

現在の方法を言うのは恥ずかしいのですが、
DBから対象者を読み込んでPHPで以下のコマンドをループさせて送っています。

$mp = popen("/usr/lib/sendmail -f アドレス." ".アドレス." ", "w");
 ・
 ・
pclose($mp);

この方法は、問題がいっぱいで、、途中で止まって応答が帰ってこなかったり、
誤って別ページに移動してしまったり、、(配信が終わるまでブラウザを閉じられないので)

そこで、安全な方法(?)でシステムを作り変えようかと思うのですが、
皆さんはどういった方法で大量のメール配信をされているのでしょうか?
いま、変えようかと思ってる方法は、PHPのコマンドライン版でバックグラウンドで
動かそうかと思っていますが、この方法で配信されている方はいらっしゃるでしょうか?
やはり、fmlなどのメーリングリストを使用したほうがいいのでしょうか?

OS:RedHat7.2
DB:PostgreSQL
MTA:qmail(postfixも試してみようかと思っています)
を使用しています。

どうぞ、よろしくお願い致します。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-06-22 13:35
ML方式で済むなら(差し込みがないなら)、使うのが楽でしょ。
さらになんも考えたくなければ BCC: に配信先を列挙。
TAD
会議室デビュー日: 2002/06/19
投稿数: 7
投稿日時: 2002-06-22 19:30
しょむさん、お返事ありがとうございます。

差し込みとはどういったことでしょう?
本文に文章を自動的に加えるといったことでしょうか??
そうであれば、そいった機能は必要ありません。

BCCに配信先を列挙するのはいい方法ですね。
ループの数が少なくて済みそうですね。

ふと思ったのですが、BCCに書いた場合ってキューには
どのような形で溜まるのでしょう??ひとつひとつのアドレスが
展開されてその数の分だけ溜まるのでしょうか??
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-06-22 23:44
差し込みは、たとえばメールごとに別の名前を入れたりとか。そういうのです。

BCC はまぁふつうに使われる方法ですかね。
あんまり長すぎると文句いわれるかもしれないので、適当に分割すればいいでしょう。
大量配信については ML を使った方がいろいろ工夫されている気がしますが、DBにユーザリストがあるなら一長一短かも。

BCC がどういう扱いになるかは MTA によります。qmail 使ってるならおまかせしちゃっていいかと。同報の扱いについては定評ありますから。

あと、PHP なら、mail インタフェースありませんでしたっけ?sendmail コマンド起動なんてせずに SMTP 叩いた方がはるかに効率いいとおもうんですが。

[ メッセージ編集済み 編集者: しょむ 編集日時 2002-06-22 23:56 ]
TAD
会議室デビュー日: 2002/06/19
投稿数: 7
投稿日時: 2002-06-23 16:27
しょむさん、ありがとうございます。
大変勉強になります。

PHPのインターフェースを使用していたのですが、文字化けがおきてしまうんですよ。
携帯にも配信していまして、半角カナを使用した場合に文字化けしてしまって・・・。

PHPのコマンドライン版をバックグラウンドで動かして、BCCにアドレスを書いて送ろうと思います。
まだ、MTAの知識やMLの知識も浅いのでML方式の配信は勉強してからにします。

[ メッセージ編集済み 編集者: ta2n 編集日時 2002-06-23 16:29 ]
ふじい
大ベテラン
会議室デビュー日: 2002/05/07
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2002-06-24 16:52
こんにちは、藤井と申します。

引用:

現在の方法を言うのは恥ずかしいのですが、
DBから対象者を読み込んでPHPで以下のコマンドをループさせて送っています。

$mp = popen("/usr/lib/sendmail -f アドレス." ".アドレス." ", "w");
 ・
 ・
pclose($mp);

この方法は、問題がいっぱいで、、途中で止まって応答が帰ってこなかったり、
誤って別ページに移動してしまったり、、(配信が終わるまでブラウザを閉じられないので)

そこで、安全な方法(?)でシステムを作り変えようかと思うのですが、
皆さんはどういった方法で大量のメール配信をされているのでしょうか?
いま、変えようかと思ってる方法は、PHPのコマンドライン版でバックグラウンドで
動かそうかと思っていますが、この方法で配信されている方はいらっしゃるでしょうか?
やはり、fmlなどのメーリングリストを使用したほうがいいのでしょうか?



う〜ん、考え方を変えたほうがいいです。

まず、どこに時間がかかっているのかを突き止めましょう。それがわからないと何とも言えません。

また、こういうたぐいの質問をするときは
・配信数のボリューム
・ボトルネックはどこか
・配信するターゲット
・優先したいこと(予算や時間など)
がわからないと誰もアドバイスできません。

たとえば、
・配信数のボリューム
の場合、ハードウェアをいいものにするのがいちばんいいでしょう。

・ボトルネックはどこか
DBがそうならDBのみを別マシンにするとか、SMTP間の通信がそうならSMTPをかえる、送信の順番をかえるなどがあります。DNS問い合わせがそうなら、キャッシュ用DNSをたてるとか。

・配信するターゲット
たとえば携帯端末が多いなら、同じドメインが多いはずですから、相乗り効果を狙ったりなどがありますね。

・優先したいこと(予算や時間など)
上記のものはすべてこれに依存しますよね。

なのでPHPとかDBとかはあんまり必要な情報ではないです。むしろマシンのスペックとか書くといいでしょう。

また、qmailとpostfixは送信方法のポリシーが全く違うので、上記のことをよく考えないと期待した効果が得られません。

オライリーのfmlバイブルがお勧めです。fmlを使わなくても、一読する価値はあります。
それを読んでみてください。おそらく答えが書いてありますから。
TAD
会議室デビュー日: 2002/06/19
投稿数: 7
投稿日時: 2002-06-25 19:21
こんにちは、藤井さん。

説明がわるかったようで申し訳ないです。
PHPのコードまで書いておけばロジックの部分もつっこんでくれるかと・・・・

聞きたかったのは、qmailやpostfixなどのチューニングも必要だと思いま
すが、それ以前にみなさんどうやってメールをMTAに渡しているのかと、、
メルマガの規模に限らず(全体的な)仕組が知りたかったのです。

現在の状況を書きますと、
配信数は2千弱ほどでが、今後、1万までいきそうなものもあります。
ターゲットとなるのはPCと携帯で、3割が携帯のアドレスです。
ドメインでソートしてMTAに渡しています。
ハードウェアはペンティアム3の850MHzでメモリは256MB。
MTA以外に動いているものといえば、ApacheとPostgreSQLくらいです。
アクセス数は日に200〜300くらいなのでそれほど負荷はかかっていません。

fmlバイブルはやっぱりいいですか。
迷ったあげく買かわなったんですよ〜。
買って、読もうと思います
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-06-25 19:49
配信数がその大きさだったら、まじめに ML 使ったほうがいいかも。
配信先がほぼ固定で繰り返し配信するメルマガならなおさら。

んで、ユーザを DB につっこむってのもやめちゃう。

スキルアップ/キャリアアップ(JOB@IT)