Este artículo le mostrará cómo transferir correo entre diferentes servidores usando la utilidad IMAPSync a través de una interfaz de usuario primitiva.
En el servidor de destino, debe tener un buzón con el nombre de usuario y la contraseña requeridos. Antes de usar Imapsync, asegúrese de instalarlo (https://imapsync.lamiral.info/#install).
Debido a la prohibición de la organización de usar contraseñas de los buzones de correo de los empleados en el script, pasamos el proceso de migración al usuario. Para ello, se ha desarrollado una interfaz de usuario web, que consta de un módulo de formulario (gis.html) y un lanzador de scripts imapsync (gis.php). El llenado de los servidores imap se puede automatizar analizando el contenido del campo de nombre del buzón. Usar Fetchmail como un complemento de roundcube está fuera de discusión. No he encontrado un análisis coherente detallado de este tema.
La interfaz web consta de campos con información sobre buzones, un área de salida para los botones de operación y control (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>Lanzador de scripts 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))."\n\n";
}//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!");
?>
El script de migración de buzones de correo (startimapsync.sh) acepta parámetros de línea de comando: inicios de sesión y contraseñas para el servidor imap de los buzones de correo de origen y destino, respectivamente.
#!/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