Для миграции необходимо сделать PST файлы из хранилища MDaemon.
Есть 2 проблемы
1. Программа которая могла бы делать это в пакетном режиме.
2. Русские имена папок ИМАП которые созданы в виде UTF7-Imap и естественно не читаются.
Большинство программ для пакетной конвертации MDAEMON(MSG)-PST не умеют на лету декодировать имена папок из UTF7-Imap в рускоязычные символы. Нужен конвертер.
На просторах интернета найдено 2 способа конвертировать символы из UTF7-Imap в читаемый текст.
#################################################################################################
Алгоритм кодирования имён папок: Текст > UTF7; & > &-; / > ,; + > &
echo '.&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-' \
| sed 's/&\([^-]\)/+\1/g;s/&-/&/g;s/,/\//g' \
| iconv -f UTF7 -t UTF8
так же возможно использовать такой алгоритм замещения символов.
sed -e 's:&:+:g' -e 's:,:/:g' -e 's:++:+-+:g'
#################################################################################################
Оба эти способа работают под линукс. Нас это же не смущает? Нисколько.
1. Останавливаем работу MDAEMON (Чтобы не появлялись новые письма и небыло расхождения)
2. Копируем папку с письмами в отдельный каталог, на всякий случай если что то пойдет не так. Чтобы можно было откатить если что то пойдет не так.
3. Расшариваем по сети папку.
4. Устанавливаем на какой то компьютер или виртуальную машину линукс (Debian10)
5. Подключаемся к компьютеру Debian10 по SSH
6. Монтируем расшаренную папку в линукс машину. ниже указан скрипт которым монтируется папка.
Код:
#!/bin/bash
vusrnm="UserName"
vpasswd="UserPassword"
vdomain="domain.name"
vdirmode=0777 # Rights to folders
vfilemode=0777 # Rights to files
nfspath="//ip.ad.dr.es/mailsharename"
mountpath="/mnt/mailshare"
Код:
#!/bin/bash
#Set Variables
searchpath="/mnt/mailshare/" # mail share
searchmask="&*" # you can change this as needed
tempfile="/mnt/mailshare/dirname.txt" # TMP File
convertfile="/mnt/mailshare/convert.txt" # TMP file
csvfile="/mnt/mailshare/list_folders.csv" # just list of folders
execfile="/mnt/mailshare/execcomm.txt" # Commads that will execute if you whant to repeat
revertfile="/mnt/mailshare/revertcomm.txt" # Command that will rename backwards if you do something wrong
logfile="/mnt/mailshare/rename.log" # Log file so you can check
errfile="/mnt/mailshare/rename.err" # Only errors will be writed
# Make list of RU UTF-7-IMAP Folders
find ${searchpath} -type d -name ${searchmask} > ${tempfile} # Search for directories and save it as full path string in tmp file
# Rename procedure
while IFS= read -r line
do
# Rename and save to tmp file
echo ${line} | sed -e 's:&:+:g' -e 's:,:/:g' -e 's:++:+-+:g' | iconv -f UTF7 -t UTF8 > ${convertfile}
# get string as variable
convertedname=$(cat ${convertfile})
echo ${line} # This is just for visible script effect
echo ${convertedname}
# write line in CSV log file
echo "mv; ${line}; ${convertedname};" >> ${csvfile}
# Write line in txt command file so you can exec it later
echo mv "${line}" "${convertedname}" >> ${execfile}
# Write line in revers rename file so you can undo rename procedure
echo mv "${convertedname}" "${line}" >> ${revertfile}
#################################################################################################
# WARNING Uncomment below will rename all directories finded in ${searchpath} #
# Please make test run with commented string and check ${csvfile} for errors. #
# mv "${line}" "${convertedname}" #
#################################################################################################
done < ${tempfile}
8. результатом выполнения скрипта будет переименованные папки и несколько тестовых и лог файлов которые будут хранится там где лежит почта.
9. ПОКА НЕ СДЕЛАН Лог ошибок переименования.
10. Далее запускаем ПО миграции мы остановились на "6uupr.MDaemon.Migrator.9.7.rar" его можно найти\купить в интернете.
11. Будьте внимательны, конвертация 90 гб почты занимает около 4-5 часов. Планируйте миграцию на выходные или праздники т.к. явно почта занимает больше места чем 90 ГБ.
11. По результату вы получаете PST файлы с правильными русскими наименованиями, которые можно загрузить в exchange.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Миграция Хранилища почты MDAEMON (MSG) в EXCHANGE (PST)
Использованные материалы.
https://parallel.uran.ru/node/553
https://github.com/Yar4e/lsmaildir/blob/master/lsm...
Для миграции необходимо сделать PST файлы из хранилища MDaemon.
Есть 2 проблемы
1. Программа которая могла бы делать это в пакетном режиме.
2. Русские имена папок ИМАП которые созданы в виде UTF7-Imap и естественно не читаются.
Большинство программ для пакетной конвертации MDAEMON(MSG)-PST не умеют на лету декодировать имена папок из UTF7-Imap в рускоязычные символы. Нужен конвертер.
На просторах интернета найдено 2 способа конвертировать символы из UTF7-Imap в читаемый текст.
#################################################################################################
Алгоритм кодирования имён папок: Текст > UTF7; & > &-; / > ,; + > &
echo '.&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-' \
| sed 's/&\([^-]\)/+\1/g;s/&-/&/g;s/,/\//g' \
| iconv -f UTF7 -t UTF8
так же возможно использовать такой алгоритм замещения символов.
sed -e 's:&:+:g' -e 's:,:/:g' -e 's:++:+-+:g'
#################################################################################################
Оба эти способа работают под линукс. Нас это же не смущает? Нисколько.
1. Останавливаем работу MDAEMON (Чтобы не появлялись новые письма и небыло расхождения)
2. Копируем папку с письмами в отдельный каталог, на всякий случай если что то пойдет не так. Чтобы можно было откатить если что то пойдет не так.
3. Расшариваем по сети папку.
4. Устанавливаем на какой то компьютер или виртуальную машину линукс (Debian10)
5. Подключаемся к компьютеру Debian10 по SSH
6. Монтируем расшаренную папку в линукс машину. ниже указан скрипт которым монтируется папка.
Код:
#!/bin/bash
vusrnm="UserName"
vpasswd="UserPassword"
vdomain="domain.name"
vdirmode=0777 # Rights to folders
vfilemode=0777 # Rights to files
nfspath="//ip.ad.dr.es/mailsharename"
mountpath="/mnt/mailshare"
sudo mkdir ${mountpath}
sudo mount -t cifs -o username=${vusrnm},password=${vpasswd},dir_mode=${vdirmode},file_mode=${vfilemode} ${nfspath} ${mountpath}
7. Далее нужно выполнить скрипт переименования.
Код:
#!/bin/bash
#Set Variables
searchpath="/mnt/mailshare/" # mail share
searchmask="&*" # you can change this as needed
tempfile="/mnt/mailshare/dirname.txt" # TMP File
convertfile="/mnt/mailshare/convert.txt" # TMP file
csvfile="/mnt/mailshare/list_folders.csv" # just list of folders
execfile="/mnt/mailshare/execcomm.txt" # Commads that will execute if you whant to repeat
revertfile="/mnt/mailshare/revertcomm.txt" # Command that will rename backwards if you do something wrong
logfile="/mnt/mailshare/rename.log" # Log file so you can check
errfile="/mnt/mailshare/rename.err" # Only errors will be writed
# Make list of RU UTF-7-IMAP Folders
find ${searchpath} -type d -name ${searchmask} > ${tempfile} # Search for directories and save it as full path string in tmp file
# Cean and prepare log files
echo "command;raw;converted" >"${csvfile}"
echo > ${execfile}
echo > ${revertfile}
echo > ${logfile}
echo > ${errfile}
# Rename procedure
while IFS= read -r line
do
# Rename and save to tmp file
echo ${line} | sed -e 's:&:+:g' -e 's:,:/:g' -e 's:++:+-+:g' | iconv -f UTF7 -t UTF8 > ${convertfile}
# get string as variable
convertedname=$(cat ${convertfile})
echo ${line} # This is just for visible script effect
echo ${convertedname}
# write line in CSV log file
echo "mv; ${line}; ${convertedname};" >> ${csvfile}
# Write line in txt command file so you can exec it later
echo mv "${line}" "${convertedname}" >> ${execfile}
# Write line in revers rename file so you can undo rename procedure
echo mv "${convertedname}" "${line}" >> ${revertfile}
#################################################################################################
# WARNING Uncomment below will rename all directories finded in ${searchpath} #
# Please make test run with commented string and check ${csvfile} for errors. #
# mv "${line}" "${convertedname}" #
#################################################################################################
done < ${tempfile}
8. результатом выполнения скрипта будет переименованные папки и несколько тестовых и лог файлов которые будут хранится там где лежит почта.
9. ПОКА НЕ СДЕЛАН Лог ошибок переименования.
10. Далее запускаем ПО миграции мы остановились на "6uupr.MDaemon.Migrator.9.7.rar" его можно найти\купить в интернете.
11. Будьте внимательны, конвертация 90 гб почты занимает около 4-5 часов. Планируйте миграцию на выходные или праздники т.к. явно почта занимает больше места чем 90 ГБ.
11. По результату вы получаете PST файлы с правильными русскими наименованиями, которые можно загрузить в exchange.