[PHP-users 2113] Re: 送信エラーメールチェックの結果をDBに記録したい

Yasuo Ohgaki php-users@php.gr.jp
Sun, 16 Sep 2001 14:07:40 +0900


大垣です。

> 石浦です。
>
> 一括メール配信のシステムを構築中なのですが、
> その際に送信エラーメールのチェックを行って
> その結果をDBの送信ログ格納テーブルの送信結果フィールドに
> (1 or 0)とかで格納したいのですがよい方法はないでしょうか。

単純に送信に失敗したかどうかはmb_sendmail()の戻り値で解りますが、
Bounce処理はMTAに任せてしまうのが最適を思います。

> やりたいことをまとめますと、
> ユーザーリストから条件指定→検索→
> mb_sendmail関数で該当者に一斉配信・送信ログDB格納(エラー結果含む)
>
> /var/qmail/maillogや、/var/qmail/bin/qmail-qreadとかを実行してなんら
かの
> 処理をすればいけるのかとも考えたんですがq-mailの処理がよく理解してい
ない
> のでなんともわからないのです^^;

デフォルト設定のQMailでは1週間配送できないとBounceします。現在のイン
ターネットメールの仕組みからすると妥当な設定で変更する必要はありませ
ん。BounceしたメールをIMAP/POPで拾ってきて処理する方法が一番簡単かつ適
切な処理と思います。

QMailはaliasとして.qmail-defaultととすると全てのメールを受信できます。
ユーザー名がlistの場合、listのホームディレクトリに.qmail-defaultを設定
すると、list-acbdeif@example.com, list-xcvfes@example.com 等のメールア
ドレスが全てlistのメールボックスに配信されます。メール送信の際にBounce
先アドレスを適切に設定して、そのアドレスにDBで管理するためのIDを入れて
おけば、IDをアドレスから抽出して簡単に送信結果をDBに保存できます。完全
な送信結果を得るまでには1週間時間が必要ですが、今のメールの仕組みでは
仕方ありません。

メッセージがキューに入っているにも関わらずBounceする前に再送信すると、
同じメールが複数配信される可能性が高いのでこのような処理はおこなっては
いけません。

--
Ohgaki, Yasuo (大垣 靖男) 
Mail: yohgaki@dd.iij4u.or.jp