Plena synchronisatio communis folder, contactus, calendaria inter Kerio Connect servers distributa

Salve, Habr!

negotium

Mea organizatione cum servo electronico in Kerio Connect suggestum utitur, servitores mail in diversis urbibus instituuntur ut suis usoribus inserviant. Initio nulla erat structura distributa, cum ditiones in tertio gradu differrent, significans urbem situs. Omnia laboraverunt et omnes gauisi sunt. Una denique dies, procuratio molis collocavit, calendarium commune actionum inter omnes sitas!

erectus

Initio, idea Kerio Mail Domain distribuit suscitare et omnia ipsa facturum esse. Ut dictum quam factum est, dominium distributum creatum est, sed quod factum non erat, servo paratus erat calendaria, folder, contacta synchronizare - inter ditiones ab eodem servo positas, sed minime inter plures notitias synchronizes erat. servientibus.

Ego sane talem capturam non expectavi et diu credere non potui officiatis, quibus opus erat, deesse. Postea inveni huius rei documenta. Hoc valde haesitans et deceptus sum.

Vim in munere mollis quaestio.

Quae erant optiones?

  • Duo clientes crea in diversis servientibus qui data necessaria permutant cum programmate tertiae factionis. Oportuit invenire hanc tertiam partem programmatis quae hanc functionem efficeret - non placet rastri, sed haec sola solutio velox videbatur.
  • Scriptum tuum scribe pro notitia synchronisation inter servientes. Re vera Kerio unumquodque objectum sicut fasciculum separatum reponit, ideo necesse erat ut scripturam ad operandum cum lima evolveret, sed, intuitu sufficientis fontium, negotium aliquantum perplexum videbatur, praesertim cum necesse esset multiplicem conficere. compescit rectitudinem notitiarum, si quis negotium creat in eodem tempore, etc., etc.

Prospiciens, dicam, quamvis Kerio rem tanquam fasciculum separatum reponit, non tam stultus est ut quaeras quomodo ratio tabellae agat quoties ad rem accesseris.

Multum temporis cogitans, fasciculum chartarum conficiendo cum consiliis "terram hostium occupandi," ante horam VI duas rectas decisiones posui:

  • Prima sententia est tuam rem facere nec quicquam extrinsecus quaerere.
  • Secunda solutio est ad somnum proficisci.

Iam mane evigilavi una et vera cogitatione, quae ad paucas litteras redacta est - DFS .

arbitrium

Solutio ipsa vidi sic

  • omnes servientes qui synchronisationi ad OS Fenestra participent. (Pars erat in Linux. Migratio epistularum data alteri OS requirebatur)
  • Determinare structuram directorium qui synchronizationem participabunt - iidem esse debent.
  • Define omnes servitores epistularum sub una ditione cum uno DFS spatio.
  • Domum Kerio praefatam distributam crea, cum in casu meo data synchronisatio requiratur, non solum inter servientes sed etiam inter dominia, secunda a servo Kerio independenter tractari potest. (Dissimilis primum)
  • Constitue directoria synchronisata ad spatium DFS.
  • Ascende cum aliquo fuso (ante omnia, sine fuso vivere non potes)

РСализация

Exemplum duobus mail servers (fortasse plus)

1. Kerio distribuit domain

Plena synchronisatio communis folder, contactus, calendaria inter Kerio Connect servers distributa

Magister synchronisationi non participat, sed hoc praerequiritur.

Non describere quomodo regiones distributas Kerio movere, de eo nihil implicatum, officiali studere potes manul

Denique hanc imaginem videre debes in administratione console:

Plena synchronisatio communis folder, contactus, calendaria inter Kerio Connect servers distributa

Plena synchronisatio communis folder, contactus, calendaria inter Kerio Connect servers distributa

Deinde curabam in folders communibus, in Magistro servo vos can sequentes optiones denotare:

Plena synchronisatio communis folder, contactus, calendaria inter Kerio Connect servers distributa

Plena synchronisatio communis folder, contactus, calendaria inter Kerio Connect servers distributa

Imprimis pro cuiusque domain - in calculonis servi non synchronize publici folders inter domains

Commune omnibus dominiis - omnes servientes exsistentes folder publici in unaquaque ditione relinquent ac novas singulas folders pro omnibus dominiis in unaquaque electronica servo creabunt.

Cautus esto Etsi haec optio consilium configurationem mutat omnibus ministris, separatim tamen ab unoquoque servo (id est sine spatio communi) seorsim conformatur.

Administrator etiam facultatem habebit accessum inter utentes distribuendi.
in casu meo, omnia mea sunt et plena synchronisation egent (In casu tuo, solutio diversa sit) in singulis ministris debes creare identificas provincias ditionum quae synchronizandae esse debent.

2. Kerio data directoria

Nunc opus est creare idem directoria communia quae singulis servientibus synchronizari debent. Folders, Calendaria, Noti.

Admonitio - directoria Anglice crea, si eas Latine creabis, directorium nomen habebit in aliqua incomprehensibili descriptam, hoc certe incommodum est.

Nunc debes invenire vias physicas in folder in unoquoque servo.

Commune omnibus dominiis ~DataMailmail#publicΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³#msgs
Imprimis pro cuiusque domain ~DataMailmail**Domain**#publicΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³#msgs

Quaeso nota quod non integram presulem synchronizabimus, sed solum continens cum notitia #msgs β€” res ipsae hic repositae, ceterae notitiae singulis servulis separatae esse debent.

3.DFS

Non singillatim describere quomodo DFS configurare, de hac re satis notitia est.

DFS munus munus est in Fenestra Servo quod facultatem praebet componendi folder in diversis servientibus sitam communicandi
Link to MS DFS documentum

Priusquam DFS instituas, desinas oportet omnes servos epistulas quae notitia synchronisationi participent.

Propositione peracta, imaginem sequentem recipias pro singulis folders synchronisatis

Plena synchronisatio communis folder, contactus, calendaria inter Kerio Connect servers distributa

Naturaliter folders repplicari non oportet.

Plena synchronisatio communis folder, contactus, calendaria inter Kerio Connect servers distributa

Post replicationem incidit (et nihil est speciale ibi replicare - folders vacui sunt), ministri tabellariorum incipere possunt.

Deinde, unum e electronicis servientibus electronicis ad notitias implere potes et inspicias quod notitia recte replicatur.

4. Crutch

Descriptio reflexionis

Ut videre potes postquam notitia incipit synchronum (DFS), si vel creasti aliquid in primo servo, quodammodo nihil apparet in servo secundo, vel apparet sed aliquo modo non semper.

Noli desperare, utique citius aut serius apparebit, sed melius quam serius. Quia sera est in 6-12 horis.

Sermo est quod quam primum aliquid creasti in primo servo, in secundo et subsequenti tabellariorum servientibus statim apparebit profecto gratiarum ratio DFS, sed in eventu quem directorium epistularum iam ab aliquo ante lectum est. et iterum rogatur, cultor #msgs folder non re-legit sed e proprio indice notitias respuet, quae nostrae realitati iam respondere non possunt.

Kerio mechanismum habet pro indice legendi, sed operari potest circiter sex horas, et inter has 6 horas momentum negotii in calendario aliquantum amitti potest.
Ut synchronization nunc probetur, tabellam delere potes in indice synchronised respondente indice.fld, re- accessione folder in servo electronico et si hic fasciculus desit, Kerio releget indicem ac notitia apparebit. Videtur quod haec sit solutio, tabellam cum notitiarum mutationibus deleat, sed hoc non omni tempore operatur, sed primum tantum, deinde Kerio propter aliquam causam amittit omnem curam in indice.fld.
Etiam incipit exspuentibus nuntiis quae incomprehensibilia sunt usuario - de quodam indice genere et quod iam aliquid ibi ageret.

Est alia optio, ut aliquid creet - in momento novum obiectum creandi, servo repente animadvertit tabellam nomen suum iam acceptum esse voluisse, sed nives esse et haec optio finis mortuorum est.

Quomodo autem fieri potest?

Si denuo attendimus imaginem nobis familiarem.

Plena synchronisatio communis folder, contactus, calendaria inter Kerio Connect servers distributa

Sed in alio plano, videre potes ipsum interesting conjunctionem quam nunc indigemus - Reindex folders

Et quidem. Si deprimimus hanc bullam in servo electronico qui nesciat aliquid iam in #msgs synchronised mutatum, stabili, celeriter eventum dabimus. Omnia occulta manifesta erunt.

In stipes videre potes quam longus processus hic accipit, in causa mea cum pluribus milibus (15 milia) commemorat circiter 3β€”4 minuta.

Omnes faciendum nobis est instar sicco quomodo conjunctionem hanc actu premere cum opus est.

Vertit ex Kerio habent sua API

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

Munus quod nostrum munus fungitur hoc modo spectat:
session = callMethod("Domains.checkPublicFoldersIntegrity",{}, token)

Ex his omnibus, necesse est ut scriptum scribat qui rem publicam monitorem commodandi folder et, si aliquid mutatum est, munus expleat quod opus est.

Dicere volo me varias scriptorum versiones varias scripsisse, quae varias compescunt, et in eo concludunt, quod omnes conclusiones secundum numerum limariorum trahit.

Scriptor implementation

CMD scriptor exemplum et descriptio

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

Exemplar scriptoris incurrit in singulis electronicis servis (potest adhiberi ut servitium, iura Adm non requiruntur)

Scriptum tabella legit Setup%Computername%.List

Ubi %Computername% nomen est servo currentis (directio tabulas omnium simul ministrantium continere potest).

Tabella %Computername%.List - semitas plenas directoriis synchronisatis continet, quaeque via in linea nova scripta est, nec lineas vacuas continere debet.

Post primam incusationem, scriptum peragit modum indicens, utrum necessarium sit an non, et scriptum etiam facit indicem numerorum fasciculorum in singulis presulibus synchronisatis.

Propositum scripturae est omnia tabularia numerare in directorio determinato.

In fine computandi singulas directorias, si saltem unum directorium monetae documentorum priori priori non congruit, scriptura lima e radicibus directoriis epistularum synchronisedum delet: index.fld, indexlog.fld, search.fld et incipit indexing processus communis electronicarum folder.

Informationes de munere exsecutionis in indicem TRUNCUS contusus est.

Processus Indexing
Processus indexing descendit ad functionem API exsequendam a Kerio
Sessio = callMethod("Domains.checkPublicFoldersIntegrity",{}, indicium)

Exemplum exsecutionis in - python
PublicFolders.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 potes id relinquere ut est, sed si HTTPS exigis, Python Kerio certificationi crede.

Etiam in tabella rationem reddere debes cum iuribus ad hoc munus explendum (Adm - publici mail folders) servi electronici.

Articulum meum spero utilem fore administratoribus Kerio Connect.

Source: www.habr.com