Ang bug-os nga pag-synchronize sa gipaambit nga mga folder, kontak, kalendaryo tali sa gipang-apod-apod nga mga server sa Kerio Connect

Maayong hapon, Habr!

Tumong

Ang akong organisasyon naggamit ug mail server sa Kerio Connect nga plataporma; ang mga mail server gi-install sa lain-laing mga siyudad aron sa pagserbisyo sa ilang mga tiggamit. Sa sinugdan wala'y gipang-apod-apod nga istruktura, tungod kay ang mga dominyo magkalainlain sa ikatulo nga lebel, nga nagpaila sa lungsod sa site. Ang tanan nagtrabaho ug ang tanan malipayon. Usa ka maayong adlaw, ang pagdumala nagtakda usa ka buluhaton, usa ka sagad nga kalendaryo sa mga kalihokan tali sa tanan nga mga site!

sa naunang kasaysayan

Sa sinugdan, ang ideya mao ang pagpataas sa Kerio Distributed Mail Domain ug buhaton niini ang tanan. Sa wala madugay giingon nga nahuman, usa ka gipang-apod-apod nga domain ang gihimo, apan dili kana ang kahimtang, ang server andam na nga mag-synchronize sa mga kalendaryo, folder, kontak - tali sa mga domain nga nahimutang sa parehas nga server, apan dili gyud mag-synchronize sa datos tali sa daghang. mga server.

Siyempre, wala ako magdahom sa ingon nga pagdakop ug sa dugay nga panahon dili ako makatuo nga ang pag-andar nga akong gikinahanglan nawala. Sa ulahi nakit-an nako ang dokumentaryo nga ebidensya sa kini nga kamatuoran. Nalibog kaayo ko ug nasagmuyo niini.

Ang buluhaton hapsay nga nahimong problema.

Unsa ang mga kapilian?

  • Paghimo og duha ka mga kliyente sa lain-laing mga server nga nagbaylo sa gikinahanglan nga data sa pipila ka mga third-party software. Kinahanglan nga pangitaon kini nga software sa ikatulo nga partido nga magpatuman niini nga pag-andar - Dili ko gusto ang ingon nga rake, apan ingon nga kini ra ang dali nga solusyon.
  • Isulat ang imong kaugalingon nga script alang sa pag-synchronize sa datos tali sa mga server. Ang tinuod mao nga gitipigan ni Kerio ang matag butang ingon usa ka bulag nga file, mao nga kinahanglan nga maghimo usa ka script alang sa pagtrabaho sa mga file, apan tungod sa igo nga gidaghanon sa mga gigikanan, ang buluhaton ingon medyo komplikado, labi na tungod kay gikinahanglan ang paghimo sa daghang. nagsusi sa pagkahusto sa datos, kung adunay maghimo ug buluhaton sa samang yugto sa panahon, ug uban pa, ug uban pa.

Sa pagtan-aw sa unahan, isulti ko nga bisan kung gitipigan ni Kerio ang usa ka butang ingon usa ka bulag nga file, dili kini hungog nga mangutana kung giunsa ang sistema sa file sa matag higayon nga ma-access nimo ang butang.

Sa paggahin ug daghang oras sa paghunahuna, pag-drawing og usa ka hugpong sa mga piraso sa papel nga adunay mga plano "aron agawon ang teritoryo sa kaaway," sa alas-6 sa gabii nakahimo ako og duha ka husto nga mga desisyon:

  • Ang una nga desisyon mao ang pagbuhat sa imong kaugalingon nga butang ug dili mangita bisan unsa gikan sa gawas.
  • Ang ikaduha nga solusyon mao ang pagkatulog.

Na sa buntag ako nahigmata uban sa usa ka single ug tinuod nga hunahuna, nga mikunhod ngadto sa pipila ka mga letra - DFS

desisyon

Ang solusyon mismo ingon niini

  • dad-a ang tanan nga mga server nga moapil sa pag-synchronize sa OS Windows. (Bahin niini anaa sa Linux. Ang pagbalhin sa data sa mail ngadto sa laing OS gikinahanglan)
  • Tinoa ang istruktura sa mga direktoryo nga moapil sa pag-synchronize - sila kinahanglan nga managsama.
  • Ipasabot ang tanang mail server ubos sa usa ka domain nga adunay usa ka DFS space.
  • Paghimo sa gihisgutan sa ibabaw nga gipang-apod-apod nga domain sa Kerio, tungod kay sa akong kaso gikinahanglan ang pag-synchronize sa data, dili lamang sa taliwala sa mga server apan usab sa taliwala sa mga dominyo; ang ikaduha mahimong madumala sa Kerio server nga independente. (dili sama sa una)
  • Ibutang ang mga synchronize nga mga direktoryo sa DFS space.
  • Paghimo og usa ka matang sa saklay (human sa tanan, dili ka mabuhi nga walay saklay)

Pagpatuman

Pananglitan sa duha ka mail server (tingali daghan pa)

1. Naapod-apod nga domain sa Kerio

Ang bug-os nga pag-synchronize sa gipaambit nga mga folder, kontak, kalendaryo tali sa gipang-apod-apod nga mga server sa Kerio Connect

Ang Agalon wala moapil sa pag-synchronize, apan dili kini usa ka kinahanglanon.

Dili nako ihulagway kung giunsa ang pagpataas sa usa ka domain nga gipang-apod-apod sa Kerio, wala’y komplikado bahin niini, mahimo nimong tun-an ang opisyal manul

Sa katapusan, kinahanglan nimo nga makita ang mosunud nga imahe sa console sa administrasyon:

Ang bug-os nga pag-synchronize sa gipaambit nga mga folder, kontak, kalendaryo tali sa gipang-apod-apod nga mga server sa Kerio Connect

Ang bug-os nga pag-synchronize sa gipaambit nga mga folder, kontak, kalendaryo tali sa gipang-apod-apod nga mga server sa Kerio Connect

Sunod interesado ako sa gipaambit nga mga folder; sa Master server mahimo nimong ipiho ang mosunod nga mga kapilian:

Ang bug-os nga pag-synchronize sa gipaambit nga mga folder, kontak, kalendaryo tali sa gipang-apod-apod nga mga server sa Kerio Connect

Ang bug-os nga pag-synchronize sa gipaambit nga mga folder, kontak, kalendaryo tali sa gipang-apod-apod nga mga server sa Kerio Connect

Piho alang sa matag domain - dili i-synchronize sa server ang mga pampublikong folder sa taliwala sa mga domain

Komon sa tanang domain - ang tanan nga mga server biyaan ang naglungtad nga publiko nga mga folder sa matag domain ug maghimo bag-ong usa ka folder alang sa tanan nga mga domain sa matag mail server.

Pasidaan Bisan kung kini nga kapilian nagbag-o sa palisiya sa pag-configure sa tanan nga mga server, kini nag-synchronize nga gilain gikan sa matag server (nga mao, wala’y usa ka sagad nga wanang)

Ang tagdumala aduna pa'y katakus sa pag-apod-apod sa access tali sa mga tiggamit.
sa akong kaso, sila tanan akoa ug kinahanglan nako ang bug-os nga pag-synchronize (Sa imong kaso, ang solusyon mahimong lahi) sa matag server kinahanglan nimo nga maghimo parehas nga mga set sa mga domain nga kinahanglan nga i-synchronize.

2. Mga direktoryo sa datos sa Kerio

Karon kinahanglan nimo nga maghimo parehas nga gipaambit nga mga direktoryo nga kinahanglan nga i-synchronize sa matag usa sa mga server. Mga folder, Kalendaryo, Mga Contact.

Tambag - paghimo og mga direktoryo sa English, kung imong gihimo kini sa Latin, ang direktoryo adunay usa ka ngalan sa pipila nga dili masabtan nga pag-encode, kini labing menos dili kombenyente.

Karon kinahanglan nimo nga pangitaon ang pisikal nga mga agianan sa mga folder sa mail sa matag server.

Komon sa tanang domain ~DataMailmail#publicΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³#msgs
Piho alang sa matag domain ~DataMailmail**Domain**#publicΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³#msgs

Palihug timan-i nga dili namo i-synchronize ang tibuok direktoryo, apan ang sudlanan lamang nga adunay datos #msgs β€” ang mga butang mismo gitipigan dinhi, ang tanan nga ubang mga datos kinahanglan nga bulag alang sa matag server.

3.DFS

Dili nako ihulagway sa detalye kung giunsa ang pag-configure sa DFS, adunay igo nga kasayuran bahin niini nga isyu.

Ang DFS usa ka serbisyo sa papel sa Windows Server nga naghatag katakus sa paghiusa sa gipaambit nga mga folder nga nahimutang sa lainlaing mga server
Link sa MS DFS nga dokumento

Sa dili pa i-set up ang DFS, kinahanglan nimong hunongon ang tanang mail server nga moapil sa data synchronization.

Pagkahuman sa pag-setup, kinahanglan nimo nga madawat ang mosunud nga imahe alang sa matag usa sa gi-synchronize nga mga folder

Ang bug-os nga pag-synchronize sa gipaambit nga mga folder, kontak, kalendaryo tali sa gipang-apod-apod nga mga server sa Kerio Connect

Siyempre, dili na namo kinahanglan nga imantala ang mga gikopya nga mga folder.

Ang bug-os nga pag-synchronize sa gipaambit nga mga folder, kontak, kalendaryo tali sa gipang-apod-apod nga mga server sa Kerio Connect

Human mahitabo ang pagkopya (ug wala'y espesyal nga pagkopya didto - ang mga folder walay sulod), ang mga mail server mahimong masugdan.

Sunod, mahimo nimong pun-on ang usa sa mga mail server sa datos ug susihon nga husto ang pagkopya sa datos.

4. Krus

Deskripsyon sa pagpamalandong

Sama sa imong makita human ang data magsugod sa pag-synchronize (DFS), kung nakahimo ka og usa ka butang sa unang server, sa usa ka paagi walay makita sa ikaduhang server, o kini makita apan dili kanunay.

Ayaw pagkawalay paglaum; siyempre, kini makita didto sa madugay o sa madali, apan mas maayo sa dili madugay. Kay ulahi na kaayo sa 6 - 12 ka oras.

Ang butang mao nga sa diha nga nakahimo ka usa ka butang sa una nga server, sa ikaduha ug sa sunod nga mga server ang file siyempre makita dayon salamat sa sistema sa DFS, apan kung kini nga direktoryo sa mail nabasa na sa usa ka tawo kaniadto. ug gihangyo pag-usab, ang server dili na magbasa pag-usab sa #msgs folder apan moluwa sa datos gikan sa iyang kaugalingong index, nga mahimong dili na katumbas sa atong realidad.

Ang Kerio adunay mekanismo sa pagbasa pag-usab sa indeks, apan mahimo kini nga molihok sa mga unom ka oras, ug sulod niining 6 ka oras ang kalambigitan sa buluhaton sa kalendaryo mahimong medyo nawala.
Aron masulayan ang pag-synchronize karon, mahimo nimong papason ang file sa katugbang nga synchronize nga direktoryo nga index.fld, pagkahuman ma-access pag-usab ang folder sa mail server ug kung nawala kini nga file, basahon pag-usab ni Kerio ang direktoryo ug ang datos motungha. Mopatim-aw nga kini ang solusyon, kuhaa ang file kung ang mga pagbag-o sa datos, apan dili kini molihok sa matag higayon, apan sa una nga higayon, unya ang Kerio sa usa ka hinungdan nawala ang tanan nga interes sa index.fld
Nagsugod usab kini sa pagluwa sa mga mensahe nga dili masabtan sa tiggamit - bahin sa usa ka matang sa indeks ug nga kini adunay gibuhat didto.

Adunay lain nga kapilian, aron makahimo usa ka butang - sa higayon nga maghimo usa ka bag-ong butang, ang server kalit nga nakaamgo nga ang ngalan sa file nga gusto i-assign nakuha na, apan kini nag-snowball ug kini usa ka kapilian nga wala’y katapusan.

Unsaon pagkahimo?

Kung atong hatagan ug pagtagad pag-usab ang hulagway nga pamilyar na kanato.

Ang bug-os nga pag-synchronize sa gipaambit nga mga folder, kontak, kalendaryo tali sa gipang-apod-apod nga mga server sa Kerio Connect

Apan sa laing eroplano, imong makita ang usa ka makaiikag kaayo nga buton nga atong gikinahanglan karon - I-reindex ang mga folder

Ug sa pagkatinuod. Kung among i-klik kini nga buton sa usa ka mail server nga wala nahibal-an nga adunay nabag-o sa na-synchronize nga #msgs, makakuha kami usa ka lig-on, paspas nga sangputanan. Ang tanan nga gitago mahimong tin-aw.

Sa log makita nimo kung unsa kadugay kini nga proseso; sa akong kaso nga adunay pipila ka libo (15 ka libo) nga mga rekord kini mokabat sa 3-4 ka minuto.

Ang kinahanglan namong buhaton mao ang paghunahuna kung giunsa ang aktuwal nga pagpindot niini nga buton kung kinahanglan namon kini.

Kini nahimo Kerio adunay ilang kaugalingon API

paghulagway
ДокумСнтация

Ang function nga naghimo sa among buluhaton ingon niini:
session = callMethod("Domains.checkPublicFoldersIntegrity",{}, token)

Gikan sa tanan nga nahisgutan sa ibabaw, kinahanglan namon nga magsulat usa ka script nga magmonitor sa kahimtang sa mga folder nga interesado ug, kung adunay nabag-o, buhata ang function nga kinahanglan namon.

Gusto nako isulti nga nagsulat ako daghang lainlaing mga bersyon sa mga script nga naghimo sa lainlaing mga pagsusi, ug gihusay ang usa nga nagkuha sa tanan nga mga konklusyon base sa gidaghanon sa mga file.

Pagpatuman sa script

Pananglitan ug paghulagway sa CMD script

Re-index.bat

@echo off
set dir=%~dp0
%dir:~0,2%
CD "%~dp0"
md "%CD%LOG"
md "%CD%Setup"

ECHO -Start- >> "%CD%LOG%Computername%.log"
ECHO Start -> %Computername% %Date% %Time% >> "%CD%LOG%Computername%.log"

SetLocal EnableDelayedExpansion
for /f "UseBackQ Delims=" %%A IN ("%CD%Setup%Computername%.List") do (
  set /a c+=1
  set "m!c!=%%A"
)

set d=%c%
Echo Folder = %c%
ECHO Folder = %c% >> "%CD%LOG%Computername%.log"
ECHO.
ECHO. >> "%CD%LOG%Computername%.log"

:start
cls
if %c% LSS 1 exit
set /a id=1
set R=0

:Find
REM PF-Start
if "%id%" gtr "%c%" if %R% == 1 Goto Reindex 
if "%id%" gtr "%c%" timeout 60 && Goto start

For /F "tokens=1-3" %%a IN ('Dir "!m%id%!#msgs" /-C/S/A:-D') Do Set 2DirSize!id!=!DS!& Set DS=%%c
if "2DirSize!id!" == "" set 1DirSize!id!=!2DirSize%id%!

echo %id%
ECHO !m%id%!
echo Count        [ !1DirSize%id%! -- !2DirSize%id%! ]

if "!1DirSize%id%!" == "!2DirSize%id%!" ECHO Synk

REM DEL index.fld
if "!1DirSize%id%!" NEQ "!2DirSize%id%!" del /f /q !m%id%!index.fld && del /f /q !m%id%!indexlog.fld && del /f /q !m%id%!search.fld && set R=1 && ECHO RE-index Count && ECHO RE-index Count %Date% %Time% - Delete !m%id%! >> "%CD%LOG%Computername%.log"

set 1DirSize!id!=!2DirSize%id%!

ECHO.
ECHO.

set /a id+=1
goto Find

:Reindex
ECHO. >> "%CD%LOG%Computername%.log"
ECHO --- RE-INDEX - Start - %Date% %Time% --- >> "%CD%LOG%Computername%.log"
ECHO. >> ----------------------------------- >> "%CD%LOG%Computername%.log"
call PublicFolders.py
timeout 60
goto start

exit

Ang usa ka kopya sa script nagdagan sa matag mail server (mahimo gamiton ingon usa ka serbisyo, wala kinahanglana ang mga katungod sa Adm)

Gibasa sa script ang file Setup%Computername%.List

Diin ang %Computername% mao ang ngalan sa kasamtangan nga server (Ang direktoryo mahimong adunay mga lista sa tanan nga mga server sa usa ka higayon.)

Ang file %Computername%.List – naglangkob sa tibuok nga mga agianan sa mga synchronized nga mga direktoryo, ang matag agianan gisulat sa usa ka bag-ong linya, ug dili kinahanglan nga adunay walay sulod nga mga linya.

Pagkahuman sa una nga paglansad, ang script naghimo sa pamaagi sa pag-indeks, bisan kung kini kinahanglan o dili, ug ang script nagmugna usab usa ka indeks sa gidaghanon sa mga file sa matag gi-synchronize nga direktoryo.

Ang katuyoan sa script mao ang pag-ihap sa tanan nga mga file sa piho nga direktoryo.

Sa pagtapos sa pag-ihap sa matag direktoryo, kung sa labing menos usa ka direktoryo ang kasamtangang bili sa mga file dili motakdo sa miaging usa, ang script magtangtang sa mga file gikan sa root directory sa gi-synchronize nga mail directory: index.fld, indexlog.fld, search.fld ug magsugod sa proseso sa pag-indeks sa mga shared mail folder.

Ang kasayuran bahin sa pagpatuman sa buluhaton gilabay sa direktoryo sa LOG.

Proseso sa pag-indeks
Ang proseso sa pag-indeks moabut sa pagpatuman sa usa ka function sa Kerio API
Session = callMethod("Domains.checkPublicFoldersIntegrity",{}, token)

Usa ka pananglitan nga pagpatuman gihatag sa - python
PublicFolds.py

import json
import urllib.request
import http.cookiejar
""" Cookie storage is necessary for session handling """
jar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(jar))
urllib.request.install_opener(opener)
""" Hostname or ip address of your Kerio Control instance with protocol, port and credentials """

server = "http://127.0.0.1:4040"
username = "user"
password = "password"

def callMethod(method, params, token = None):
    """
    Remotely calls given method with given params.
    :param: method string with fully qualified method name
    :param: params dict with parameters of remotely called method
    :param: token CSRF token is always required except login method. Use method "Session.login" to obtain this token.
    """
    data =  {"method": method ,"id":1, "jsonrpc":"2.0", "params": params}

    req = urllib.request.Request(url = server + '/admin/api/jsonrpc/')
    req.add_header('Content-Type', 'application/json')
    if (token is not None):
        req.add_header('X-Token', token)    

    httpResponse = urllib.request.urlopen(req, json.dumps(data).encode())

    if (httpResponse.status == 200):
        body = httpResponse.read().decode()
        return json.loads(body)

session = callMethod("Session.login", {"userName":username, "password":password, "application":{"vendor":"Kerio", "name":"Control Api-Local", "version":"Python"}})
token = session["result"]["token"]
print (session)

session = callMethod("Domains.checkPublicFoldersIntegrity",{"domainId": "test2.local"}, token)
print (session)

callMethod("Session.logout",{}, token)

http://127.0.0.1:4040 mahimo nimong biyaan kini, apan kung kinahanglan nimo ang HTTPS, ang python kinahanglan nga mosalig sa sertipiko sa Kerio.

Usab sa file kinahanglan nimo nga ipiho ang usa ka account nga adunay mga katungod sa pagbuhat niini nga function (Adm - public mail folder) sa mail server.

Nanghinaut ko nga ang akong artikulo mapuslanon sa mga tagdumala sa Kerio Connect.

Source: www.habr.com

Idugang sa usa ka comment