اس مضمون میں دیکھا جائے گا کہ کس طرح مختلف سرورز کے درمیان میل کی منتقلی IMAPSync یوٹیلیٹی کا استعمال کرتے ہوئے ایک قدیم صارف انٹرفیس کے ذریعے کی جاتی ہے۔
منزل کے سرور پر آپ کے پاس مطلوبہ لاگ ان اور پاس ورڈ کے ساتھ ایک باکس ہونا ضروری ہے۔ Imapsync استعمال کرنے سے پہلے، آپ کو اسے انسٹال کرنا چاہیے (https://imapsync.lamiral.info/#install)۔
چونکہ تنظیم اسکرپٹ میں ملازم کے ای میل پاس ورڈز کے استعمال پر پابندی لگاتی ہے، اس لیے منتقلی کا عمل صارف کو سونپا جاتا ہے۔ اس مقصد کے لیے ایک ویب پر مبنی یوزر انٹرفیس تیار کیا گیا ہے، جس میں ایک فارم ماڈیول (gis.html) اور ایک imapsync اسکرپٹ لانچر ماڈیول (gis.php) شامل ہے۔ بھرنا سرورز IMAP کو میل باکس کے نام کی فیلڈ کے مواد کا تجزیہ کرکے خودکار کیا جاسکتا ہے۔ Fetchmail کو راؤنڈ کیوب پلگ ان کے طور پر استعمال کرنے پر غور نہیں کیا جاتا، کیونکہ مجھے اس مسئلے کا تفصیلی، مربوط تجزیہ نہیں مل سکا۔
ویب انٹرفیس میل باکسز، آپریشن ایگزیکیوشن آؤٹ پٹ ایریا، اور کنٹرول بٹن (gis.html) کے بارے میں معلومات والے فیلڈز پر مشتمل ہے۔

<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) کمانڈ لائن پیرامیٹرز کو قبول کرتا ہے: لاگ ان اور پاس ورڈ، سورس کے imap سرورز اور منزل میل باکسز، بالترتیب۔
#!/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
