/ var / mail / rootを再度送信するにはどうすればよいですか?


12

いくつかの設定ミスにより、/ var / mail / rootおよび/ var / mail / www-dataに多くのメールを送信しました

これらのファイルを「ループ」して、各メールをもう一度送信するにはどうすればよいですか?

回答:


17

formail、procmailの一部(おそらくシステムで既に利用可能)は、メールボックスを取得し、それをメッセージに分割し、それぞれでコマンドを実行できます。manページから:

   -s   The input will be split up into separate mail messages, and  piped
        into  a  program  one  by  one (a new program is started for every
        part).  -s has to be the last option specified, the first argument
        following  it  is  expected to be the name of a program, any other
        arguments will be passed along to it.  If you  omit  the  program,
        then  formail  will  simply  concatenate the split mails on stdout
        again.  See FILENO.

だからあなたは私があなたがこのようにしたいと思うことをすることができます:

  formail -s /usr/sbin/sendmail -oi -t < /var/mail/root

3
しかし、クリスが言ったことは、次のとおりです。この解決策は、ローカルエイリアスまたは何かを修正して、/ var / mail / root以外にメッセージを送信することを前提としています。たとえば、「formail -s / usr / sbin / sendmail -oi you@somewhere.else」を実行して、すべてのメッセージをリダイレクトできます。
ラースク2009

www-dataとrootが適切に設定されたと仮定すると、「for foo in ls /var/mail; do formail -s / usr / sbin / sendmail -oi $ foo <./$foo; done」のように各ファイルをループしてローカルに配信します。
トムH

3
mutt -f /var/mail/www-data

その後、mutt ...

T.*
;b

Tはそれをタグ付けモードにし、。*はすべてのメッセージにタグ付けします。セミコロンはすべてのタグ付きメッセージに次のコマンドを適用し、最後にプロンプ​​トが表示されるアドレスにメッセージを「バウンス」します。

記憶から、私はどちらかと思います

D.*

または

T.*
;d

その後、メールボックスを空にします。


0

/ var / spool / mail / xxx unixメールボックスファイルは、メールメッセージが順番に保持される単純なテキストファイルです。各メールメッセージは、送信者と受信日を含む「From」行(メッセージの一部ではありません)で始まり、メールヘッダーを取得してからメール本文を取得します。

基本的に、このようなFrom行を検出するファイルでループし、すべてのメッセージを抽出してから、python smtp moduleやcpanのperl Net :: SMTPモジュールなどのツールを使用して送信できます。

ターゲットが別のローカルメールボックスの場合、メッセージ(From行を含む)を追加するだけです。本当にルートをターゲットとするメッセージの取得も気にしない場合は、ルートメールボックス全体を別のメールボックスに追加することもできます。

それを行うスクリプトがいくつかあり、必要に応じて例が投稿されます。

問題は、メッセージの本当のターゲットを取得することである可能性があります。なぜなら、ルートメールボックスで終了した場合、おそらく最初からルートをターゲットにしているからです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.