- 締切済み
非常にこまっています。
非常に困っています。 助けていただければ幸いです。 特定のアドレスから来る以下条件のメールをサーバ上で削除したいのですが。何方か知恵を貸していただければ幸いです。 --条件---- サーバ:sendmail 対象アカウント数:200以上 到着時間:ばらばら OS:solaris8 一挙に消したいのでroot権限で/var/mailをさわるスクリプト等を動かしたいです。 教えていただければ非常にありがたいです。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- e-marimo
- ベストアンサー率24% (9/37)
ちょっと考えてみましたが、作業自体は時間が掛かってもmboxに反映させるのを一瞬ですませば良いのではないかな・・・と思います。たとえば mboxを/tmp等へコピーし削除スクリプトをコピーに実行する。そして確実に削除され他のメールに影響が出ていないかdiffで確認して完了したら/tmpのmboxと実物のmboxと入れ換えるってかんじです。 これだと確認に手間が掛かりそうですが良いのではないかと思います。めんどくさいと言ってしまえばそれまでですが・・・
- e-marimo
- ベストアンサー率24% (9/37)
書き込んでからちょっと勘違いしてるかな?と思い連書きです。 filter 等の処置はすでにされてるんですよね。 失礼しました。 つまり一度受信してしまった物を一瞬ですべて削除したいということですか? mbox型のメールboxが200ほどあってある程度メールも溜っているとなるとちょっと時間かかりそうな気もしますが、それをやるならばすべてCで書くしかないですね。 んー残念ながらちょっと力及ばずです。すいません。
- e-marimo
- ベストアンサー率24% (9/37)
そうすると、やりたい事は一回限りの検索削除ではなく恒久的にそこからのスパムの受信を制限したいのでなんとかしたいって事ですね。 受信する前に制限をかけるのであれば、すでに相当プログラミングのスキルをお持ちのようですのでCで受信を監視するデーモンを書いてしまうのも手ですが、もうひとつの手段として、サーバ上でスパムアサシンとprocmailを使い排除したほうがかなり効率的だと思いますがいかがでしょうか。 現在のバージョンのスパムアサシンは強力な学習型filterを採用していてかなり使えます。
- e-marimo
- ベストアンサー率24% (9/37)
そのメールの本文でもヘッダでもいいのでなにか共通するキーワードを見付けるのが早いかと思います。 それをキーにして検索削除スクリプトを組んでしまえばあとは簡単です。ただ実行するときは全てのメッセージをバックアップするのを忘れずに。
補足
ご返答ありがとうございます。 送信元が一緒なのでそれを条件としたいのですがこれを利用したスクリプトが知りたいのです。。 基本的にperlでmailx、awk、grep等を組み合わせてある程度できたのですが、これでは一旦受信してからの話になるので一括処理的な意味で問題があります。 つまり遅いという事です。 なにかご存知ないですか? 当方はawk、tcl、perl、c,c++は基本レベルですがあつかえます。
- xjd
- ベストアンサー率63% (1021/1612)
肝心なsendmailのバージョンが書かれていない。 「特定のアドレスから来る」とは、外部(他ドメイン)からのメールを指しているのか? わからないことが多いので、アドバイスになりますが、 スパムメール対策がしたいのであれば、 /etc/mail/access (access.db) で、中継させたくないメールアドレスを指定して、 discard(メール破棄・エラーを返さない)する方法はどうでしょう? http://itpro.nikkeibp.co.jp/linux/etc-reference/sendmail.shtml
補足
早速の回答ありがとうございます。 そして説明不足ですいません。 既に受信してしまっている分を削除したいのです。 sendmailの設定等でフィルタをかけるわけではありません。 その辺の対策は済んでおり2度とこないメールです。
お礼
ご返答ありがとうございます。やっぱ難しいですかね。力の無さを実感しています。