- Задача научиться восстанавливать пропавшие письма в mail-папках,
понять что такое сжатие mail-папки, манипулировать mail-папками и
прочий thunderird-stuff ниже.
-
-
mail-папка - это "Входящие", "Исходящие",
"Удаленные" и другие созданные пользователем. (В
Thunderbird они называются папками но в файловой системе жесткого
диска тоже есть понятие папка, поэтому чтоб не путаться). Каждая
mail-папка представляет собой на жестком диске отдельный,
одноименный файл (за исключением того что "Входящие"
соответствует файл Inbox, "Отправленные" - Sent,
"Черновики" -Draft, "Исходящие" -Unsent
Messages, "Удаленные" - Trash, "Спам" - Junk) на
hdd. Эти файлы Thunderbird хранит здесь
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\
-
-
===========================================================
-
Коротко о главном. Случается что все письма в mail-папке пропадают,
при этом при открытии Thunderbird и нажатии на mail-папку
Thunderbird шуршит винчестером и пишет "содержимое папки
обрабатывается"- если mail-папка большая то эта операция может
занимать минуты, но после обработки ни одно письмо не появляется. И
так повторяется при каждом открытии Thunderbird. Оказывается, чтобы
восстановить все письма в любой mail-папке например "Inbox"
нужно полностью внутри файла Inbox (он текстовый) удалить с
поднятием нижележащего текста все строки :
-
-
X-Mozilla-Status: xxxx
-
(xxxx - некоторое число)
-
или заменить строку на символ "X"
-
-
(не перепутать со строкой X-Mozilla-Status2: - ее трогать не нужно)
-
далее желательно стереть одноименный .msf файл
в данном случае Inbox.msf в той же папке. теперь открываем
Thunderbird , она обрабатывает Inbox и все письма появляются. :)
-
-
Теперь что такое "сжатие" в
Thunderbird. Когда мы выделяем письма в некоторой mail-папке и
удаляем, то фактически письма не удаляются из файла, а только
перестают отображаться в данной mail-папке ( плюс конечно эти письма
копируются в папку "Удаленные" значит место занимаемое
только что удаленными письмами только прибавляется). То что письма
не удалены можно убедиться нажав "перестроить индекс" или
удалив .msf файл. А вот когда нажимаем "сжать" то
удаленные письма из mail-папки действительно удаляются. Thunderbird
делает это так(на примере Inbox): читает Inbox и все файлы не
помеченные как удаленные в Inbox.msf копирует в новый временный
файл, по окончании этого процесса старый Inbox удаляется а временный
файл переименовывается в Inbox. В итоге "сжатие" это очень
полезная операция в Thunderbird но она не сжимает тем способом как
делают 7z,rar,zip, а просто вырезает лишнее.
-
-
О манипуляции mail-папками. Пусть имеем
установленные ящики в Thunderbird
-
тогда
имеем папки
-
-
-
Главная мысль- mail-папка ("входящие", "отправленные"
итп) представляет собой одноименный файл внутри freemail.web, Local
Folders, ilovebender.com, marslink.web. если внутрь них добавить еще
mail-папку ( перекопировав туда файл содержащий mail-папку) то
Thunderbird его успешно подцепить с тем же именем при следующей
загрузке. Например хотим из "from-freemail.web"-"Входящие"
перебросить в "Локальные Папки"-"Inbox-from-freemale.web".
для этого копируем
-
%APPDATA%\Thunderbird\Profiles\9v3yjgo2.default\Mail\freemail.web\Inbox
в
-
%APPDATA%\Thunderbird\Profiles\9v3yjgo2.default\Mail\Local
Folders\Inbox-from-freemail.web. Получаем
-
Или
имеем большую mail-папку "входящие" и хотим ее скопировать
в другую mail-папку (для архива например) а "входящие"
очистить. тогда переименовываем
-
%APPDATA%\Thunderbird\Profiles\9v3yjgo2.default\Mail\freemail.web\Inbox
-
в
-
%APPDATA%\Thunderbird\Profiles\9v3yjgo2.default\Mail\freemail.web\Inbox-1998-2001
-
и создаем пустой файл
-
%APPDATA%\Thunderbird\Profiles\9v3yjgo2.default\Mail\freemail.web\Inbox
-
тогда получим все письма из "входящих" в "Inbox-1998-2001"
и пустую "входящие" куда будут приходить новые письма
-
-
Работа на уровне файлов позволяет легко
подсоединять/удалять/архивировать отдельные mail-папки к действующей
системе. например имеем сохраненный на DVD профиль Thunderbird с
тремя ящиками, каждый по 1Гб. А хотим посмотреть только
"отправленные" из одного ящика. Можно конечно полностью
заменить свой профиль на профиль из DVD , но удобнее просто
скопировать один файл Sent. Добавка: Если есть на диске каталог с
расширением .sbd например Inbox.sbd то это значит (для
Thunderbird) что mail-папки внутри этого каталога являются
дочерними для mail-папки "Inbox" (нужно знать если хотим
понять или восстановить или создать или перестроить структуру mail
папкок внутри ящика). То есть:
-
-
Здесь "A" и "B" являются дочерними для
"Входящие", "C" является дочерним для "A".
то же самое на уровне файлов/каталогов.
-
Inbox в Inbox.sbd имеет дочерние mail-папки
|
A и B дочерние для Inbox
A в A.sbd имеет дочерние mail-папки
|
C дочерняя для A
|
- ===================================================================
-
-
Подробнее:
-
-
соответствие полей которые заполняются при установке ящика и
настроек в thunderbird после установки.
-
во время установки:
|
bender@ilovebender.com - обратный адрес (не
обязан совпадать с ящиком который мы сейчас добавляем для сбора
почты, но по моему нет смысла вводить отличное).
|
-
после установки находится здесь:
-
-
-
во время установки:
|
ilovebender.com - адрес откуда будем
получать/отправлять (не обязаны совпадать) почту.
|
-
после установки для POP3 находится здесь:
-
-
после установки для SMTP находится здесь:
-
-
во время установки:
|
bender - логин для доступа к нашему ящику на
сервере ilovebender.com (как вариант бывает логин
bender@ilovebender.com)
|
-
после установки находится здесь:
-
-
-
во время установки:
|
"имя учетной записи" которое фактически означает
название ящика в списке установленных ящиков для сбора писем в
главном окне thunderbird
|
-
после установки находится здесь:
-
-
-
Как было сказано выше Thunderbird хранит письма внутри папки
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\
-
-
а именно за "Локальные папки" отвечает папка
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\Local Folders
-
-
когда мы добавляем ящик, то его письма будут храниться в папке
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\Name
-
где Name - это имя POP3 сервера которое мы указали при установке
ящика.
-
Таким образом письма для вышеописанного случая : 3 почтовых
ящика(bender@ilovebender.com, lila@freemail.web, ang79@marslink.web)
и Локальные папки
-
будут храниться в папках
-
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\ilovebender.com
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\freemail.web
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\marslink.web
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\Local Folders
-
-
Если заводится два ящика с одинаковым именем pop3 сервера, то к
названию папки Thunderbird добавляет число. например для двух ящиков
на freemail.web были бы созданы папки
-
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\freemail.web
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\freemail.web-1
-
-
внутри каждого ящика есть mail-папки : "Входящие",
"Отправленные", "Удаленные" или в английской
версии "Inbox", "Sent", "Trash". Как
уже было сказано выше письма находящиеся в этих mail-папках хранятся
в соответствующих (одноименных для английской версии) файлах.
Например : "Входящие" для bender@ilovebender.ru
соответствует файл
-
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\ilovebender.com\Inbox
-
-
"Отправленные" для ang79@marslink.web соответствует файл
-
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\marslink.web\Sent
-
-
"Удаленные" для "Локальные папки" соответствует
файл
-
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\Local Folders\Trash
-
-
Если мы внутри mail-папки A создаем другую mail-папку B, то
фактически на диске в каталоге где лежит файл A создается подкаталог
A.sbd и в нем файл B. Например
-
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\Local Folders\A -
файл A
-
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\Local
Folders\A\A.sbd\B - файл B
-
-
Такой момент если мы в Thunderbird удаляем почтовый ящик
(Инструменты-параметры учетной записи-удалить учетную запись) то
весь каталог соответствующие этой учетной записи (этому ящику)
остается на диске а удаляется только пара строчек в конфигурационном
файле Thunderbird
-
-
%APPDATA%\Thunderbird\Profiles\xxx.default\prefs.js
-
-
поэтому при желании эту почту всегда можно подключить прочитать итп.
-
-
Для каждой mail-папки (к примеру "Входящие") существует не
только одноименный (соответствующий) файл (Inbox) содержащий в себе
письма но и одноименный .msf файл (Inbox.msf) содержащий в себе
заголовки писем , статус писем итп. Именно на основе содержимого
.msf файла (Inbox.msf) Thunderbird отображает (или не отображает)
письма в своем окне.
-
Thunderbird создает .msf файл (Inbox.msf) путем обработки основного
файла (Inbox). В .msf файле (Inbox.msf) содержится информация какие
письма были удалены из данной mail-папки ("Входящие"),
поэтому они не отображаются. Поэтому если удалить msf файл или
нажать "перестроить индекс" то удаленные письма тут же
возникнут, если конечно до этого не было произведено так называмое
"сжатие папки". А что такое "сжатие папки" это и
есть настоящее удаление "удаленного" письма не только из
списка в файле .msf (Inbox.msf) но и из основного файла (Inbox). При
этом конечно никакого сжатия в том смысле как мы привыкли zip,rar,7z
не происходит.
-
-
Из вышесказанного происходят удобные возможности по манипуляции с
mail-папками (как описано в самом начале) когда нужно перенести
почту с одной машины на другую, с одной операционной системы на
другую, когда нужно перенести часть почты с одной машины на другую.
-
-
Например в имеющийся работающий Thunderbird нужно добавить
"Входящие" и "Отправленные" с другого
компьютера. Тогда например
-
-
создаем у себя пустой файл
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\Local Folders\new
-
-
создаем каталог
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\Local
Folders\new.sbd
-
-
и в него копируем с другой машины файлы
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\Local
Folders\new.sbd\Inbox
-
%APPDATA%\Thunderbird\Profiles\xxx.default\Mail\Local
Folders\new.sbd\Sent
-
-
открываем Thunderbird и вуаля
-
-
-
-
-
Можно было бы Inbox и Sent перекопировать просто в Local Folders, но
там уже есть файлы (по крайне мере Inbox) и значит нужно было бы
переименовать их например в Inbox.new и Sent.new тогда получили бы
следующее
-
-
-
Но если мы хотим сгруппировать несколько mail-папок то разумно их
скопировать в каталог как сделано было выше в new.sbd (для примера).
однако как уже было сказано просто каталогов внутри Thunderbird не
бывает. Каталог говорит thunderbird что mail-папки внутри каталога
являются дочерними значит должен быть родитель - файл new (так как
каталог new.sbd). если родителя не будет то new\Inbox и new\Sent в
thunderbird отобразятся но без писем внутри и если в thunderbird
нажать на свойства такого new\Inbox то умолчанию будет стоять
кодировка "Арабская IBM-864" которую будет никак не
поменять и кнопка "перестроить индекс" тоже работать не
будет.
-
-
файлы можно спокойно переименовывать. Inbox в Draft итп.
-
-
-
Предположим у нас письма хранились на диске C: и места на нем
осталось мало. Как перенести все ящики с письмами на другой более
большой диск к примеру D:
-
-
Копируем с диска C: папку
-
%APPDATA%\Thunderbird\Profiles
-
-
на диск D:
-
D:\Profiles
-
-
теперь осталось объяснить это Thunderbird.
-
-
Заходим в файл
-
-
%APPDATA%\Thunderbird\profiles.ini
-
[General]
-
StartWithLastProfile=1
-
-
[Profile0]
-
Name=default
-
IsRelative=1
-
Path=Profiles/9v3yjgo2.default
-
-
и меняем его содержимое на
-
-
[General]
-
StartWithLastProfile=1
-
-
[Profile0]
-
Name=default
-
IsRelative=0
-
Path=D:\Profiles\9v3yjgo2.default
-
-
запускаем Thunderird и она уже работает с диском D:,
-
-
после этого можно удалить папку
-
%APPDATA%\Thunderbird\Profiles
-
-
С помощью такого приема можно подключиться и оперативно посмотреть
почту на другом компьютере по сети (если конечно есть доступ и на
удаленном компьютере Thunderbird закрыт) ничего не перекачивая себе.
-
-
Следующее. Бывает (причину пока не знаю) все письма или большая
часть в одной или нескольких mail-папках исчезают.
-
-
Оказывается, чтобы восстановить все письма в любой mail-папке
например "Inbox" нужно полностью внутри файла Inbox (он
текстовый) удалить с поднятием нижележащего текста все строки
:
-
-
X-Mozilla-Status: xxxx
-
(xxxx - некоторое число)
-
или заменить строку на символ "X"
-
-
(не перепутать со строкой X-Mozilla-Status2: - ее трогать не нужно)
-
далее желательно стереть одноименный .msf файл
в данном случае Inbox.msf в той же папке. теперь открываем
Thunderbird , она обрабатывает Inbox и все письма появляются. :)
-
-
Как это сделать, в Windows можно с помощью текстового редактора
предназначенного для работы с большими (очень большими) текстовыми
файлами. Или можно установить Perl (ActivePerl, freeware,
http://www.activestate.com/). Создаем файл-perl-скрипт
-
-
change-win.pl
-
-
$in_file = "D:\\Profiles\\9v3yjgo2.default\\Mail\\Local
Folders\\Inbox.new";
-
$out_file = "D:\\Profiles\\9v3yjgo2.default\\Mail\\Local
Folders\\Inbox.new.mod";
-
-
open(in, "<$in_file") or die "cannot open file";
-
open (out, ">$out_file") or die "Cannot write
file";
-
while ( <in> )
-
{
-
$_=~s/(.*)X-Mozilla-Status:(.*)/X/;
-
print out $_;
-
}
-
close infile;
-
close outfile;
-
-
(обращаю внимание на двойные обратные слэши в пути к файлу).
-
в $in_file, $out_file вставляете ваш путь к файлу.
-
далее из командной строки запускаем этот скрипт.
-
-
C:\bin\perl\perl change-win.pl
-
-
скорость обработки зависит практически только от скорости винчестера
и составила у меня 4,3 MB/s. То есть скажем файл 1 Gb будет
обрабатываться примерно 4 минуты. После того как скрипт закончить
работу можно запустить Thunderbird и убедиться в том что в исходной
mail-папке (в моем случае Sent.new) все как прежде писем нет, а в
обработанной письма появились (Sent.new.mod). Для меня к сожалению,
неясно почему Perl не хочет менять исходный файл и требует
измененный записывать в отдельный. Потому что в Linux это можно и
делается так:
-
-
#perl -pi -e 's/(.*)X-Mozilla-Status:(.*)/X/' Sent.new
-
-
ключ – е выполняет perl команду из команой строки
-
-
-p – выполняет на весь файл
-
-
-i – редактирует файл на месте
-
-
's/(.*)X-Mozilla-Status:(.*)/X/' ------ команда замены--------
-
-
в каждой строке файла если находит ''X-Mozilla-Status:'' то меняет
все символы левее +сам X-Mozilla-Status:+все символы правее на
''X''. То есть строка содержащая в любом месте "X-Mozilla-Status:"
полностью заменяется на "X". Пример
-
-
Было:
-
dskjhfeiufhewfhlwkjhfkjewX-Mozilla-Status:kewljr;lkewjr;lewkrjewr12312
-
станет:
-
X
-
-
perl работает с файлом построчно.
-
-
также в Windows неясно как запустить скрипт чтобы он обработал
скажем все файлы внутри некоторого каталога и его подкаталогов,
потому что когда в ящике много папок то конвертация превращается в
настоящий обезъяний труд, Linux это делается так: переходим в корень
той папки которую хотим обработать и выполняем команду:
-
-
#perl -pi -e 's/(.*)X-Mozilla-Status:(.*)/X/' `find . | grep -v .sbd
| grep -v .dat`
-
-
В Linux скорость обработки уже зависит не только от винчестера и на
том же компьютере (Celeron 1800-256Мб) составила 8,3 MB/s.
-
-
также рекомендую перед запуском скрипта perl или после работы
скрипта (перед открытием thunderbird) удалить соответствующие .msf
файлы так как они все рано теперь должны будут быть обновлены.
-
-
Скорость создания .msf файла (индексирования) со стороны Thunderbird
в Windows составила 3,7 MB/s , то есть файл 1 Gb будет
обрабатываться Thunderbird примерно 4,5 минуты. В итоге полная
обработка файла размером 1GB займет примерно
4(perl)+4,5(Thunderbird)=8,5 минут.
-
-
Такой еще момент, предположим у вас часть Inbox запорчена мусором.
Мне попадался файл у которого последняя треть была заполнена одним и
тем же символом. Thunderbird думал на этой mail-папкой и выдал ноль
писем. Запустил perl . он дошел до мусора подумал и прекратил
работу. потом я открыл текстовым редактором и уже увидел в чем дело.
Однако так как perl в windows записывает изменный файл отдельно то я
имел обработанный Inbox размер две третих от исходного. я его
скормил Thunderbird и он мне прекрасно показал выжившие письма.
-
========================================================
-
в продолжение темы . работать в thunderbird без слез и тормозов
невозможно.
-
как привязать расширение во вложении к приложению. по теории идем в
-
Инструменты-настройки-вложенные файлы-просмотр и редактирование
действий.- окно "действия при загрузке". но тут облом -
нельзя самому добавлять расширения. а можно редактировать только
имеющиеся. да и то частая ситуация thunderbird открывает расширение
неким приложением которое ему взбредет в голову а в этом окошке
"действия при загрузке" все равно остается чисто.
-
тогда лезем в файл Mimetypes.rdf и правим руками формат xml. немного
официальной информации. Но на самом деле ее недостаточно, и
остальное нашлось на канадском сайте одного университета.
Вот кусок из Mimetypes.rdf которого достаточно чтобы связать
расширение с приложением
<RDF:Seq RDF:about="urn:mimetypes:root">
<RDF:li RDF:resource="urn:mimetype:application/msword"/>
</RDF:Seq>
<RDF:Description RDF:about="urn:mimetype:externalApplication:application/msword"
NC:path="/usr/bin/openoffice.org2.4"
NC:prettyName="openoffice.org2.4" />
<RDF:Description RDF:about="urn:mimetypes">
<NC:MIME-types RDF:resource="urn:mimetypes:root"/>
</RDF:Description>
<RDF:Description RDF:about="urn:mimetype:application/msword"
NC:value="application/msword"
NC:editable="true"
NC:description="doc document">
<NC:fileExtensions>doc</NC:fileExtensions>
<NC:fileExtensions>docx</NC:fileExtensions>
<NC:handlerProp RDF:resource="urn:mimetype:handler:application/msword"/>
</RDF:Description>
<RDF:Description RDF:about="urn:mimetype:handler:application/msword"
NC:alwaysAsk="false"
NC:saveToDisk="false"
NC:handleInternal="false"
NC:useSystemDefault="false">
<NC:externalApplication RDF:resource="urn:mimetype:externalApplication:application/msword"/>
</RDF:Description>
-
В данном случае .doc и .docx с /usr/bin/openoffice.org2.4.
Подробнее.
-
application/msword - каждому приложению
сопоставляется некий mime-type. Например для .doc это
application/msword
-
соответствие расширений и mime-types можно посмотреть в инете или в
файле /usr/share/mime/globs.
-
Doc,docx —
расширения, которые относятся к данному mime-type.
-
/usr/bin/openoffice.org2.4 - полный
путь к приложению которым открывать приложение
-
NC:handleInternal="false"-
очень важный параметр, позволяет наплевать на связки mimetypes
операционной системы и использовать исключительно инфо из
Mimetypes.rdf. Без этого параметра удается добавить лишь небольшое
количество расширений в Thunderbird.
-
NC:prettyName="openoffice.org2.4" />
- инфо для окошка (смотри картинку)
-
-
-
Нашпиговав такими блоками Mimetypes.rdf с разными параметрами можно
привязать все необходимые нам расширения с приложениями. Потом можно
придти к себе на работу заменить данный файл и получить теже самые
привязки на другом рабочем месте. Вот что было до
-
-
и стало после.:)
-
-
-
-
-
почему бывает вложения открываются некими программами а данное окно
пустое — потому что файл Mimetypes.rdf содержит ошибки. Также
советую держать всегда копию данного файла отдельно . Во первых на
случай переустанавки Thunderbird, во вторых потому что когда
thunderbird первый раз читает отредактированный вами файл она его
весь перех...т (перегруппировывает) , переделывая наши блоки в свои.
После этого редактировать в дальнейшем такой файл затруднительно.
Гораздо проще сделать изменение в предварительно сохраненном файле и
подсунуть его Thunderbird. Проверено на версиях 1.0.2, 2.0.17.
-
Также при отправке письма с вложением thunderbird заглядывает в файл
mimetypes.rdf чтобы узнать как пометить вложение что по идее
делается чтоб на стороне принимающего знали чем открыть вложение .
Если информацию она не находит то помечает вложение как
application/octetstream . В этом легко убедиться создав новое письмо
, вложив в него rar файл , сохранить в Drafts и посмотрев текст
письма View-Message Source. Если в Mimetypes.rdf есть запись про rar
то в теле письма будет запись
-
Content-Type: application/x-rar;
Если же записи про rar нет то будет
Content-Type: application/octet-stream;
- Однако, если у нас в Mimetypes.rdf
есть запись с rar то вложенный rar файл откроется корректно в
независимости от того какой Content-Type был присовоен этому
вложению отпралялвшей стороной. В чем можно убедиться
экспериментально.
-
На последок полный Mimetypes.rdf с
пояснениями.
:)
то что описано выше хорошо для администраторских задач. для пользователей
выяснилось что есть плагин для этого дела
MIME Edit 0.60
ура!
---------------------------------
еще один плагин решает проблему уведомления о приходе письма в Linux
Mailbox Alert 0.13.1
Сайт управляется системой
uCoz