Mailmigrering från IMAP till MS Exchange 2010
Ett intressant projekt som jag varit med i är att byta och konsolidera diverse IMAP baserade mailsystem till MS Exchange 2010.
Dom mailsystem som vi gick ifrån baserade sig på: Oracle Collaboration Suit (ca: 7000 mailboxar), IMail (ca 150 mailboxar), dovecot (ca 100 mailboxar), uw-imap (ca 300 mailboxar) och MDaemon (ca 150 mailboxar).
Vi flyttade alla mailboxar via IMAP med ett verktyg som heter imapsync som gjorde sitt jobb efter lite “twekningar”.
Den stora utmaning var att Exchangen bara godtar vissa flaggor som mailklienter kan sätta på ett mail och träffar den på ett mail med sådana flaggor så tas mailet inte imot. Dom andra imap servrarna som vi flyttade ifrån var mera tolleranta mot detta vilket innebar att vi hadde ett antal mail med, enligt Exchange, felaktiga flaggor. Lösningen för oss var att ta bort alla flaggor som inte börjar med \.
Imapsync tar en användare brevlåda i taget och eftersom vi flyttade som mest 7000 användare från ett system så skulle det ta år om vi inte kunde köra flera användare sammtidigt. Efter lite googlande så hittade vi PPSS från google som kan köra ett antal trådar sammtidigt från en lista av jobb som man vill göra. Mycket behändigt.
Kör man imapsync igen så kommer den att jämföra vad som redan är överflyttat och bara kopiera det som finns i källsystemet och som inte finns i målsystemet.
Själva scriptet som kopierade en användares data kan du hämta ner här: migrate-user.tar.gz .
Argument ett är en fil med mappningen “målanvändare källanvändare” och argument två är målanvändare. (källanvändare är användaren som vi kopierar i från och målanvändare är användaren vi kopierar till).
Att tänka på är att imapsync kan använda mycket minne, vi har sett att den tagit runt 2GB RAM beroende på storleken på användarens brevlåda som den håller på med.
Har nu skapat RPM paket för imapsync, skall försöka uppdatera det när det släpps ny version av imapsync:
imapsync-1.333-1.noarch.rpm och imapsync-1.333-1.src.rpm
imapsync-1.327-1.noarch.rpm och imapsync-1.327-1.src.rpm
imapsync-1.321-1.noarch.rpm och imapsync-1.321-1.src.rpm
imapsync-1.315-1.noarch.rpm och imapsync-1.315-1.src.rpm
imapsync-1.311-1.noarch.rpm och imapsync-1.311-1.src.rpm
imapsync-1.310-1.noarch.rpm och imapsync-1.310-1.src.rpm