Ukuvumelanisa okugcwele kwamafolda abelwene, abathintwayo, amakhalenda phakathi kwamaseva e-Kerio Connect asabalalisiwe

Sawubona, Habr!

Inhloso

Inhlangano yami isebenzisa iseva yemeyili kunkundla ye-Kerio Connect; amaseva e-imeyili afakwe emadolobheni ahlukene ukuze anikeze abasebenzisi bawo. Ekuqaleni kwakungekho sakhiwo esabiwe, njengoba izizinda zihluka ezingeni lesithathu, okubonisa idolobha lesayithi. Konke kwasebenza futhi wonke umuntu wayejabule. Ngolunye usuku oluhle, abaphathi babeka umsebenzi, ikhalenda elivamile lemisebenzi phakathi kwazo zonke izingosi!

prehistory

Ekuqaleni, umbono wawuwukukhulisa i-Kerio Distributed Mail Domain futhi izokwenza yonke into ngokwayo. Ngokushesha nje lapho kwenziwa, isizinda esabiwe sadalwa, kodwa akunjalo, iseva yayilungele ukuvumelanisa amakhalenda, amafolda, othintana nabo - phakathi kwezizinda ezitholakala kuseva efanayo, kodwa yayingeke nhlobo ivumelanise idatha phakathi kweziningana. amaseva.

Mina, vele, angizange ngilindele ukubanjwa okunjalo futhi isikhathi eside ngangingakholwa ukuthi ukusebenza engangikudinga kwakungekho. Kamuva ngathola ubufakazi obubhalwe phansi baleli qiniso. Kwangixaka kakhulu futhi kwangidumaza lokhu.

Umsebenzi waphenduka kahle waba inkinga.

Iziphi izinketho?

  • Dala amaklayenti amabili kumaseva ahlukene ashintshanisa idatha edingekayo nesofthiwe yomuntu wesithathu. Bekudingekile ukuthola le software yomuntu wesithathu ezosebenzisa lokhu kusebenza - angithandi ireki enjalo, kodwa bekubonakala sengathi lesi ukuphela kwesixazululo esisheshayo.
  • Bhala esakho isikripthi sokuvumelanisa idatha phakathi kwamaseva. Iqiniso liwukuthi i-Kerio igcina into ngayinye njengefayela elihlukile, ngakho-ke kwakudingeka ukuthi kuthuthukiswe iskripthi sokusebenza ngamafayela, kodwa ngenxa yenombolo eyanele yemithombo, umsebenzi wawubonakala uyinkimbinkimbi, ikakhulukazi njengoba kwakudingekile ukwenza okuningi. ihlola ukufaneleka kwedatha, uma kwenzeka othile edala umsebenzi ngesikhathi esifanayo, njll., njll.

Uma ngibheka phambili, ngizosho ukuthi nakuba uKerio egcina into njengefayela elihlukile, akusona isiphukuphuku sokubuza ukuthi uhlelo lwefayela lenza kanjani njalo lapho ufinyelela into.

Ngemva kokuchitha isikhathi esiningi ngicabanga, ngidweba inqwaba yamaphepha ngamasu β€œokuthumba indawo yesitha,” ngehora lesi-6 ngenza izinqumo ezimbili ezifanele:

  • Isinqumo sokuqala wukwenza izinto zakho ungabheki lutho ngaphandle.
  • Isixazululo sesibili wukulala.

Kakade ekuseni ngavuka nomcabango owodwa noweqiniso, owancishiswa waba yizinhlamvu ezimbalwa - DFS

Isixazululo

Isixazululo ngokwaso sasibukeka kanje

  • letha wonke amaseva azobamba iqhaza ekuvunyelanisweni kwe-OS Windows. (Ingxenye yayo beku-Linux. Ukuthuthwa kwedatha yemeyili kwenye i-OS bekudingeka)
  • Nquma ukwakheka kwezinkomba ezizobamba iqhaza ekuvumelaniseni - kufanele zifane.
  • Chaza wonke amaseva e-imeyili ngaphansi kwesizinda esisodwa esinesikhala esisodwa se-DFS.
  • Dala isizinda se-Kerio esishiwo ngenhla, njengoba esimweni sami ukuvumelanisa idatha kuyadingeka, hhayi kuphela phakathi kwamaseva kodwa futhi phakathi kwezizinda; okwesibili kungaphathwa iseva ye-Kerio ngokuzimela. (ngokungafani neyokuqala)
  • Setha uhla lwemibhalo oluvumelanisiwe kusikhala se-DFS.
  • Woza nohlobo oluthile lwe-crutch (phela awukwazi ukuphila ngaphandle kodondolo)

Ukuqaliswa

Isibonelo kumaseva amabili e-imeyili (mhlawumbe ngaphezulu)

1. Isizinda Esisabalalisiwe se-Kerio

Ukuvumelanisa okugcwele kwamafolda abelwene, abathintwayo, amakhalenda phakathi kwamaseva e-Kerio Connect asabalalisiwe

I-Master ayibambi iqhaza ekuvumelaniseni, kodwa lokhu akuyona imfuneko.

Ngeke ngichaze indlela yokukhulisa isizinda esabiwe se-Kerio, akukho lutho oluyinkimbinkimbi ngakho, ungafunda isikhulu indoda

Ekugcineni, kufanele ubone isithombe esilandelayo kukhonsoli yokuphatha:

Ukuvumelanisa okugcwele kwamafolda abelwene, abathintwayo, amakhalenda phakathi kwamaseva e-Kerio Connect asabalalisiwe

Ukuvumelanisa okugcwele kwamafolda abelwene, abathintwayo, amakhalenda phakathi kwamaseva e-Kerio Connect asabalalisiwe

Okulandelayo ngaba nentshisekelo kumafolda okwabelwana ngawo; kuseva Eyinhloko ungacacisa izinketho ezilandelayo:

Ukuvumelanisa okugcwele kwamafolda abelwene, abathintwayo, amakhalenda phakathi kwamaseva e-Kerio Connect asabalalisiwe

Ukuvumelanisa okugcwele kwamafolda abelwene, abathintwayo, amakhalenda phakathi kwamaseva e-Kerio Connect asabalalisiwe

Icacile ngesizinda ngasinye - iseva ngeke ivumelanise amafolda omphakathi phakathi kwezizinda

Okujwayelekile kuzo zonke izizinda - zonke iziphakeli zizoshiya amafolda asesidlangalaleni akhona esizindeni ngasinye futhi zenze amafolda amasha azo zonke izizinda kuseva yemeyili ngayinye.

Ukuqapha Nakuba le nketho ishintsha inqubomgomo yokumisa kuwo wonke amaseva, ivumelanisa ngokuhlukile kuseva ngayinye (okungukuthi, ngaphandle kwendawo eyodwa evamile)

Umlawuli usazoba nekhono lokusabalalisa ukufinyelela phakathi kwabasebenzisi.
esimweni sami, zonke zingezami futhi ngidinga ukuvumelanisa okugcwele (Endabeni yakho, isisombululo singase sihluke) kuseva ngayinye udinga ukudala amasethi afanayo ezizinda ezidinga ukuvumelanisa.

2. Izinkomba zedatha ye-Kerio

Manje udinga ukudala uhla lwemibhalo olwabiwe olufanayo oludinga ukuvumelanisa kuseva ngayinye. Amafolda, Amakhalenda, Oxhumana nabo.

Iseluleko - dala izinkomba ngesiNgisi, uma uzidala ngesiLatini, uhla lwemibhalo luzoba negama ekubhalweni ngekhodi okungaqondakali, lokhu okungenani akulungile.

Manje udinga ukuthola izindlela ezibonakalayo zamafolda e-imeyili kuseva ngayinye.

Okujwayelekile kuzo zonke izizinda ~DataMailmail#publicΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³#msgs
Icacile ngesizinda ngasinye ~DataMailmail**Domain**#publicΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³#msgs

Sicela uqaphele ukuthi ngeke sivumelanise lonke uhla lwemibhalo, kodwa kuphela isiqukathi esinedatha #imiyalezo β€” izinto ngokwazo zigcinwa lapha, yonke eminye imininingwane kufanele ihlukaniswe kuseva ngayinye.

3.DFS

Ngeke ngichaze ngokuningiliziwe indlela yokumisa i-DFS, kukhona ulwazi olwanele ngalolu daba.

I-DFS iyisevisi yendima ku-Windows Server enikeza amandla okuhlanganisa amafolda abelwe atholakala kumaseva ahlukene
Xhuma kudokhumenti ye-MS DFS

Ngaphambi kokumisa i-DFS, kufanele umise zonke iziphakeli zemeyili ezizobamba iqhaza ekuvunyelanisweni kwedatha.

Ngemva kokuqeda ukusetha, kufanele uthole isithombe esilandelayo sefolda ngayinye evumelanisiwe

Ukuvumelanisa okugcwele kwamafolda abelwene, abathintwayo, amakhalenda phakathi kwamaseva e-Kerio Connect asabalalisiwe

Ngokwemvelo, asikho isidingo sokushicilela amafolda aphindaphindiwe.

Ukuvumelanisa okugcwele kwamafolda abelwene, abathintwayo, amakhalenda phakathi kwamaseva e-Kerio Connect asabalalisiwe

Ngemva kokuphindaphinda kwenzeka (futhi akukho okukhethekile okuphindaphindayo lapho - amafolda awanalutho), amaseva e-imeyili angaqalwa.

Okulandelayo, ungagcwalisa enye yeziphakeli zemeyili ngedatha futhi uhlole ukuthi idatha iphindwe ngendlela efanele.

4. Udondolo

Incazelo yokucabanga

Njengoba ungabona ngemva kokuba idatha iqala ukuvumelanisa (i-DFS), uma udale okuthile kuseva yokuqala, ngandlela-thile akukho lutho oluvela kuseva yesibili, noma luvela kodwa ngandlela-thile hhayi njalo.

Ungalahli ithemba; yebo, izovela lapho maduze noma kamuva, kodwa kungcono ngokushesha kunakamuva. Ngoba sekwephuze kakhulu emahoreni angu-6 - 12.

Into ewukuthi lapho nje udale okuthile kuseva yokuqala, kumaseva wesibili nalandelayo ifayela lizovela ngokushesha ngenxa yesistimu ye-DFS, kodwa uma kwenzeka ukuthi le mibhalo yemeyili isivele ifundwe ngumuntu ngaphambili. futhi siyacelwa futhi, iseva ngeke iphinde ifunde #msgs ifolda kodwa izokhafula idatha evela kunkomba yayo, okungenzeka ingasahambisani neqiniso lethu.

I-Kerio inomshini wokufunda kabusha inkomba, kodwa ingasebenza cishe emahoreni ayisithupha, futhi phakathi nala mahora angu-6 ukuhlobana komsebenzi ekhalendeni kungase kulahleke ngandlela thile.
Ukuze uhlole ukuvumelanisa njengamanje, ungakwazi ukususa ifayela ohlwini lwemibhalo oluhambisanayo index.fld, ngemva kokuphinda ufinyelele ifolda kuseva yemeyili futhi uma leli fayela lingekho, uKerio uzophinda afunde uhla lwemibhalo kanye nedatha. izovela. Kungase kubonakale sengathi lesi yisixazululo, susa ifayela lapho idatha ishintsha, kodwa lokhu akusebenzi ngaso sonke isikhathi, kodwa okokuqala kuphela, khona-ke uKerio ngesizathu esithile ulahlekelwa yonke isithakazelo ku-index.fld
Iphinde iqale ukukhafula imilayezo engaqondakali kumsebenzisi - mayelana nohlobo oluthile lwenkomba nokuthi usevele wenza okuthile lapho.

Kukhona enye inketho, ukudala okuthile - ngesikhathi sokudala into entsha, iseva ibona ngokuzumayo ukuthi igama lefayela elifuna ukulinika selithathiwe, kodwa liyi-snowballs futhi lokhu kuyinketho yokuphela.

Kanjani?

Uma siphinde sinake isithombe esesivele sijwayelekile.

Ukuvumelanisa okugcwele kwamafolda abelwene, abathintwayo, amakhalenda phakathi kwamaseva e-Kerio Connect asabalalisiwe

Kodwa kwenye indiza, ungabona inkinobho ethakazelisa kakhulu esiyidingayo manje - Amafolda e-Reindex

Futhi ngempela. Uma sichofoza le nkinobho kuseva yemeyili engazi ukuthi kukhona osekushintshile vele ku-#msgs evumelanisiwe, sizothola umphumela ozinzile, osheshayo. Konke okufihliwe kuzocaca.

Kulogi ungabona ukuthi le nqubo ithatha isikhathi esingakanani; esimweni sami ngamarekhodi ayizinkulungwane ezimbalwa (ayizinkulungwane ezingu-15) kuthatha cishe imizuzu engu-3-4.

Okufanele sikwenze ukuthola ukuthi siyicindezela kanjani ngempela le nkinobho uma siyidinga.

Kuvele I-Kerio babe nezabo API

Incazelo
Imibhalo

Umsebenzi owenza umsebenzi wethu ubukeka kanje:
session = callMethod("Domains.checkPublicFoldersIntegrity",{}, token)

Kusukela kukho konke okungenhla, sidinga ukubhala iskripthi esingaqapha isimo samafolda anentshisekelo futhi, uma kukhona okushintshile, senze umsebenzi esiwudingayo.

Ngifuna ukusho ukuthi ngibhale izinguqulo eziningana ezihlukene zeskripthi ezenza amasheke ahlukene, futhi ngahlala kulowo odonsa zonke iziphetho ngokusekelwe enanini lamafayela.

Ukuqaliswa kombhalo

Isibonelo sombhalo we-CMD nencazelo

Phinda ukhombise.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

Ikhophi yombhalo isebenza kuseva yemeyili ngayinye (ingasetshenziswa njengesevisi, amalungelo e-Adm awadingeki)

Umbhalo uyalifunda ifayela Setup%Computername%.List

Lapho i-%Computername% kuyigama leseva yamanje (Uhla lwemibhalo lungaqukatha uhlu lwazo zonke iziphakeli ngesikhathi esisodwa.)

Ifayela %Computername%.Uhlu - luqukethe izindlela ezigcwele zezinkomba ezivumelanisiwe, indlela ngayinye ibhalwa emugqeni omusha, futhi akufanele ibe nemigqa engenalutho.

Ngemva kokwethulwa kokuqala, iskripthi senza inqubo yokukhomba, kungakhathaliseki ukuthi kudingekile noma cha, futhi iskripthi siphinde sidale inkomba yenani lamafayela kumkhombandlela ngamunye ovumelanisiwe.

Inhloso yombhalo iwukubala wonke amafayela ohlwini lwemibhalo olushiwo.

Ekupheleni kokubala uhla lwemibhalo ngalunye, uma okungenani kunkomba eyodwa inani lamanje lamafayela lingafani nowangaphambili, umbhalo ususa amafayela kumsuka wohlu lwemibhalo yemeyili evumelanisiwe: index.fld, indexlog.fld, search.fld futhi iqala inqubo yokukhomba yamafolda e-imeyili okwabelwana ngayo.

Ulwazi olumayelana nokwenza umsebenzi lulahlwa kuhla lwemibhalo lwe-LOG.

Inqubo yokwenza inkomba
Inqubo yokukhomba yehlela ekusebenziseni umsebenzi we-Kerio API
Iseshini = callMethod("Domains.checkPublicFoldersIntegrity",{}, ithokheni)

Ukuqaliswa kwesibonelo kunikezwa ku-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 njengoba injalo, kodwa uma udinga i-HTTPS, i-python kufanele ithembe isitifiketi se-Kerio.

Futhi efayeleni kufanele ucacise i-akhawunti enamalungelo okwenza lo msebenzi (Adm - amafolda e-mail yomphakathi) yeseva yemeyili.

Ngithemba ukuthi isihloko sami sizoba usizo kubaphathi be-Kerio Connect.

Source: www.habr.com

Engeza amazwana