1"use strict";(self.webpackChunk_marcnuri_blog_marcnuri_com=self.webpackChunk_marcnuri_blog_marcnuri_com||[]).push([[3470],{67874:function(e,a,n){n.r(a),n.d(a,{default:function(){return m}});var r=n(28453),t=n(96540);function o(e){const a=Object.assign({h2:"h2",a:"a",p:"p",h3:"h3",img:"img",code:"code",pre:"pre",em:"em"},(0,r.RP)(),e.components);return t.createElement(t.Fragment,null,t.createElement(a.h2,{id:"introduction"},"¿Una ",t.createElement(a.a,{href:"https://github.com/manusa/mnIMAPSync"},"herramienta")," más para sincronizar correo ",t.createElement(a.a,{href:"https://github.com/manusa/mnIMAPSync"},"IMAP"),"?"),"\n",t.createElement(a.p,null,"Hace un par de años, cuando liberamos por primera vez mnIMAPSync, ya habÃa varias herramientas disponibles para\nsincronizar el correo electrónico. El problema con la mayorÃa de ellas es que cuando se hacen copias de\nseguridad o migraciones incrementales del correo, algunos mensajes,\nen ",t.createElement(a.a,{href:"https://tools.ietf.org/html/rfc2822"},"general")," aquellos que no está conforme a\nlas especificaciones del ",t.createElement(a.a,{href:"https://tools.ietf.org/html/rfc3501"},"RFC (3501)"),", se\nduplican en el servidor donde hacemos la copia. Esto se debe principalmente a headers incorrectos o a que el\nmensaje carece de message-id."),"\n",t.createElement(a.p,null,"Al no disponer de ninguna herramienta, tuvimos que programar una que hiciese correctamente el trabajo. La\nprincipal diferencia entre mnIMAPSync y otras soluciones es que mnIMAPSync comprueba varios headers para cada\nmensaje y crea un Ãndice de rápido acceso de manera que cuando el servidor de destino se rastree, los mensajes\nexistentes no se vuelvan a copiar y queden duplicados."),"\n",t.createElement(a.h2,{id:"requisitos"},"Requisitos"),"\n",t.createElement(a.h3,{id:"java"},"Java"),"\n",t.createElement(a.p,null,"Esta herramienta está programada en Java, por lo que será necesario tener\nun ",t.createElement(a.a,{href:"http://java.com/download/"},"JRE")," instalado.\nSi en tu sistema no tienes ninguno instalado,\nvisita ",t.createElement(a.a,{href:"http://www.java.com/download"},"www.java.com/download")," y descarga la última\nversión."),"\n",t.createElement(a.img,{src:"../../images/mnimapsync/java-download.jpg",alt:"Captura de pantalla de la página de descargas de Java"}),"\n",t.createElement(a.p,null,"Sigue las instrucciones de la página para descargar e instalar el entorno de Ejecución Java."),"\n",t.createElement(a.h3,{id:"mnIMAPSync"},"mnIMAPSync"),"\n",t.createElement(a.p,null,"Lo siguiente es descargar ",t.createElement(a.a,{href:"https://github.com/manusa/mnIMAPSync"},"mnIMAPSync"),".\nPuedes descargar la última versión, o el código fuente\ndesde ",t.createElement(a.a,{href:"https://github.com/manusa/mnIMAPSync"},"Github")," y\ncompilar tu propio Jar. Para descargar una versión precompilada visita ",t.createElement(a.a,{href:"https://github.com/manusa/mnIMAPSync#releases"},"https://github.com/manusa/mnIMAPSync#releases")," y descarga la última."),"\n",t.createElement(a.img,{src:"../../images/mnimapsync/mnimapsync-download.jpg",alt:"Captura de pantalla de la página de descargas de mnIMAPSync para Java"}),"\n",t.createElement(a.p,null,"Una vez descargada la distribución en Zip, tienes que extraer el contenido del paquete a un directorio empleando\ntu herramienta preferida."),"\n",t.createElement(a.h2,{id:"ejecutando-el-programa"},"Ejecutando el programa"),"\n",t.createElement(a.p,null,"Este es un programa de lÃnea de comandos, por lo que será necesario una terminal o una ventana de cmd."),"\n",t.createElement(a.p,null,"En windows puedes emplear ",t.createElement(a.code,null,"cmd.exe")," (Inicio->Ejecutar->cmd.exe)"),"\n",t.createElement(a.p,null,"Para usar el programa, simplemente hay que especificar los argumentos requeridos. Puedes encontrar la lista de\ncomandos disponibles en\nla ",t.createElement(a.a,{href:"https://github.com/manusa/mnIMAPSync#command-line-arguments"},"página del proyecto"),"."),"\n",t.createElement(a.p,null,"En este tutorial vamos a migrar una cuenta de correo\nde ",t.createElement(a.a,{href:"http://mail.google.com"},"GMail")," a una cuenta de correo en un servidor personal.\nSi el proceso se ejecuta de forma periódica, cada migración se ejecutará de forma incremental y el proceso\núnicamente copiará los mensajes y carpetas que no existan en el servidor de destino."),"\n",t.createElement(a.pre,null,t.createElement(a.code,{className:"language-bash",title:"bash"}
1,"java -jar mnIMAPSync.jar \\\n --host1 imap.gmail.com --port1 993 \\\n --user1 [email protected] --password1 mypassword --ssl1 \\\n --host2 my.server.com --port2 143 \\\n --user2 [email protected] --password2 backuppassword \\\n --threads 3 --delete\n")),"\n",t.createElement(a.p,null,"El comando anterior sincronizará una cuenta de origen en ",t.createElement(a.em,null,"gmail")," a una cuenta de destino en el servidor\n",t.createElement(a.em,null,"my.server.com")," a modo de copia de seguridad."),"\n",t.createElement(a.p,null,t.createElement(a.code,null,"host1"),", ",t.createElement(a.code,null,"port1"),", ",t.createElement(a.code,null,"user1"),", ",t.createElement(a.code,null,"password1")," y ",t.createElement(a.code,null,"ssl1")," son los parámetros que especifican la conexión al servidor de origen y las opciones de autenticación. En este\ncaso nos conectamos al servidor IMAP de Gmail empleando SSL."),"\n",t.createElement(a.p,null,t.createElement(a.code,null,"host2"),", ",t.createElement(a.code,null,"port2"),", ",t.createElement(a.code,null,"user2")," y ",t.createElement(a.code,null,"password2")," son los\nparámetros que especifican la conexión al servidor de destino y las opciones de autenticación. En este caso nos\nestamos conectando a my.server.com usando una conexión regular no segura (no encriptada mediante SSL)."),"\n",t.createElement(a.p,null,"El parámetro",t.createElement(a.code,null,"threads")," indica el número de hilos o procesos en paralelo que empleará la\naplicación. En este caso serán 3 hilos, asà que el programa hará 3 conexiones independientes al servidor de\norigen y de destino y ejecutará las tareas en paralelo."),"\n",t.createElement(a.p,null,"El parámetro ",t.createElement(a.em,null,t.createElement(a.code,null,"delete"))," es un parámetro opcional que indica si queremos borrar las\ncarpetas y mensajes del servidor de destino que ya no existan en el servidor de origen."),"\n",t.createElement(a.img,{src:"../../images/mnimapsync/mnimapsync-process.jpg",alt:"Captura de pantalla de la ejecución completada de un proceso de mnIMAPSync"}))}var c=function(e){void 0===e&&(e={});const{wrapper:a}=Object.assign({},(0,r.RP)(),e.components);return a?t.createElement(a,e,t.createElement(o,e)):o(e)},s=n(37698);const l=e=>t.createElement(s.TP,{pageContext:e.pageContext},t.createElement(s.n$,Object.assign({comments:e.pageContext.comments,frontmatter:e.pageContext.frontmatter},e)));function m(e){return t.createElement(l,e,t.createElement(c,e))}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.