詳細
ある日、同僚が送信したメールの添付ZIPファイルが開けないという問題が起きました。送信側のメーラーも、受信側のメーラーもThunderbird(v3.1.9)です。そして、添付ファイルのアイコンが赤×印がついている状態になっています。※正常に送られたメールでも、受信したメールの添付を右クリックで、削除を行なうとこの状態になります。しかし、受信した状態で既に削除状態になっている点で異なります。
何らかの原因で添付データが壊れた可能性、メーラーのセキュリティ機能で削除された可能性、メールサーバーで削除されたの可能性などいくつかの可能性を考えました。
とりあえずメッセージを保存してemlファイルを作成し、それをテキストエディタで開いてみました。すると添付データはbase64形式でびっしりと書き込まれていました。つまり、データは削除されていない…。※ちなみに、受信メールの添付を右クリックで自分で消した場合には、データも削除されます。
気になったのは添付ファイルのヘッダ部分の記述で「Content-Type: text/x-moz-deleted;」とあったこと。テキスト系のファイルでかつ削除済みかのような形式とされていました。
ここが怪しそうだということで、通常正しくZIPが送れている場合のヘッダを参考にし、その部分だけを「Content-Type: application/x-zip-compressed;」と書き換え保存してみました。すると、添付ファイルを正しく取り出すことが出来ました!
開けない形式で送られてきたものを無理やり開く方法は分かりました。しかし大事なのは、開けない人が出るような形式で送ることを防ぐことです。送信時にヘッダを作成する時点でおかしいので、送信者のThunderbirdのzipの認識に何らかの問題がありそうだと考えその辺を調べることにしました。
検索してみると、似たような問題に直面している情報はあったのですが解決に至る情報は見つかりませんでした。しかし「mimeTypes.rdf」という設定ファイルが関連しているということは分かり、この辺を調べてみることにしました。
C:\Documents and Settings\【ユーザ名】\Application Data\Thunderbird\Profiles\【人によって違う】\
mimeTypes.rdf
正しく送信できるマシンの設定内容
<RDF:Description RDF:about="urn:mimetype:application/x-zip-compressed" NC:value="application/x-zip-compressed" NC:editable="true" NC:fileExtensions="zip" NC:description="ZIP ファイル"> <NC:handlerProp RDF:resource="urn:mimetype:handler:application/x-zip-compressed"/> </RDF:Description>
正しく送信できないマシンの設定内容
<RDF:Description RDF:about="urn:mimetype:text/x-moz-deleted" NC:value="text/x-moz-deleted" NC:editable="true" NC:fileExtensions="zip" NC:description="圧縮(ZIP形式)フォルダ"> <NC:handlerProp RDF:resource="urn:mimetype:handler:text/x-moz-deleted"/> </RDF:Description>
「この部分を削除すれば直った」との情報があったため、削除したり正しいマシンの記述で上書きしてThunderbirdの再起動を行い、ZIPファイル添付ありのメールを送信してみたのですが、元の内容に書き換わってしまいダメでした。
つまり、Thunderbirdは外からの情報を元にして自動的にファイル種類を判断し設定しているということが分かりました。そこで「OSの拡張子の関連付けの設定」に問題がある可能性が高いと判断しました。問題が発生していた人は、圧縮解凍ソフトを使わずにWindowsのデフォルトの機能でZIPファイルを扱っていたのですが、ここが怪しいのではと思い、エクスプローラーのフォルダオプション→ファイルの種類で拡張子の関連付けを確認したり、圧縮解凍ソフトをインストールして拡張子の関連付けを変更したり試しました。するとうまくいきました!
…根本的な原因や、正しい解決方法もしくはパターンを網羅した解決方法などは分かっていません。類似した問題に直面した人がこの情報を観ても解決できない可能性があると思います。そのため、情報の有用度は低めであるといわざるを得ません。しかし、解決できた方法の1パターンでも公開することにより、類似した問題に直面した人の助けになればと思い情報を公開することにしました。参考になる方がおられれば幸いです。
2011/04/27