mysql:2863
From: Seiji Tateyama <Seiji Tateyama <tateyan@xxxxxxxxxx>>
Date: Thu, 14 Dec 2000 14:09:19 +0900
Subject: [mysql 02863] Re: メール配信 PGM 作成
たてやんっす とみたまさひろ <tommy@xxxxxxxxxx> さんは メール配信 PGM 作成 にて と> とみたです。 と> と> [hashimoto <look@xxxxxxxxxx>さんが] と> ["[mysql 02861] メール配信 PGM 作成" で曰く] と> と> > ここまではロジックを組めるのですが、メールアドレスが誤っている と> > 為、リターンされたエラーメールについては次回からメールしない様、 と> > MySQLにメール送信不可BITをONする様な仕組みを作りたいのですが、 と> > 良いアイデアが思いつきません。 と> と> ええと、もしかして「エラーメールが来たらDBをいじる」ということを と> *自動* で行ないたいということでしょうか? と> と> # あまり MySQL と関係無い話かな? ですね... でも MySQL のデータベースへフラグを設定するという点において 関連ということなのだと思います と> Sendmail や qmail とかの代表的な MTA が返すエラーメッセージに と> マッチングしてメールアドレスを抜き出す仕組みを作るとか…。 と> MTA によってエラーメッセージは異なるし、同じ MTA でも場合によって と> 異なることがあるので大変かも…。 です (^^ゞ sendmail / qmail などであれば User Unkown とかを 本体の メッセージから ある程度は 絞りこめます スクリプト言語の前の段階でprocmail などを利用すると格段に便利になります たとえばsendmail では ボディにエラーとして 550 メッセージ ... User Unknown 550 メッセージ ... Host unknown などと メッセージを返してくれるので これを拾うのが手です その後、スクリプトをかますようにして データベースへ 入れるようにすれば多少は拾えるとおもいます でも 冨田さんのおっしゃってるように MTAの種類によって メッセージなどはかわりますので、自動でする分と手動でする 分とを分けて、解析できたら自動に加えるようにしていく しかなさそうです sendmail + Procmail でのprocmailrc レシピのさわりの一例 :0 *^FROM_DAEMON デーモンプロセスから発信された { :0 B: 本文に対してのegrep *^550.*\.\.\. User unknown 行頭550ではじまる ... User Unknown |フイルタ1 フイルタ1を適用 :0 B: *^550.*\.\.\. Host unknown 行頭550ではじまる ... Host unknown |フイルタ2 フイルタ2を適用 } これで フイルタスクリプトで MySQLデータベースの目的の テーブルへフラグなどを入れればよいわけです フイルタは C / perl / ruby などコマンドライン上から実行でき るフィルタを作れる&MySQLの操作ができる というものならなんで もかまわないと思います (メールアドレスを抜き出すという処理 が入ります) perl でフイルタ1の例は #!/usr/bin/perl use DBI; use strict; while(<>) { if(/^550\s+(.*)\.\.\. User unknown/) { &DBcomit($1); # この中で 処理をします # 上記のマッチングで $1 にメールアドレスが入ってきます。 } } sub DBcomit() { my($dbh,$Q,$sth,$rc); $dbh = DBI->connect("DBI:mysql:データベース名:サーバ名","ユーザ名","パスワード"); $Q="update なんちゃら"; $sth = $dbh->prepare($Q); $rc = $sth->execute ; $rc = $sth->finish; $rc = $dbh->disconnect; } といった感じでしょうか =>でっち上げなので あと 気をつける点としては User Unknownで一回返ってきたからといって すぐに送信禁止を設定してよいかどうかという問題もあったりします... 相手のサーバの一時的なミスも考えられますし... 何回かエラーになった場合に送信禁止にする といった配慮も考えたほうが 良いでしょう ============ 彡彡从 たてやんっす d□/□-b <tateyan@xxxxxxxxxx> ヽ"ー"丿
2861 2000-12-13 23:45 [hashimoto <look@xxxx] メール配信 PGM 作成 2862 2000-12-14 00:31 ┣[とみたまさひろ <tomm] -> 2863 2000-12-14 14:09 ┃┗[Seiji Tateyama <tate] 2875 2000-12-15 17:07 ┃ ┗[<moeru@xxxxxxxxxx> ] 2876 2000-12-16 00:01 ┗[hashimoto <look@xxxx]