先日同じメールソフト Becky! Internet Mail (以下 Becky!) を使う友人某から、IMAP サーバー上にあるメールの添付ファイルを削除する方法を質問された。確かに Becky! は、IMAP サーバー上の添付ファイルだけを削除することができない (現時点の最新版 2.58.00 で確認)。

そこで提案したソリューションは、次の 2案。

  1. 該当メールに対して「手を加えずに転送 (英語版は "Redirect")」を選択し、メール編集ウィンドウで添付ファイルを削除してから自身に送信。添付ファイルがなく本文のみのメール受信を確認後、オリジナル・メールは削除する。
  2. IMAP サーバー上の添付ファイルを削除できるメールソフト (Thunderbird 等) で、該当メールを処理する。

"1." の「手を加えずに転送」は "Resent-To" を用い、件名 ("Fw:" 等) や本文に転送メールであることを主張する編集が加えらないので、メールを「転送」したいときによく使っている。今回のように、オリジナル・メールの送信時刻を変えたくない場合にも役に立つ。

"2." のように IMAP サーバー上の添付ファイルを削除できるメールソフトは他にもありそうだが、あれこれ調べるのも面倒だったので、今回は Thunderbird のみ。添付ファイルの削除が「サーバー上から」で、ローカル環境には残しておきたい場合は、削除ではなく「添付ファイルを分離」を使う。

尚、Thunderbird は添付ファイルの削除または分離を行うと、サーバー上のメールの内容は次のように変化し、「添付ファイルがあった」と言う情報は残る。また分離時は、残される添付ファイル情報のファイル名に "Deleted " が付かない。

■ 添付ファイル削除前

Content-Type: multipart/mixed; boundary="------_4E6DC07900000000EE2E_MULTIPART_MIXED_"
Content-Transfer-Encoding: 7bit

--------_4E6DC07900000000EE2E_MULTIPART_MIXED_
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit
メール本文あいうえお
--------_4E6DC07900000000EE2E_MULTIPART_MIXED_
Content-Type: image/png;
name="hoge.png"
Content-Disposition: attachment;
filename="hoge.png"
Content-Transfer-Encoding: base64

iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAMAAADthUvBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ

--------_4E6DC07900000000EE2E_MULTIPART_MIXED_--

■ 添付ファイル削除後

Content-Type: multipart/mixed; boundary="------_4E6DC07900000000EE2E_MULTIPART_MIXED_"
Content-Transfer-Encoding: 7bit

--------_4E6DC07900000000EE2E_MULTIPART_MIXED_
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit
メール本文あいうえお
--------_4E6DC07900000000EE2E_MULTIPART_MIXED_

Content-Type: text/x-moz-deleted; name="Deleted: hoge.png"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline; filename="Deleted: hoge.png"
X-Mozilla-Altered: AttachmentDeleted; date="Mon Sep 12 17:23:43 2011"

You deleted an attachment from this message. The original MIME headers for the attachment were:
Content-Type: image/png;
name="hoge.png"
Content-Disposition: attachment;
filename="hoge.png"
Content-Transfer-Encoding: base64

--------_4E6DC07900000000EE2E_MULTIPART_MIXED_--

今回の友人某の希望は添付ファイルの痕跡を残さない完全削除だったので、Becky! の「手を加えずに転送」案が採用された。

しかしこの方法では、新たに受信した添付ファイルなしのメールは送信時刻こそ元のままだが、サーバー上で受信した (=IMAP サーバー上にファイルが作成された) タイミングは、当然新しくなる。結果的に Becky! で該当フォルダー内を見た際のメールの並びが変わってしまうため、送信時刻等でソートしない自然の状態 (=受信順) で送信時刻順に並んだ状態にしておきたい場合は、一度該当 IMAP フォルダー中のメールを全てローカル・フォルダーに移動させ、「送信日付で整理 (英語版では "Reorganize")」を実行して元の IMAP フォルダーに戻す、と言う作業をする必要がある。これはフォルダー内のメール数に応じて処理時間が長くなるので、あまり頻繁に実施したくない。

Becky! でも、普通に IMAP サーバー上の添付ファイルを削除できるようになるといいが。

(2011-10-19 追記)
Thunderbird で添付ファイルを削除した場合、IMAP サーバー (我が家の環境は Dovecot 2.0.7) 上のファイルのタイムスタンプは変わらないものの、UNIX 時刻やホスト名をベースに生成されるファイル名が新しくなっていた。従って Becky! 上でメールをソートしない状態で送信時刻順に並んだ状態にしておくには、同様に「送信日付で整理」が必要になる。またヘッダー中に残る削除された添付ファイル名の表記にはシステム上の文字エンコーディングが使われるので、メールが ISO-2022-JP でファイル名が日本語でシステムが UTF-8 のような場合は、ファイル名部分が文字化けする。

Comments are closed.