マイメールサーバー(IMAP)に添付ファイル(PDFなど)を含む電子メールがたくさんあります。これらの添付ファイルはスペースを無駄にします。私のサーバーのHDDスペースはホスティング会社によって制限されています。私は電子メールの添付ファイルを削除してそのスペースの一部を取り戻そうとします。 (ほとんどすべてがローカルにダウンロードまたはアップロードされるため、メールサーバーで重複しています。)
(以前)Windowsを使用すると、メールサーバーにログインし、メッセージを操作し、添付ファイルを削除するために使用できる「クライアントタイプ」Eメールハンドラ「IMAPSize」というアプリケーションがありました。しかし、私はUnix / Linuxを使用していましたが、(これまで)使いやすさと作業の完了という点で同様のものが見つかりませんでした。 (たとえ私たちがより良い、より強力なソリューションを持っているかもしれませんが、どのソリューションなのかわかりません。)
私はmunpack(ローカルにインストールして使用する)とripmimeについて知っていますが、これらのプログラムはローカルに保存されたメッセージであるMboxまたはMailDirを処理するように設計されているようです。私は電子メールをローカルで同期せずに私たちのサーバーに残します。 (電子メールが多すぎて合計100,000個を超えています。)
そしてMunpackは添付ファイルの抽出にかなり上手なようですが、メッセージ自体を破壊せずに添付ファイルだけを削除する方法を見つけることができませんでした。
Web GUI で Horde、Roundcube、SquirrelMail を使用できますが、添付ファイルを削除する方法が見つかりませんでした。
また、複雑な設定や構成などを含まないソリューションを探しています。 (私は夢を見ているか、あまりにも多くを求めているかもしれません。)
私はこのアプローチを試したいと思います。オフラインimapを使用してすべての電子メールをローカルにダウンロードして同期し、munpackまたはripmimeを使用して添付ファイルを削除できます(単に抽出するのではなく、そうする方法を見つけることができるとします)。 -サーバーと同期すると、電子メールは添付ファイルなしでサーバーに戻りますが、a)動作しているかどうかはわかりません。
私は私のための解決策があると確信しています。 (おそらく、サーバーから電子メールを操作したり添付ファイルを削除したりすることができるクライアントタイプのGUIアプリケーションの種類、または他のあまり複雑ではありません。)
注:私はThunderbirdを使用せず、それをインストールまたは使用するつもりはありません。 Wineも同様です。私は可能な限り少ないスペースを占めるアプリを使って、私のボックスを「最小化」のままにしようとします。
正しい方向を教えてくれてありがとう。
ベストアンサー1
stdinからすべての添付ファイルを削除し、stdoutを返す次のPerlコードがあります。これが役に立ちます。
#!/usr/bin/perl -w
use strict;
use Mail::Audit;
use Mail::Audit::Attach qw(Attach);
my $mail = Mail::Audit->new;
my $attachments = $mail->attachments;
foreach (@$attachments)
{
$_->remove;
}
$mail->print();
Maildirのファイルの単純なループの代わりに添付ファイルを削除したいとしましょう。
for filename in <list>
do
./strip.pl < "$filename" > "$filename".lock && mv "$filename".lock "$filename"
rm "$filename".lock
done
興味深い修正方法は、まず添付ファイルを抽出し、メッセージから削除する前に別々に保存することです。
foreach (@$attachments)
{
$_->save("/path/to/attachment/dir");
$_->remove;
}
ただし、まずバックアップしてください。)