Ungqamaniso olupheleleyo lweefolda ekwabelwana ngazo, abafowunelwa, iikhalenda phakathi kweeseva ezisasaziweyo zeKerio Connect

Molo emva kwemini, Habr!

Injongo

Umbutho wam usebenzisa iseva yeposi kwiqonga leKerio Connect; iiseva zeposi zifakwe kwizixeko ezahlukeneyo ukunceda abasebenzisi bazo. Ekuqaleni kwakungekho sakhiwo esasasazwayo, ekubeni imimandla iyahluka kwinqanaba lesithathu, ebonisa isixeko sendawo. Yonke into yasebenza kwaye wonke umntu onwabile. Ngolunye usuku oluhle, abaphathi babeka umsebenzi, ikhalenda eqhelekileyo yemisebenzi phakathi kwazo zonke iisayithi!

ukubuzwa

Ekuqaleni, ingcamango yayikukuphakamisa i-Kerio Distributed Mail Domain kwaye iya kwenza yonke into ngokwayo. Kungekudala emva kokuba kwenziwe, i-domain esasaziweyo yenziwa, kodwa oko kwakungenjalo, umncedisi wayekulungele ukuvumelanisa iikhalenda, iifolda, abafowunelwa - phakathi kweendawo ezibekwe kumncedisi omnye, kodwa kwakungekho konke konke ukulungelelanisa idatha phakathi kwamaqela amaninzi. abancedisi.

Mna, ewe, andizange ndilindele ukubanjwa okunjalo kwaye ixesha elide ndingakholelwa ukuba ukusebenza endikufunayo kwakungekho. Kamva ndafumana ubungqina obubhaliweyo bale nyaniso. Yandixaka kakhulu kwaye idaniswa yile nto.

Umsebenzi waguquka ngokutyibilikayo waba yingxaki.

Ziziphi iindlela onokukhetha kuzo?

  • Yenza abathengi ababini kwiiseva ezahlukeneyo ezitshintshisa idatha eyimfuneko kunye nesoftware yomntu wesithathu. Kwakuyimfuneko ukufumana le software yomntu wesithathu eyayiza kuphumeza lo msebenzi - andiyithandi iraki enjalo, kodwa kwakubonakala ngathi esi kuphela kwesisombululo esikhawulezayo.
  • Bhala esakho iscript songqamaniso lwedatha phakathi kweeseva. Inyani kukuba iKerio igcina into nganye njengefayile eyahlukileyo, ngoko ke bekuyimfuneko ukuphuhlisa iskripthi sokusebenza ngeefayile, kodwa ngenxa yenani elaneleyo lemithombo, umsebenzi wabonakala unzima kakhulu, ngakumbi kuba bekuyimfuneko ukwenza okuninzi. ijonga ukuchaneka kwedatha, ukuba umntu wenza umsebenzi ngexesha elifanayo, njl. njl.

Ukujonga phambili, ndiza kuthi nangona uKerio egcina into njengefayile eyahlukileyo, ayiyobudenge kakhulu ukubuza ukuba inkqubo yefayile yenza njani ngalo lonke ixesha ufikelela kwinto.

Emva kokuba ndichithe ixesha elininzi ndicinga, ndizoba isiqwenga samaphepha ngezicwangciso "zokuthimba indawo yotshaba," ngentsimbi yesi-6 ndenza izigqibo ezimbini ezifanelekileyo:

  • Isigqibo sokuqala kukwenza izinto zakho kwaye ungajongi nto ngaphandle.
  • Isisombululo sesibini kukuya kulala.

Kwangoku kusasa ndivuke ndinengcinga enye neyinyani, eyancitshiswa yaba ngoonobumba abambalwa - DFS

Isisombululo

Isisombululo ngokwaso sasikhangeleka ngolu hlobo

  • yizisa zonke iiseva eziya kuthatha inxaxheba kungqamaniso lwe-OS Windows. (Inxalenye yayo ibikwiLinux. Ukufuduswa kwedatha yemeyile kwenye i-OS ibifuneka)
  • Qinisekisa ubume babalawuli abaza kuthatha inxaxheba kungqamaniso - kufuneka bafane.
  • Chaza zonke iiseva zeposi phantsi kwendawo enye ene-DFS enye.
  • Yenza i-domain ye-Kerio ekhankanywe ngasentla, kuba kwimeko yam ungqamaniso lwedatha luyafuneka, kungekuphela nje phakathi kweeseva kodwa naphakathi kwemimandla; eyesibini inokuphathwa ngumncedisi we Kerio ngokuzimeleyo. (ngokungafaniyo neyokuqala)
  • Cwangcisa abalawuli abalungelelanisiweyo kwisithuba seDFS.
  • Yiza nolunye uhlobo lwentonga (emva kwayo yonke loo nto, awukwazi ukuphila ngaphandle kwentonga)

Ukuphunyezwa

Umzekelo kwiiseva ezimbini zeposi (mhlawumbi ngaphezulu)

1. Kerio Distributed domain

Ungqamaniso olupheleleyo lweefolda ekwabelwana ngazo, abafowunelwa, iikhalenda phakathi kweeseva ezisasaziweyo zeKerio Connect

I-Master ayithathi nxaxheba kungqamaniso, kodwa oku akuyomfuneko.

Andiyi kuchaza indlela yokunyusa i-domain ye-Kerio esasazwayo, akukho nto inzima ngayo, unokufunda igosa indoda

Ekugqibeleni, kuya kufuneka ubone lo mfanekiso ulandelayo kwikhonsoli yolawulo:

Ungqamaniso olupheleleyo lweefolda ekwabelwana ngazo, abafowunelwa, iikhalenda phakathi kweeseva ezisasaziweyo zeKerio Connect

Ungqamaniso olupheleleyo lweefolda ekwabelwana ngazo, abafowunelwa, iikhalenda phakathi kweeseva ezisasaziweyo zeKerio Connect

Okulandelayo bendinomdla kwiifolda ekwabelwana ngazo; kwi-Master server ungakhankanya olu khetho lulandelayo:

Ungqamaniso olupheleleyo lweefolda ekwabelwana ngazo, abafowunelwa, iikhalenda phakathi kweeseva ezisasaziweyo zeKerio Connect

Ungqamaniso olupheleleyo lweefolda ekwabelwana ngazo, abafowunelwa, iikhalenda phakathi kweeseva ezisasaziweyo zeKerio Connect

Ithe ngqo kwindawo nganye -umncedisi akazukwenza ngaxeshanye kwiifolda zoluntu phakathi kwemimandla

Iqhelekile kuzo zonke iindawo -bonke abancedisi bayakuzishiya iifolda zoluntu ezikhoyo kwidomeyini nganye kwaye benze iifolda ezintsha kuzo zonke imimandla kumncedisi weposi ngamnye.

Nceda nceda! Nangona olu khetho lutshintsha umgaqo-nkqubo woqwalaselo kubo bonke abancedisi, ingqamanisa ngokwahlukileyo kumncedisi ngamnye (oko kukuthi, ngaphandle kwendawo enye eqhelekileyo)

Umlawuli useza kuba nako ukusasaza ukufikelela phakathi kwabasebenzisi.
kwimeko yam, zonke zezam kwaye ndifuna ungqamaniso olupheleleyo (Kwimeko yakho, isisombululo sinokwahluka) kumncedisi ngamnye ofuna ukwenza iiseti ezifanayo zemimandla efuna ukulungelelaniswa.

2. Uluhlu lwedatha yeKerio

Ngoku kufuneka udale abalawuli abakwabelwanayo abafanayo abafuna ukulungelelaniswa kumncedisi ngamnye. Iifolda, iiKhalenda, abafowunelwa.

Ingcebiso - yenza abalawuli ngesiNgesi, ukuba ubenza ngesiLatini, isilawuli siya kuba negama kwi-encoding ethile engaqondakaliyo, oku kuncinci akunzima.

Ngoku kufuneka ufumane iindlela ezibonakalayo zeefolda zeposi kumncedisi ngamnye.

Iqhelekile kuzo zonke iindawo ~DataMailmail#publicΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³#msgs
Ithe ngqo kwindawo nganye ~DataMailmail**Domain**#publicΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³#msgs

Nceda uqaphele ukuba asiyi kungqamanisa uvimba weefayili wonke, kodwa kuphela isikhongozeli esinedatha #imiyalezo β€” izinto ngokwazo zigcinwe apha, zonke ezinye iinkcukacha kufuneka zohlulwe kumncedisi ngamnye.

3.DFS

Andiyi kuchaza ngokweenkcukacha indlela yokuqwalasela i-DFS, kukho ulwazi olwaneleyo kulo mbandela.

I-DFS yinkonzo yendima kwi-Windows Server ebonelela ngokukwazi ukudibanisa iifolda ekwabelwana ngazo ezibekwe kwiiseva ezahlukeneyo
Ikhonkco kuxwebhu lweMS DFS

Phambi kokuseta i-DFS, kufuneka umise zonke iiseva zemeyile eziza kuthatha inxaxheba kungqamaniso lwedatha.

Ekugqityweni kocwangciso, kufuneka ufumane umfanekiso olandelayo kwifolda nganye elungelelanisiweyo

Ungqamaniso olupheleleyo lweefolda ekwabelwana ngazo, abafowunelwa, iikhalenda phakathi kweeseva ezisasaziweyo zeKerio Connect

Ngokwendalo, akufuneki sipapashe iifolda eziphindaphindwayo.

Ungqamaniso olupheleleyo lweefolda ekwabelwana ngazo, abafowunelwa, iikhalenda phakathi kweeseva ezisasaziweyo zeKerio Connect

Emva kokuba uphindaphindo lwenzekile (kwaye akukho nto ikhethekileyo yokuphinda-phinda apho - iincwadi ezineenkcukacha azinanto), abancedisi beposi banokuqalwa.

Okulandelayo, ungazalisa enye yeeseva zemeyile ngedatha kwaye ujonge ukuba idatha iphindaphindwe ngokuchanekileyo.

4. Intonga

Inkcazo yokucamngca

Njengoko unokubona emva kokuba idatha iqala ukuvumelanisa (DFS), ukuba udale into ethile kumncedisi wokuqala, ngandlela-thile akukho nto ibonakala kumncedisi wesibini, okanye ibonakala kodwa ngandlela-thile ayisoloko.

Musa ukuphelelwa lithemba; ewe, iya kubonakala apho kungekudala okanye kamva, kodwa ngcono kungekudala. Ngenxa yokuba kusemva kwexesha kwii-6 - 12 iiyure.

Into kukuba nje ukuba udale into kumncedisi wokuqala, kwiseva yesibini kunye nelandelayo ifayile ngokuqinisekileyo iya kubonakala ngokukhawuleza ngenxa yenkqubo ye-DFS, kodwa kwimeko apho olu lawulo lweposi sele lufundwe ngumntu ngaphambili. kwaye iyacelwa kwakhona, umncedisi akazuphinda afunde #msgs incwadi eneenkcukacha kodwa iyakutshica idata kwisalathiso sayo, esisenokungahambelani nenyani yethu.

I-Kerio inomatshini wokufunda kwakhona isalathiso, kodwa inokusebenza malunga neeyure ezintandathu, kwaye ngezi yure zi-6 ukufaneleka komsebenzi kwikhalenda kunokulahleka ngandlel' ithile.
Ukuze uvavanye ulungelelwaniso ngoku, ungacima ifayile kulawulo oluhambelanayo oluhambelanayo index.fld, emva kokufikelela kwakhona kwifolda kumncedisi weposi kwaye ukuba le fayile ilahlekile, uKerio uya kuphinda afunde ulawulo kunye nedatha. iya kuvela. Kubonakala ngathi esi sisisombululo, cima ifayile xa idatha itshintsha, kodwa oku akusebenzi rhoqo, kodwa okokuqala kuphela, ngoko ke uKerio ngenxa yesizathu esithile ulahlekelwa ngumdla kwi-index.fld.
Ikwaqala ukutshica imiyalezo engaqondakaliyo kumsebenzisi- malunga nohlobo oluthile lwesalathiso kwaye sele isenza into apho.

Kukho enye inketho, ukwenza into-ngomzuzu wokudala into entsha, umncedisi uyaqaphela ngokukhawuleza ukuba igama lefayile ebefuna ukuyinika sele lithathiwe, kodwa i-snowballs kwaye oku kukhetho lokufa.

Njani ukuba?

Ukuba sinikela ingqalelo kwakhona kumfanekiso osele uqhelekile kuthi.

Ungqamaniso olupheleleyo lweefolda ekwabelwana ngazo, abafowunelwa, iikhalenda phakathi kweeseva ezisasaziweyo zeKerio Connect

Kodwa kwenye indiza, unokubona iqhosha elinomdla kakhulu esilifunayo ngoku - Iifolda kwakhona

Kwaye ngokwenene. Ukuba sinqakraza kweli qhosha kumncedisi weposi ongaziyo ukuba kukho into esele itshintshile kwi- #msgs ezilungelelanisiweyo, siya kufumana isiphumo esizinzileyo, esikhawulezayo. Yonke into efihliweyo iya kucaca.

Kwilogi ungabona ukuba le nkqubo ithatha ixesha elingakanani; kwimeko yam ngamawaka amaninzi (amawaka ali-15) iirekhodi kuthatha malunga nemizuzu eyi-3-4.

Ekuphela kwento ekufuneka siyenze kukufumanisa ukuba ulicofa njani eli qhosha xa silifuna.

Kuyavela Kerio babe nezabo API

inkcazelo
Amaxwebhu

Umsebenzi owenza umsebenzi wethu ujongeka ngolu hlobo:
session = callMethod("Domains.checkPublicFoldersIntegrity",{}, token)

Kuzo zonke ezi ngasentla, kufuneka sibhale iskripthi esiza kubeka iliso kwimeko yeefolda ezinomdla kwaye, ukuba kukho into etshintshileyo, yenza umsebenzi esiwufunayo.

Ndifuna ukuthi ndibhale iinguqulelo ezininzi ezahlukeneyo zeskripthi ezenza iitshekhi ezahlukeneyo, kwaye ndizinza kulowo wenza zonke izigqibo ngokusekelwe kwinani leefayile.

Ukuphunyezwa kombhalo

Umzekelo weskripthi seCMD kunye nenkcazo

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

Ikopi yeskripthi iqhutywa kwiseva yeposi nganye (inokusetyenziswa njengenkonzo, amalungelo e-Adm awafuneki)

Iscript siyayifunda ifayile Setup%Computername%.List

Apho i-%Computername% ligama lomncedisi wangoku (Uvimba weefayili unokuqulatha uluhlu lwabo bonke abancedisi ngaxeshanye.)

Ifayile %Computername%.Uluhlu – luqulathe umendo opheleleyo wabalawuli abalungelelanisiweyo, umendo ngamnye ubhalwa kumgca omtsha, kwaye akufuneki uqulathe iilayini ezingenanto.

Emva kokuqaliswa kokuqala, iskripthi senza inkqubo ye-indexing, kungakhathaliseki ukuba kuyimfuneko okanye akunjalo, kwaye iskripthi sisenza kwakhona isalathisi senani leefayile kwi-directory nganye ehambelanayo.

Injongo yeskripthi kukubala zonke iifayile kuluhlu oluchaziweyo.

Ekupheleni kokubala ulawulo ngalunye, ukuba ubuncinane kulawulo olunye ixabiso langoku leefayile alihambelani nolo lwangaphambili, iscript sisusa iifayile kulawulo lweengcambu zolawulo lweposi oludityanisiweyo: index.fld, indexlog.fld, search.fld kwaye iqala inkqubo yesalathiso yeefolda zeposi ekwabelwana ngazo.

Ulwazi malunga nokwenziwa komsebenzi ilahlwa kulawulo lweLOG.

Inkqubo yamanqaku
Inkqubo yesalathiso yehla ukwenza umsebenzi we-Kerio API
Iseshoni = callMethod("Domains.checkPublicFoldersIntegrity",{}, uphawu)

Umzekelo wokuphunyezwa unikwe kwi-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 ungayishiya njengoko injalo, kodwa ukuba ufuna iHTTPS, ipithon kufuneka ithembe isatifikethi seKerio.

Kwakhona kwifayile kufuneka ucacise i-akhawunti enamalungelo okwenza lo msebenzi (Adm - iifolda zeposi zikawonke-wonke) zomncedisi weposi.

Ndiyathemba ukuba inqaku lam liya kuba luncedo kubalawuli beKerio Connect.

umthombo: www.habr.com

Yongeza izimvo