Kuweka kumbukumbu kwa matukio yote yanayotokea ni mojawapo ya kazi muhimu zaidi za mfumo wowote wa ushirika. Kumbukumbu inakuwezesha kutatua matatizo yanayojitokeza, kukagua uendeshaji wa mifumo ya habari, na pia kuchunguza matukio ya usalama wa habari. Zimbra OSE pia huweka kumbukumbu za kina za uendeshaji wake. Zinajumuisha data zote kutoka kwa utendakazi wa seva hadi kutuma na kupokea barua pepe kutoka kwa watumiaji. Walakini, kusoma magogo yaliyotolewa na Zimbra OSE ni kazi isiyo ya kawaida. Katika makala hii, kwa kutumia mfano maalum, tutakuambia jinsi ya kusoma magogo ya Zimbra OSE, na pia jinsi ya kuwafanya kuwa kati.

Zimbra OSE huhifadhi kumbukumbu zote za ndani kwenye /opt/zimbra/log folda, na kumbukumbu zinaweza pia kupatikana kwenye /var/log/zimbra.log faili. Muhimu zaidi kati ya hizi ni mailbox.log. Inarekodi vitendo vyote vinavyotokea kwenye seva ya barua. Hizi ni pamoja na uwasilishaji wa barua pepe, data ya uthibitishaji wa mtumiaji, majaribio yasiyofanikiwa ya kuingia na mengine. Maingizo katika mailbox.log ni mfuatano wa maandishi ambao una wakati ambapo tukio lilitokea, kiwango cha tukio, nambari ya mazungumzo ambayo tukio lilitokea, jina la mtumiaji na anwani ya IP, pamoja na maelezo ya maandishi ya tukio. .

Kiwango cha kumbukumbu kinaonyesha kiwango cha ushawishi wa tukio kwenye uendeshaji wa seva. Kwa chaguo-msingi kuna viwango 4 vya matukio: INFO, WARN, ERROR na FATAL. Wacha tuangalie viwango vyote katika kuongeza mpangilio wa ukali.
- MAELEZO - Matukio katika kiwango hiki kwa kawaida hulenga kufahamisha kuhusu maendeleo ya Zimbra OSE. Ujumbe katika kiwango hiki ni pamoja na ripoti za kuunda au kufutwa kwa kisanduku cha barua, na kadhalika.
- ONYA - matukio ya kiwango hiki yanafahamisha kuhusu hali ambazo zinaweza kuwa hatari, lakini haziathiri uendeshaji wa seva. Kwa mfano, kiwango cha WARN kinaashiria ujumbe kuhusu jaribio la kuingia la mtumiaji lisilofaulu.
- HITILAFU - kiwango hiki cha tukio kwenye logi kinaarifu kuhusu kutokea kwa hitilafu ambayo ni ya kawaida na haiingiliani na uendeshaji wa seva. Kiwango hiki kinaweza kuripoti hitilafu ambapo data ya faharasa ya mtu binafsi imeharibika.
- FATAL - kiwango hiki kinaonyesha makosa ambayo seva haiwezi kuendelea kufanya kazi kama kawaida. Kwa mfano, kiwango cha FATAL kitakuwa cha rekodi inayoonyesha kutokuwa na uwezo wa kuunganisha kwenye DBMS.
Faili ya kumbukumbu ya seva ya barua inasasishwa kila siku. Toleo la hivi karibuni la faili daima lina jina Mailbox.log, wakati kumbukumbu za tarehe fulani zina tarehe katika jina na ziko kwenye kumbukumbu. Kwa mfano mailbox.log.2020-09-29.tar.gz. Hii hurahisisha zaidi kuhifadhi kumbukumbu za shughuli na kutafuta kupitia kumbukumbu.
Kwa urahisi wa msimamizi wa mfumo, folda ya /opt/zimbra/log/ ina kumbukumbu zingine. Zinajumuisha maingizo yanayohusiana na vipengele maalum vya Zimbra OSE. Kwa mfano, audit.log ina rekodi tu kuhusu uthibitishaji wa mtumiaji, clamd.log ina data kuhusu uendeshaji wa antivirus, na kadhalika. Kwa njia, njia bora ya kulinda seva ya Zimbra OSE kutoka kwa waingilizi ni , ambayo inafanya kazi tu kulingana na audit.log. Pia ni mazoezi mazuri kuongeza kazi ya cron kutekeleza amri grep -ir "nenosiri batili" /opt/zimbra/log/audit.logkupokea taarifa za kushindwa kuingia kila siku.

Mfano wa jinsi audit.log inavyoonyesha nenosiri lililowekwa mara mbili kimakosa na jaribio la kuingia lililofaulu.
Kumbukumbu katika Zimbra OSE inaweza kuwa muhimu sana katika kutambua sababu za kushindwa kwa msingi mbalimbali. Kwa sasa wakati kosa kubwa linatokea, msimamizi kawaida hana wakati wa kusoma kumbukumbu. Inahitajika kurejesha seva haraka iwezekanavyo. Hata hivyo, baadaye, seva inapohifadhiwa na kuzalisha kumbukumbu nyingi, inaweza kuwa vigumu kupata kiingilio kinachohitajika kwenye faili kubwa. Ili kupata haraka rekodi ya hitilafu, inatosha kujua wakati ambapo seva ilianzishwa upya na kupata kiingilio katika kumbukumbu za tarehe kutoka wakati huu. Ingizo la awali litakuwa rekodi ya hitilafu iliyotokea. Unaweza pia kupata ujumbe wa makosa kwa kutafuta neno kuu FATAL.
Kumbukumbu za Zimbra OSE pia hukuruhusu kutambua makosa yasiyo ya muhimu. Kwa mfano, ili kupata vighairi vya kidhibiti, unaweza kutafuta ubaguzi wa kidhibiti. Mara nyingi, makosa yanayotokana na washughulikiaji yanaambatana na ufuatiliaji wa rafu ambao unaelezea kilichosababisha ubaguzi. Katika kesi ya hitilafu na uwasilishaji wa barua, unapaswa kuanza utafutaji wako na neno kuu la LmtpServer, na kutafuta hitilafu zinazohusiana na itifaki za POP au IMAP, unaweza kutumia ImapServer na Pop3Server maneno.
Kumbukumbu pia zinaweza kusaidia katika kuchunguza matukio ya usalama wa habari. Hebu tufikirie mfano maalum: Mnamo Septemba 20, mfanyakazi alituma barua pepe iliyoambukizwa virusi kwa mteja. Kwa sababu hiyo, data kwenye kompyuta ya mteja ilisimbwa kwa njia fiche. Hata hivyo, mfanyakazi huyo anaapa kwamba hakutuma chochote. Kama sehemu ya uchunguzi wa tukio hilo, huduma ya usalama ya kampuni inamwomba msimamizi wa mfumo kutoa kumbukumbu za seva ya barua pepe kwa Septemba 20 zinazohusiana na mtumiaji anayechunguzwa. Kwa kutumia muhuri wa muda, msimamizi wa mfumo hupata faili husika ya kumbukumbu, hutoa taarifa muhimu, na kuzipitisha kwa wataalamu wa usalama. Wao, nao, hukagua kumbukumbu hizo na kugundua kwamba anwani ya IP ambayo barua pepe ilitumwa inalingana. Anwani ya IP Kompyuta ya mtumiaji. Picha za CCTV zilithibitisha kwamba mfanyakazi huyo alikuwa mezani mwake wakati barua pepe hiyo ilipotumwa. Ushahidi huu ulitosha kumshtaki kwa kukiuka kanuni za usalama wa habari na kumfukuza kazi.

Mfano wa kutoa rekodi kuhusu moja ya akaunti kutoka Mailbox.log ingia kwenye faili tofauti
Kila kitu kinakuwa ngumu zaidi linapokuja suala la miundombinu ya seva nyingi. Kwa kuwa kumbukumbu zinakusanywa ndani ya nchi, kufanya kazi nazo katika miundombinu ya seva nyingi ni ngumu sana na kwa hivyo kuna haja ya kuweka mkusanyiko wa kumbukumbu kati. Hili linaweza kufanywa kwa kusanidi mwenyeji kukusanya kumbukumbu. Hakuna haja maalum ya kuongeza mwenyeji aliyejitolea kwa miundombinu. Seva yoyote ya barua inaweza kufanya kama nodi ya kukusanya kumbukumbu. Kwa upande wetu, hii itakuwa nodi ya Mailstore01.
Kwenye seva hii tunahitaji kuingiza amri zifuatazo:
sudo su – zimbra
zmcontrol stop
exit
sudo /opt/zimbra/libexec/zmfixperms -e -vHariri /etc/sysconfig/rsyslog faili, na weka SYSLOGD_OPTIONS=”-r -c 2″
Hariri /etc/rsyslog.conf na utoe maoni kwa mistari ifuatayo:
$ModLoad imudp
$UDPServerRun 514
Ingiza amri zifuatazo:
sudo /etc/init.d/rsyslog stop
sudo /etc/init.d/rsyslog start
sudo su – zimbra
zmcontrol start
exit
sudo /opt/zimbra/libexec/zmloggerinit
sudo /opt/zimbra/bin/zmsshkeygen
sudo /opt/zimbra/bin/zmupdateauthkeysUnaweza kuangalia kuwa kila kitu kinafanya kazi kwa kutumia amri zmprov gacf | grep zimbraLogHostname. Baada ya kutekeleza amri, jina la mwenyeji anayekusanya kumbukumbu linapaswa kuonyeshwa. Ili kuibadilisha, lazima uweke amri zmprov mcf zimbraLogHostname mailstore01.company.ru.
Kwenye seva zingine zote za miundombinu (LDAP, MTA na maduka mengine ya barua), endesha amri zmprov gacf |grep zimbraLogHostname ili kuona jina la seva pangishi ambako kumbukumbu zinatumwa. Ili kuibadilisha, unaweza pia kuingiza amri zmprov mcf zimbraLogHostname mailstore01.company.ru
Lazima pia uweke amri zifuatazo kwenye kila seva:
sudo su - zimbra
/opt/zimbra/bin/zmsshkeygen
/opt/zimbra/bin/zmupdateauthkeys
exit
sudo /opt/zimbra/libexec/zmsyslogsetup
sudo service rsyslog restart
sudo su - zimbra
zmcontrol restartBaada ya hayo, kumbukumbu zote zitarekodiwa kwenye seva uliyotaja, ambapo zinaweza kutazamwa kwa urahisi. Pia, katika koni ya msimamizi wa Zimbra OSE, kwenye skrini iliyo na habari kuhusu hali ya seva, huduma ya Logger inayoendesha itaonyeshwa tu kwa seva ya mailstore01.

Kichwa kingine cha kichwa kwa msimamizi kinaweza kuwa kufuatilia barua pepe maalum. Kwa kuwa barua pepe katika Zimbra OSE hupitia matukio kadhaa tofauti mara moja: skanning na antivirus, antispam, na kadhalika, kabla ya kukubaliwa au kutumwa, kwa msimamizi, ikiwa barua pepe haipatikani, inaweza kuwa tatizo kabisa kufuatilia katika hatua gani. ilipotea.
Ili kutatua tatizo hili, unaweza kutumia script maalum, ambayo ilitengenezwa na mtaalamu wa usalama wa habari Viktor Dukhovny na ilipendekeza kwa matumizi ya watengenezaji wa Postfix. Hati hii inashikilia maingizo kutoka kwa kumbukumbu kwa mchakato maalum na, kwa sababu ya hii, hukuruhusu kuonyesha haraka maingizo yote yanayohusiana na kutuma barua fulani kulingana na kitambulisho chake. Kazi yake imejaribiwa kwenye matoleo yote ya Zimbra OSE, kuanzia 8.7. Hapa kuna maandishi ya hati.
#! /usr/bin/perl
use strict;
use warnings;
# Postfix delivery agents
my @agents = qw(discard error lmtp local pipe smtp virtual);
my $instre = qr{(?x)
A # Absolute line start
(?:S+ s+){3} # Timestamp, adjust for other time formats
S+ s+ # Hostname
(postfix(?:-[^/s]+)?) # Capture instance name stopping before first '/'
(?:/S+)* # Optional non-captured '/'-delimited qualifiers
/ # Final '/' before the daemon program name
};
my $cmdpidre = qr{(?x)
G # Continue from previous match
(S+)[(d+)]:s+ # command[pid]:
};
my %smtpd;
my %smtp;
my %transaction;
my $i = 0;
my %seqno;
my %isagent = map { ($_, 1) } @agents;
while (<>) {
next unless m{$instre}ogc; my $inst = $1;
next unless m{$cmdpidre}ogc; my $command = $1; my $pid = $2;
if ($command eq "smtpd") {
if (m{Gconnect from }gc) {
# Start new log
$smtpd{$pid}->{"log"} = $_; next;
}
$smtpd{$pid}->{"log"} .= $_;
if (m{G(w+): client=}gc) {
# Fresh transaction
my $qid = "$inst/$1";
$smtpd{$pid}->{"qid"} = $qid;
$transaction{$qid} = $smtpd{$pid}->{"log"};
$seqno{$qid} = ++$i;
next;
}
my $qid = $smtpd{$pid}->{"qid"};
$transaction{$qid} .= $_
if (defined($qid) && exists $transaction{$qid});
delete $smtpd{$pid} if (m{Gdisconnect from}gc);
next;
}
if ($command eq "pickup") {
if (m{G(w+): uid=}gc) {
my $qid = "$inst/$1";
$transaction{$qid} = $_;
$seqno{$qid} = ++$i;
}
next;
}
# bounce(8) logs transaction start after cleanup(8) already logged
# the message-id, so the cleanup log entry may be first
#
if ($command eq "cleanup") {
next unless (m{G(w+): }gc);
my $qid = "$inst/$1";
$transaction{$qid} .= $_;
$seqno{$qid} = ++$i if (! exists $seqno{$qid});
next;
}
if ($command eq "qmgr") {
next unless (m{G(w+): }gc);
my $qid = "$inst/$1";
if (defined($transaction{$qid})) {
$transaction{$qid} .= $_;
if (m{Gremoved$}gc) {
print delete $transaction{$qid}, "n";
}
}
next;
}
# Save pre-delivery messages for smtp(8) and lmtp(8)
#
if ($command eq "smtp" || $command eq "lmtp") {
$smtp{$pid} .= $_;
if (m{G(w+): to=}gc) {
my $qid = "$inst/$1";
if (defined($transaction{$qid})) {
$transaction{$qid} .= $smtp{$pid};
}
delete $smtp{$pid};
}
next;
}
if ($command eq "bounce") {
if (m{G(w+): .*? notification: (w+)$}gc) {
my $qid = "$inst/$1";
my $newid = "$inst/$2";
if (defined($transaction{$qid})) {
$transaction{$qid} .= $_;
}
$transaction{$newid} =
$_ . $transaction{$newid};
$seqno{$newid} = ++$i if (! exists $seqno{$newid});
}
next;
}
if ($isagent{$command}) {
if (m{G(w+): to=}gc) {
my $qid = "$inst/$1";
if (defined($transaction{$qid})) {
$transaction{$qid} .= $_;
}
}
next;
}
}
# Dump logs of incomplete transactions.
foreach my $qid (sort {$seqno{$a} <=> $seqno{$b}} keys %transaction) {
print $transaction{$qid}, "n";
}Hati imeandikwa kwa Perl na ili kuiendesha unahitaji kuihifadhi kwenye faili kusanya.pl, ifanye itekelezwe, na kisha endesha faili inayobainisha faili ya logi na kutumia pgrep kutoa habari ya kitambulisho cha barua unayotafuta. Collate.pl /var/log/zimbra.log | pgrep '<20200929164500.user@mail.company.ru>'. Matokeo yake yatakuwa matokeo ya mlolongo wa mistari iliyo na habari kuhusu harakati za barua kwenye seva.
# collate.pl /var/log/zimbra.log | pgrep '<20200929101700.user@mail.company.ru>'
Oct 13 10:17:00 mail postfix/pickup[4089]: 4FF14284F45: uid=1034 from=********
Oct 13 10:17:00 mail postfix/cleanup[26776]: 4FF14284F45: message-id=*******
Oct 13 10:17:00 mail postfix/qmgr[9946]: 4FF14284F45: from=********, size=1387, nrcpt=1 (queue active)
Oct 13 10:17:00 mail postfix/smtp[7516]: Anonymous TLS connection established to mail.*******[168.*.*.4]:25: TLSv1 with cipher ADH-AES256-SHA (256/256 bits)
Oct 13 10:17:00 mail postfix/smtp[7516]: 4FF14284F45: to=*********, relay=mail.*******[168.*.*.4]:25, delay=0.25, delays=0.02/0.02/0.16/0.06, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 878833424CF)
Oct 13 10:17:00 mail postfix/qmgr[9946]: 4FF14284F45: removed
Oct 13 10:17:07 mail postfix/smtpd[21777]: connect from zimbra.******[168.*.*.4]
Oct 13 10:17:07 mail postfix/smtpd[21777]: Anonymous TLS connection established from zimbra.******[168.*.*.4]: TLSv1 with cipher ADH-AES256-SHA (256/256 bits)
Oct 13 10:17:08 mail postfix/smtpd[21777]: 0CB69282F4E: client=zimbra.******[168.*.*.4]
Oct 13 10:17:08 mail postfix/cleanup[26776]: 0CB69282F4E: message-id=zimbra.******
Oct 13 10:17:08 mail postfix/qmgr[9946]: 0CB69282F4E: from=zimbra.******, size=3606, nrcpt=1 (queue active)
Oct 13 10:17:08 mail postfix/virtual[5291]: 0CB69282F4E: to=zimbra.******, orig_to=zimbra.******, relay=virtual, delay=0.03, delays=0.02/0/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
Oct 13 10:17:08 mail postfix/qmgr[9946]: 0CB69282F4E: removedKwa maswali yote yanayohusiana na Zextras Suite, unaweza kuwasiliana na Mwakilishi wa Zextras Ekaterina Triandafilidi kwa barua pepe katerina@zextras.com
Chanzo: mapenzi.com
