דער אַרטיקל וועט קוקן אין ווי צו אַריבערפירן פּאָסט צווישן פאַרשידענע סערווערס ניצן די IMAPSync נוצן דורך אַ פּרימיטיוו באַניצער צובינד.
אויף די דעסטיניישאַן סערווער איר מוזן האָבן אַ קעסטל מיט די פארלאנגט לאָגין און פּאַראָל. איידער איר נוצן Imapsync, איר מוזן ינסטאַלירן עס (https://imapsync.lamiral.info/#install).
זינט די אָרגאַניזאַציע פֿאַרווערט די נוצן פֿון עמפּלויי אימעיל פּאַסווערטער אין דעם סקריפּט, ווערט דער מיגראַציע פּראָצעס דעלעגירט צום באַניצער. אַ וועב-באַזירטער באַניצער אינטערפֿייס איז דעוועלאָפּט געוואָרן פֿאַר דעם צוועק, באַשטייענדיק פֿון אַ פֿאָרעם מאָדול (gis.html) און אַן imapsync סקריפּט לאָנטשער מאָדול (gis.php). אויספֿילן סערווערס IMAP קען ווערן אויטאמאטיזירט דורך אנאליזירן דעם אינהאלט פון דעם פאסטקעסטל נאמען פעלד. ניצן Fetchmail אלס א ראונדקיוב פלאגין ווערט נישט באטראכט, ווייל איך האב נישט געקענט געפינען א דעטאלירטע, קאכערענטע אנאליז פון דעם פראבלעם.
די וועב צובינד באשטייט פון פעלדער מיט אינפֿאָרמאַציע וועגן מיילבאַקסיז, אַן אָפּעראַציע דורכפירונג רעזולטאַט געגנט, און קאָנטראָל קנעפּלעך (גיס.הטמל).

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script>
//запуск скрипта sh из командной строки linux
function isexe() {
var ta = document.getElementById('output');
document.getElementById('output').value += 'Start import, please wait...n';
var source = new EventSource('gis.php');
source.addEventListener('message', function(e) {
if (e.data !== '') {
ta.value += e.data + 'n';
}
}, false);
source.addEventListener('error', function(e) {
source.close();
}, false);
}//isexe
//кнопка Выполнить
function Complete() {
document.cookie = "mail1="+document.maildata.mail1.value;
document.cookie = "pass1="+document.maildata.pass1.value;
document.cookie = "mail2="+document.maildata.mail2.value;
document.cookie = "pass2="+document.maildata.pass2.value;
document.cookie = "msrv1="+document.maildata.msrv1.value;
document.cookie = "msrv2="+document.maildata.msrv2.value;
//alert(document.cookie); // показываем все куки
isexe();
document.cookie = "mail1="+document.maildata.mail1.value+"; max-age=0";
document.cookie = "pass1="+document.maildata.pass1.value+"; max-age=0";
document.cookie = "mail2="+document.maildata.mail2.value+"; max-age=0";
document.cookie = "pass2="+document.maildata.pass2.value+"; max-age=0";
document.cookie = "msrv1="+document.maildata.msrv1.value+"; max-age=0";
document.cookie = "msrv2="+document.maildata.msrv2.value+"; max-age=0";
}//Complete
function ShowCookie() {
alert(document.cookie); // показываем все куки
}
</script>
</head>
<body>
<H1>Миграция почтового ящика</H1>
<FORM NAME="maildata">
<TABLE>
<TR><TD><B>Исходный почтовый ящик:<B></TD>
<TD><INPUT NAME="mail1" SIZE=20 VALUE=""
<TR><TD><B>Пароль:<B>
<TD><INPUT TYPE="password" NAME="pass1" SIZE=20 VALUE=""
<TR><TD><B>IMAP сервер:<B></TD>
<TD><INPUT NAME="msrv1" SIZE=20 VALUE=""<TD>
<TR><TD><B>Конечный почтовый ящик:<B></TD>
<TD><INPUT NAME="mail2" SIZE=20 VALUE=""
<TR><TD><B>Пароль:<B>
<TD><INPUT TYPE="password" NAME="pass2" SIZE=20 VALUE=""
<TR><TD><B>IMAP сервер:<B></TD>
<TD><INPUT NAME="msrv2" SIZE=20 VALUE=""<TD>
</TABLE>
<p>Результат выполнения:<br/><textarea id="output" style="width: 50%; height: 25em;"></textarea></p>
<INPUT TYPE="button" VALUE="Выполнить" onClick="Complete();">
<INPUT TYPE="reset" VALUE="Сброс">
<INPUT TYPE="button" VALUE="Показать cookie" onClick="ShowCookie();">
</FORM>
</body>
</html>imapsync שריפט לאָנטשער (gis.php).
<?php
ob_end_flush();
ini_set("output_buffering", "0");
ob_implicit_flush(true);
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
//вывод в область сообщений
function echoEvent($datatext) {
echo "data: ".implode("ndata: ", explode("n", $datatext))."nn";
}//echoEvent
echoEvent("Start!");
//формируем строку запуска скрипта imapsync с параметрами
$strexe = "/bin/bash /home/user/imapsync/startimapsync.sh "
.htmlspecialchars($_COOKIE["mail1"]).' '
.htmlspecialchars($_COOKIE["pass1"])." "
.htmlspecialchars($_COOKIE["mail2"])." "
.htmlspecialchars($_COOKIE["pass2"])." "
.htmlspecialchars($_COOKIE["msrv1"])." "
.htmlspecialchars($_COOKIE["msrv2"]);
echoEvent($strexe);
//запускаем sh скрипт из командной строки linux
$proc = popen($strexe,'r');
//могут быть ограничения php, поэтому достаточно вывести результат окончания миграции
while (!feof($proc)) {
echoEvent(fread($proc, 4096));
}
echoEvent("Finish!");
?>
די בריווקאַסטן מייגריישאַן שריפט (startimapsync.sh) אַקסעפּץ באַפֿעלן שורה פּאַראַמעטערס: לאָגינס און פּאַסווערדז, ימאַפּ סערווערס פון די מקור און דעסטיניישאַן מיילבאַקסיז, ריספּעקטיוולי.
#!/bin/bash
#переход в каталог откуда был запущен данный скрипт
cd `dirname $0`
#запуск imapsync с нужными параметрами
/home/user/imapsync/./imapsync
#сервер начального почтового ящика, логин, пароль
--host1 $5:993 --user1 $1 --password1 $2
#сервер конечного почтового ящика, логин, пароль
--host2 $6:993 --user2 $3 --password2 $4
#использование шифрования при подключении к серверу
--ssl1 --ssl2
#сопоставление папок
--automap
#первой синхронизируем папку входящих
--folderfirst INBOX
#сопоставление папок
--regextrans2 "s/&BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-/Sent/"
--regextrans2 "s/&BBoEPgRABDcEOAQ9BDA-/Trash/"
--regextrans2 "s/&BCEEPwQwBDw-/Junk/"
--regextrans2 "s/&BCcENQRABD0EPgQyBDgEOgQ4-/Drafts/"
#правильно принимаем не прочитанные письма во Входящих
--regexflag 's/\Unseen//g'
#Сравнение полученных и отправленных писем по параметру Идентификационный номер
--useheader Message-Id
מקור: www.habr.com
