Maili üleviimine erinevate serverite vahel kasutajaliidese kaudu IMAPSync'i abil

Selles artiklis käsitletakse e-posti edastamise meetodit erinevate serverite vahel IMAPSync utiliidi ja lihtsa kasutajaliidese abil.

Sihtserveris peab olema konto, millel on vajalik kasutajanimi ja parool. Enne Imapsynci kasutamist tuleb see kindlasti installida (https://imapsync.lamiral.info/#install).

Kuna organisatsioon keelab töötajate postkastide paroolide kasutamise skriptis, anname migreerimisprotsessi kasutajale. Selleks on välja töötatud veebipõhine kasutajaliides, mis koosneb vormimoodulist (gis.html) ja imapsynci skripti käivitamise moodulist (gis.php). Täitmine serverid Imapi automaatika on võimalik, analüüsides postkasti nime välja sisu. Fetchmaili kasutamine roundcube pluginina ei ole kaalutud, kuna ma ei leidnud sellele küsimusele põhjalikku ja ühendatud arutelu.

Veebiliides koosneb postkastide teavet sisaldavatest väli, operatsiooni väljundpiirkonnast ja juhtnuppudest (gis.html).

Maili üleviimine erinevate serverite vahel kasutajaliidese kaudu IMAPSync'i abil

<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>Postkasti migratsioon</h1>
<form name="maildata" action="">
   <table>
        <tr><td><b>Algne postkast:<b></td>
            <td><input name="mail1" size="20" value=""
        <tr><td><b>Parool:<b>
            <td><input type="password" name="pass1" size="20" value=""
        <tr><td><b>IMAP server:<b></td>
            <td><input name="msrv1" size="20" value=""<td>
        <tr><td><b>Lõplik postkast:<b></td>
            <td><input name="mail2" size="20" value=""
        <tr><td><b>Parool:<b>
            <td><input type="password" name="pass2" size="20" value=""
        <tr><td><b>IMAP server:<b></td>
            <td><input name="msrv2" size="20" value=""<td>
    </table>
    <p>Teostamise tulemus:<br/><textarea id="output" style="width: 50%; height: 25em;"></textarea></p>
   <input type="button" value="Teha" onclick="Complete();">
    <input type="reset" value="Nullige">
    <input type="button" value="Kuva küpsised" onclick="ShowCookie();">
<input type="hidden" name="trp-form-language" value="et"/></form>
</body>
</html>

Imapsynci skripti käivitamise moodul (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');

 //Väljund sõnumite ala
function echoEvent($datatext) {
  echo "data: ".implode("ndata: ", explode("n", $datatext))."nn";
 } //echoEvent

 echoEvent("Start!");
 //Koostame imapsync skripti käivitamise stringi parameetritega
 $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);
 //Käivitame sh skripti Linuxi käsurealt
 $proc = popen($strexe,'r');
 //PHP piirangute tõttu on piisav migreerimise lõpu tulemuse väljund
 while (!feof($proc)) {
  echoEvent(fread($proc, 4096));
 }
  echoEvent("Finish!");
?>

E-posti migreerimise skript (startimapsync.sh) võtab käsurea parameetritena: algsete ja lõpp-kontode kasutajanimi ja parool, ning imap-serverite aadressid.

#!/bin/bash
#переход в каталог откуда был запущен данный скрипт
cd `dirname $0`
#запуск imapsync с нужными параметрами
 /home/user/imapsync/./imapsync 
#сервер начального почтового ящика, логин, пароль
  --host1 $5:993    --user1 $1 --password1 $2 
#сервер конечного почтового ящика, логин, пароль
  --host2 $6:993    --user2 $3 --password2 $4 
#использование  шифрования при подключении к serveri
  --ssl1  --ssl2 
#kaustamise kaustad
  --automap 
#esimese sünkroonitava sisse tuleva kausta
  --folderfirst INBOX 
#kaustade kaustade kaardistamine
  --regextrans2 "s/BB4EQgQ,BEAEMAQyBDsENQQ9BD0ESwQ1-/Sent/" 
  --regextrans2 "s/BBoEPgRABDcEOAQ9BDA-/Trash/" 
  --regextrans2 "s/BCEEPwQwBDw-/Junk/" 
  --regextrans2 "s/BCcENQRABD0EPgQyBDgEOgQ4-/Drafts/" 
# õige registreerimine lugemata kirjadele sisse tulevates
  --regexflag 's/\Unseen//g' 
#Saadud ja saadetud kirjade võrdlemine identifitseerimisnumbri alusel
  --useheader Message-Id

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster