Migration-Evolution-Thunderbird-Icedove, version 1
parent
71fa9e34b5
commit
2f56ba584c
367
Migration-Evolution-Thunderbird-Icedove.md
Normal file
367
Migration-Evolution-Thunderbird-Icedove.md
Normal file
@ -0,0 +1,367 @@
|
|||||||
|
How to migrate from Evolution to Thunderbird/Icedove
|
||||||
|
====================================================
|
||||||
|
|
||||||
|
Here is a step by step procedure with script to migrate from Evolution
|
||||||
|
to Thunderbird/Icedove. This will keep ALL datas (mail, calendar
|
||||||
|
entries, tasks, contacts) as well as keeping mail status (important,
|
||||||
|
read, replied, etc.) thanks to a script that I developed. This procedure
|
||||||
|
has been done for Debian Sid but has command for Ubuntu Lucid as well.
|
||||||
|
It was tested with Thunderbird/Icedove 3.1 and Evolution 2.28 to 2.32.
|
||||||
|
|
||||||
|
1. Backup Evolution and prepare the migration
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
### 1.1. Backup
|
||||||
|
|
||||||
|
\- Put evolution in offline mode
|
||||||
|
- Backup from the GUI or use :
|
||||||
|
|
||||||
|
/usr/lib/evolution/2.32/evolution-backup --backup ~/USERNAME-evolution.tar.gz
|
||||||
|
|
||||||
|
|
||||||
|
If it hangs you can kill it once you saw the following message :
|
||||||
|
|
||||||
|
** Message: rm /home/letic/evolution.dir
|
||||||
|
|
||||||
|
### 1.2. Export data that can’t be imported straight away
|
||||||
|
|
||||||
|
Export all contacts from Evolution by right clicking on each addressbook
|
||||||
|
->Save to vcard
|
||||||
|
|
||||||
|
### 1.3. Disable completely Evolution
|
||||||
|
|
||||||
|
- Logoff from the session (avoid issue with the clock applet)
|
||||||
|
- Log in as the user in a console (Ctrl+Alt+F1)
|
||||||
|
mkdir backup
|
||||||
|
mv ~/.gconf/apps/evolution ~/backup/evolution_gconf
|
||||||
|
# For Evolution >= 2.30
|
||||||
|
mv ~/.config/evolution/ ~/backup/evolution_config
|
||||||
|
mv ~/.local/share/evolution ~/backup/evolution_data
|
||||||
|
# For Lucid (evolution 2.28
|
||||||
|
mv ~/.evolution ~/backup/evolution_data
|
||||||
|
|
||||||
|
|
||||||
|
This will make sure that you have no entries left in the calendar
|
||||||
|
and that you won’t retrieve your mail by mistake in Evolution.
|
||||||
|
|
||||||
|
2. Install Thunderbird/Icedove + lightning/iceowl + enigmail
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
### 2.1. On debian
|
||||||
|
|
||||||
|
- Install all required packages
|
||||||
|
aptitude install icedove iceowl-extension
|
||||||
|
|
||||||
|
- Optional packages :
|
||||||
|
- enigmail for PGP support
|
||||||
|
- icedove-l10n-XX and iceowl-l10n-XX where XX stands for your
|
||||||
|
locale
|
||||||
|
|
||||||
|
### 2.2. On Lucid
|
||||||
|
|
||||||
|
It is a bit more annoying as the lightning extension is missing.
|
||||||
|
|
||||||
|
- Install Thunderbird
|
||||||
|
aptitude install thunderbird
|
||||||
|
|
||||||
|
- Optional packages :
|
||||||
|
- enigmail for PGP support
|
||||||
|
- enigmail-locale-XX and thunderbird-locale-XX where XX stands for
|
||||||
|
your locale
|
||||||
|
- Install the lightning extension (no locales available in Ubuntu)
|
||||||
|
- First you require xul-ext-calendar from natty
|
||||||
|
wget "http://www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu//pool/universe/l/lightning-extension/xul-ext-calendar-timezones_1.0~b2+build2+nobinonly-0ubuntu2_all.deb"
|
||||||
|
dpkg -i xul-ext-calendar-timezones_1.0~b2+build2+nobinonly-0ubuntu2_all.deb
|
||||||
|
|
||||||
|
- Then for 32bits
|
||||||
|
wget "http://www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu//pool/universe/l/lightning-extension/xul-ext-lightning_1.0~b2+build2+nobinonly-0ubuntu2_i386.deb"
|
||||||
|
dpkg -i xul-ext-lightning_1.0~b2+build2+nobinonly-0ubuntu2_i386.deb
|
||||||
|
|
||||||
|
- Or for 64 bits
|
||||||
|
wget "http://www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu//pool/universe/l/lightning-extension/xul-ext-lightning_1.0~b2+build2+nobinonly-0ubuntu2_amd64.deb"
|
||||||
|
dpkg -i xul-ext-lightning_1.0~b2+build2+nobinonly-0ubuntu2_amd64.deb
|
||||||
|
|
||||||
|
|
||||||
|
It is always better to use the packaged version instead of the
|
||||||
|
xpi from the addons website. Especially as there is no 64bits
|
||||||
|
version of lightning available for download on the official
|
||||||
|
website.
|
||||||
|
|
||||||
|
3. Prepare Thunderbird/Icedove for the migration
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
- Run Thunderbird/Icedove and create a fake imap access manually
|
||||||
|
- Optional : set incoming/outgoing mail to UTF-8 in Edit ->
|
||||||
|
Preferences ->Display ->Advanced
|
||||||
|
|
||||||
|
### 3.1. Filtaquilla
|
||||||
|
|
||||||
|
Filtaquilla is an addon that enhanced filters to be able to handle regex
|
||||||
|
expressions and even javascript filters. These steps have to be done
|
||||||
|
before importing the mail or the “x-evolution” header won’t be in the
|
||||||
|
DB.
|
||||||
|
|
||||||
|
- Go to Edit ->Preferences ->Advanced ->Config editor
|
||||||
|
![](Icedove_Advanced_Preferences.png)
|
||||||
|
and search for the “mailnews.customDBHeaders” preference and set it
|
||||||
|
to “x-evolution”
|
||||||
|
![](Icedove_about_config.png)
|
||||||
|
- Get the Filtaquilla plugin from
|
||||||
|
[here](https://addons.mozilla.org/en-US/thunderbird/addon/filtaquilla/)
|
||||||
|
or run
|
||||||
|
wget "https://addons.mozilla.org/thunderbird/downloads/latest/10052/addon-10052-latest.xpi?src=addondetail" -O "filtaquilla-1.1.0-tb+sm.xpi"
|
||||||
|
|
||||||
|
- In Tools ->Addons ->Filtaquilla ->Preferences check
|
||||||
|
Javascript
|
||||||
|
![](Icedove_FiltaQuilla_preferences.png)
|
||||||
|
- Close Thunderbird/Icedove
|
||||||
|
|
||||||
|
4. Migrating your data
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
### 4.1. Mails
|
||||||
|
|
||||||
|
- Copy mbox files
|
||||||
|
cp -ax ~/backup/evolution_data/mail/local/* ~/.icedove/PROFILE/Mail/Local\ Folders/
|
||||||
|
|
||||||
|
<!-- -->
|
||||||
|
|
||||||
|
- Remove all unneeded files
|
||||||
|
cd ~/.icedove/PROFILE/Mail/Local\ Folders/
|
||||||
|
find . -name "*ibex*" -delete
|
||||||
|
find . -name "*.cmeta" -delete
|
||||||
|
rm -r folders.db .#evolution.sbd/ Outbox Templates
|
||||||
|
|
||||||
|
<!-- -->
|
||||||
|
|
||||||
|
- Optional : Convert your mail files to UTF-8
|
||||||
|
**Be careful as this could do more harm than good !**
|
||||||
|
- First check your mailboxes encoding
|
||||||
|
find . -type f -exec file {} \;
|
||||||
|
|
||||||
|
- Convert to UTF-8 (for example if ALL you mailboxes are
|
||||||
|
ISO-8859-15)
|
||||||
|
find . -type f -print0 | while read -d $'\0' FILE; do iconv -f ISO-8859-15 -t UTF-8 "$FILE" > "$FILE.utf8"; mv "$FILE" "$FILE.old"; mv "$FILE.utf8" "$FILE"; done
|
||||||
|
|
||||||
|
### 4.2. Mail status
|
||||||
|
|
||||||
|
- Go to Tools ->Message Filters
|
||||||
|
- Select “Local Folders” and add a new message filter :
|
||||||
|
- Type : Javascript
|
||||||
|
- Matches
|
||||||
|
- Content
|
||||||
|
logger = 'MESSAGE : ' + message.getStringProperty('subject') + '\n';
|
||||||
|
let evohdr = message.getStringProperty('x-evolution');
|
||||||
|
logger += 'THUNDERBIRD FLAGS BEFORE : ' + message.flags + '\n';
|
||||||
|
evostatus = evohdr.substring(evohdr.length - 4, evohdr.length);
|
||||||
|
logger += 'EVOLUTION HEXA : ' + evostatus + '\nSTATUS : \n';
|
||||||
|
var hexevostatus = parseInt(evostatus, 16);
|
||||||
|
var flags = message.flags;
|
||||||
|
deleted = false;
|
||||||
|
if (hexevostatus & 1<<0) {
|
||||||
|
logger += ' * is answered\n';
|
||||||
|
flags = flags | 1<<1
|
||||||
|
}
|
||||||
|
if (hexevostatus & 1<<1) {
|
||||||
|
logger += ' * is deleted\n';
|
||||||
|
deleted = true;
|
||||||
|
}
|
||||||
|
if (hexevostatus & 1<<3) {
|
||||||
|
logger += ' * is marked as important\n';
|
||||||
|
flags = flags | 1<<2
|
||||||
|
}
|
||||||
|
if (hexevostatus & 1<<4) {
|
||||||
|
logger += ' * is read\n';
|
||||||
|
flags = flags | 1<<0
|
||||||
|
}
|
||||||
|
if (hexevostatus & 1<<5) {
|
||||||
|
logger += ' * has attachment(s)\n';
|
||||||
|
flags = flags | 1<<28
|
||||||
|
}
|
||||||
|
if (hexevostatus & 1<<7) {
|
||||||
|
logger += ' * is junk\n';
|
||||||
|
message.setStringProperty('junkscore', 100);
|
||||||
|
message.setStringProperty('junkscoreorigin','user');
|
||||||
|
}
|
||||||
|
if (hexevostatus & 1<<11) {
|
||||||
|
logger += ' * has been marked as not junk (no action)\n';
|
||||||
|
}
|
||||||
|
if (hexevostatus & 1<<12) {
|
||||||
|
logger += ' * has been forwarded\n';
|
||||||
|
flags = flags | 1<<12
|
||||||
|
}
|
||||||
|
message.flags = flags;
|
||||||
|
logger += 'THUNDERBIRD FLAGS SET TO : ' + flags + '\n';
|
||||||
|
logger +='WILL DELETE ? : ' + deleted;
|
||||||
|
Cc["@mozilla.org/consoleservice;1"]
|
||||||
|
.getService(Ci.nsIConsoleService)
|
||||||
|
.logStringMessage(logger);
|
||||||
|
(deleted)
|
||||||
|
|
||||||
|
- Action : Delete
|
||||||
|
- Run the Javascript filter on all your imported folders to recover
|
||||||
|
your mail status. It will perform the following action :
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr class="header">
|
||||||
|
<th>Status in Evolution</th>
|
||||||
|
<th>Action in Thunderbird/Icedove</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>Unread emails</td>
|
||||||
|
<td>Do nothing</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>Read emails</td>
|
||||||
|
<td>Mark as read</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>Answered emails</td>
|
||||||
|
<td>Mark as replied</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>Forwarded emails</td>
|
||||||
|
<td>Mark as transferred</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>Mark as important</td>
|
||||||
|
<td>Starred</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>Has attachments</td>
|
||||||
|
<td>Same</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="odd">
|
||||||
|
<td>Marked as SPAM</td>
|
||||||
|
<td>Manually set the junkscore to 100 and mark for deletion</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="even">
|
||||||
|
<td>Deleted</td>
|
||||||
|
<td>Mark them for deletion</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
- All mails marked for deletion (junk/deleted) will then be deleted as
|
||||||
|
part of the filter action. All these status are cumulative in both
|
||||||
|
program even if Thunderbird/Icedove is the only one that actually
|
||||||
|
display them. It will keep the flags set by Thunderbird/Icedove
|
||||||
|
during the first import (especially “hasRe” status).
|
||||||
|
- Unfortunately there is no way to un a filter on several folders (or
|
||||||
|
all subfolders). This might be possible as an extension but as I had
|
||||||
|
limited time to perform it this wasn’t done. The quickest way is to
|
||||||
|
run through your mailbox with the keyboard and type “Alt+T” then R.
|
||||||
|
- When restarting the program or clicking on another folder and back
|
||||||
|
the folder’s read count will get updated EXCEPT if you selected the
|
||||||
|
threaded display.
|
||||||
|
|
||||||
|
### 4.3. Contacts
|
||||||
|
|
||||||
|
- Get the [More Functions for
|
||||||
|
AddressBook](http://nic-nac-project.de/~kaosmos/morecols-en.html)
|
||||||
|
plugin
|
||||||
|
wget http://nic-nac-project.de/~kaosmos/morefunctionsforAB-TB3-0.6.4.1.xpi
|
||||||
|
|
||||||
|
- Install the addon in Thunderbird/Icedove
|
||||||
|
- Open the addressbook and right click in the blank contact list list
|
||||||
|
(right of the screen) ->“Import vcard/vcf”
|
||||||
|
- Once you selected the script it will take some time to import so
|
||||||
|
please click continue the script for as long as it takes
|
||||||
|
|
||||||
|
### 4.4. Calendars
|
||||||
|
|
||||||
|
- Open the calendar and go to “Event and Tasks” ->Import.
|
||||||
|
- Your former evolution calendar will be in
|
||||||
|
<sub>/backup/evolution\_data/calendar/\[local/\]system\ (if\ you\ have\ several\ you\ will\ find\ them\ in</sub>/backup/evolution\_data/calendar/\[local/\]XXXXXXXXXX.XXXX.X@YOURPC)
|
||||||
|
|
||||||
|
### 4.5. Tasks
|
||||||
|
|
||||||
|
- Same as for the Calendar, open the tasks lists and go to “Event and
|
||||||
|
Tasks” ->Import
|
||||||
|
- The tasks are in
|
||||||
|
<sub>/backup/evolution\_data/tasks/system\ and</sub>/backup/evolution\_data/tasks/XXXXXXXXXX.XXXX.X@YOURPC
|
||||||
|
|
||||||
|
### 4.6. Birthday calendar
|
||||||
|
|
||||||
|
If you miss the birthday calendar from Evolution install
|
||||||
|
[Thunderbirthday](https://addons.mozilla.org/en-us/thunderbird/addon/thunderbirthday/)
|
||||||
|
|
||||||
|
### 4.7. Create your mail accounts
|
||||||
|
|
||||||
|
That’s it you can now create your mail accounts in Thunderbird and get
|
||||||
|
drown by all the mails you have received since closing Evolution.
|
||||||
|
|
||||||
|
### 4.8. Filters
|
||||||
|
|
||||||
|
I redid manually my filters because I wanted to clean them up, but a
|
||||||
|
simple XSL to use with xsltproc should be easy to do if you really want
|
||||||
|
to keep your filters. If you need some help to start :
|
||||||
|
|
||||||
|
- Evolution >= 2.30 filters are in a XML file located in :
|
||||||
|
~/.config/evolution/mail/filters.xml
|
||||||
|
- Evolution 2.28 filters are in ~/.evolution/mail/filters.xml
|
||||||
|
- Thunderbird/Icedove filters are stored in
|
||||||
|
<sub>/.icedove/PROFILE/Mail/Local\ Folders/msgFilterRules.dat,\ other\ POP\ accounts\ are\ in\ :</sub>/.icedove/PROFILE/Mail/POPACCOUNT/msgFilterRules.dat
|
||||||
|
and IMAP accounts filters are in :
|
||||||
|
~/.icedove/PROFILE/ImapMail/IMAPACCOUNT/msgFilterRules.dat
|
||||||
|
- Thunderbird/Icedove filters file has the following structure :
|
||||||
|
version="9"
|
||||||
|
logging=
|
||||||
|
name=
|
||||||
|
enabled=
|
||||||
|
type=
|
||||||
|
action=
|
||||||
|
actionValue=
|
||||||
|
condition=
|
||||||
|
name=
|
||||||
|
enabled=
|
||||||
|
type=
|
||||||
|
action=
|
||||||
|
actionValue=
|
||||||
|
condition=
|
||||||
|
...
|
||||||
|
|
||||||
|
5. Integrate better in Gnome
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
### 5.1. Get calendar events in the gnome-clock applet
|
||||||
|
|
||||||
|
Install the
|
||||||
|
[evolution-mirror](https://addons.mozilla.org/en-US/thunderbird/addon/evolution-mirror/)
|
||||||
|
plugin.
|
||||||
|
|
||||||
|
### 5.2. Integration in Ubuntu
|
||||||
|
|
||||||
|
Evolution-mirror should already give you a great integration with gnome
|
||||||
|
but if you want a better integration in Ubuntu see this
|
||||||
|
[post](http://www.techgarten.com/ubuntu/replace-evolution-thunderbird-completely-ubuntu/)
|
||||||
|
|
||||||
|
6. References
|
||||||
|
-------------
|
||||||
|
|
||||||
|
These are just some links/docs that helped me developing the script, if
|
||||||
|
you wondered where did I found these numbers :
|
||||||
|
|
||||||
|
- [Evolution (Camel) Messages
|
||||||
|
flags](http://developer.gnome.org/camel/stable/CamelFolderSummary.html)
|
||||||
|
- Mozilla doesn’t have a online code browser so I had to pull the
|
||||||
|
source to get their flags. In the nsMsgMessageFlags.h file you will
|
||||||
|
find the following useful flags definition :
|
||||||
|
class NS_NO_VTABLE NS_SCRIPTABLE nsMsgMessageFlags {
|
||||||
|
public:
|
||||||
|
|
||||||
|
NS_DECLARE_STATIC_IID_ACCESSOR(NS_MSGMESSAGEFLAGS_IID)
|
||||||
|
|
||||||
|
enum { Read = 1U };
|
||||||
|
|
||||||
|
enum { Replied = 2U };
|
||||||
|
|
||||||
|
enum { Marked = 4U };
|
||||||
|
...
|
||||||
|
enum { Forwarded = 4096U };
|
||||||
|
...
|
||||||
|
enum { Attachment = 268435456U };
|
||||||
|
|
Loading…
Reference in New Issue
Block a user