約20年間のUsenetアーカイブをarchive.orgにアップロードしようとしましたが、一部のアーカイブにBase64でエンコードされたトロイの木馬が含まれているため、最初のアーカイブの配置が拒否されています。処理するファイルが400GB程度あるため、手動での回復はできません。すべてのファイルはプレーンテキストのmbox形式です。私の最初の考えは、mboxファイルで「Content-Type:application / x-msdownload」を含むすべてのメッセージを見つけて置き換えることでした。これはかなり難しいかもしれません。今、より簡単な無差別アプローチは、すべてのBase64チャンクを削除することだと思います。
~からこの問題grepを使用してbase64チャンクを見つけることができることはわかりましたが、sedを使用して同じものを設定する方法がわからないので、質問します。ありがとうございます!
編集:これまでに試したこと
これによるとページ、^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
base64テキストを見つけるために必要な正規表現として推定されますが、sedで使用しようとすると、実際には機能しないか、少なくとも予想していたものとは異なります。
例:
cat clari.local.california.sfbay.biz.mbox | sed -e '#^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$#d' > clari.local.california.sfbay.biz.mbox.test
clari.local.california.sfbay.biz.mbox.testにはまだbase64テキストが含まれています。
ベストアンサー1
MUA(メールユーザーエージェントmutt
)は、MIMEタイプごとにメールボックスからメッセージを削除できます。これをスクリプトとして書くこともできます。
エンコードされた添付ファイルを含むメッセージはmutt
検索式と一致することがあります~M application
。これはapplication
通常、添付ファイルがエンコードされたことを示すMIMEタイプstringを含むすべてのメッセージと一致します(base64可能)。application/x-msdownload
必要に応じて、明らかにより具体的なものを使用できます。
メールボックスが呼び出されると、messages.mbox
コマンドライン文字列を含む添付ファイルを含むすべてのメッセージを次のように削除できます。application
mutt -e 'push <delete-pattern>"~M application"<enter><quit>"y"' -f messages.mbox
メールボックスからメッセージを削除する前に確認メッセージは表示されません(最後は、"y"
終了する前にメッセージを削除するかどうかに関する質問に対する回答です)。mutt
メッセージを別のメールボックスに移動できます。
mutt -e 'push <tag-pattern>"~M application"<enter><tag-prefix><save-message>bad.mbox<enter>"y"<quit>"y"' -f messages.mbox
これは、指定された検索式に一致するすべてのメッセージを表示してメールボックスに保存し、元のメールボックスbad.mbox
から削除して終了します。