Meriv çawa bi têketinên Zimbra OSE re dixebite

Têketina hemî bûyerên diqewimin yek ji fonksiyonên herî girîng ên pergala pargîdanî ye. Têketin dihêlin hûn pirsgirêkên derketine çareser bikin, xebata pergalên agahdariyê kontrol bikin, û her weha bûyerên ewlehiya agahdariyê jî lêkolîn bikin. Zimbra OSE di heman demê de têketinên berfireh ên xebata xwe jî digire. Ew hemî daneyan ji performansa serverê heya şandin û wergirtina e-nameyên ji hêla bikarhêneran ve vedigirin. Lêbelê, xwendina têketinên ku ji hêla Zimbra OSE ve hatî çêkirin karekî pir ne-pîvan e. Di vê gotarê de, bi karanîna mînakek taybetî, em ê ji we re vebêjin ka meriv çawa têketinên Zimbra OSE dixwîne, û hem jî meriv wan çawa navendî dike.

Meriv çawa bi têketinên Zimbra OSE re dixebite
Zimbra OSE hemî têketinên herêmî di peldanka /opt/zimbra/log de hilîne, û têketin dikarin di pelê /var/log/zimbra.log de jî werin dîtin. Ji van ya herî girîng mailbox.log e. Ew hemî kiryarên ku li ser servera nameyê diqewimin tomar dike. Di nav wan de veguheztina e-name, daneyên pejirandina bikarhêner, hewildanên têketinê yên têkçûyî û yên din hene. Têketinên di mailbox.log de rêzikek nivîsê ye ku tê de dema ku bûyer qewimî, asta bûyerê, jimareya mijara ku bûyer tê de qewimî, navê bikarhêner û navnîşana IP-yê, û her weha ravekek nivîsê ya bûyerê vedihewîne. .

Meriv çawa bi têketinên Zimbra OSE re dixebite

Asta têketinê asta bandora bûyerê li ser xebata serverê destnîşan dike. Bi xwerû 4 astên bûyerê hene: INFO, HIŞYAR, ERROR û FATAL. Werin em li her astê bi rêza giraniya zêde binihêrin.

  • INFO - Bûyerên di vê astê de bi gelemperî têne armanc kirin ku di derbarê pêşkeftina Zimbra OSE de agahdar bikin. Peyamên di vê astê de raporên li ser çêkirin an jêbirina qutiyek posteyê û hwd hene.
  • HIŞYAR - Bûyerên vê astê li ser rewşên ku potansiyel xeternak in agahdar dikin, lê bandorê li xebata serverê nakin. Mînakî, asta WARN peyamek li ser hewildanek têketina bikarhêner a têkçûyî nîşan dide.
  • ERROR - ev asta bûyerê di têketinê de li ser qewimîna xeletiyek ku di xwezaya xwe de herêmî ye û di xebata serverê de mudaxele nake agahdar dike. Ev ast dikare xeletiyek ku tê de daneya navnîşa bikarhênerek kesane xera bûye nîşan bide.
  • FATAL - ev ast xeletiyên ku ji ber wan server nikare bi rengek normal berdewam bike destnîşan dike. Mînakî, asta FATAL dê ji bo tomarek be ku nebûna girêdana bi DBMS-ê re destnîşan dike.

Pelê têketinê ya servera nameyê her roj tê nûve kirin. Guhertoya herî dawî ya pelê her gav navê Mailbox.log heye, lê têketinên ji bo tarîxek diyarkirî di nav de dîrokek heye û di arşîvê de hene. Mînakî mailbox.log.2020-09-29.tar.gz. Ev yek pir hêsantir dike ku paşvegirtina têketinên çalakiyê û lêgerîna di nav têketinan de.

Ji bo rehetiya rêvebirê pergalê, peldanka /opt/zimbra/log/ têketinên din dihewîne. Ew tenê navnîşên ku bi hêmanên taybetî yên Zimbra OSE ve girêdayî ne vedigirin. Mînakî, audit.log tenê qeydên li ser rastkirina bikarhêner vedihewîne, clamd.log daneyên di derbarê xebata antivirus de, û hwd. Bi awayê, rêbazek hêja ya parastina serverek Zimbra OSE ji dagirkeran e parastina serverê bi karanîna Fail2Ban, ku tenê li ser bingeha audit.log dixebite. Di heman demê de pratîkek baş e ku meriv peywirek kron lê zêde bike da ku fermanê bicîh bîne grep -ir "şîfreya nederbasdar" /opt/zimbra/log/audit.logji bo wergirtina agahdariya têkçûna têketinê ya rojane.

Meriv çawa bi têketinên Zimbra OSE re dixebite
Mînakek çawa audit.log şîfreyek ku du caran xelet hatî nivîsandin û hewildanek têketinê ya serketî nîşan dide.

Têketinên li Zimbra OSE dikarin di tespîtkirina sedemên têkçûnên cihêreng ên krîtîk de pir bikêr bin. Dema ku xeletiyek krîtîk çêdibe, rêveber bi gelemperî wext tune ku têketinan bixwîne. Pêdivî ye ku di demek zû de serverê vegerînin. Lêbelê, paşê, dema ku server pişta xwe vedigire û gelek têketin çêdike, dibe ku dijwar be ku meriv têketina pêdivî di pelek mezin de bibîne. Ji bo ku hûn zû tomarek xeletiyek bibînin, bes e ku meriv wextê ku server ji nû ve hatî destpêkirin zanibe û têketinek di têketinên ku ji vê demê ve hatî vedîtin bibînin. Têketina berê dê qeyda xeletiya ku qewimî be. Her weha hûn dikarin peyama xeletiyê bi lêgerîna li peyva sereke FATAL bibînin.

Têketinên Zimbra OSE di heman demê de dihêle hûn têkçûnên ne-krîtîk nas bikin. Mînakî, ji bo dîtina îstîsnayên hander, hûn dikarin li îstîsna hander bigerin. Bi gelemperî, xeletiyên ku ji hêla hilberan ve têne çêkirin bi şopek stackê re têne peyda kirin ku rave dike ka çi bûye sedema îstîsnayê. Di rewşê de çewtiyên di radestkirina e-nameyê de, divê hûn lêgerîna xwe bi keyword LmtpServer dest pê bikin, û ji bo lêgerîna xeletiyên bi protokolên POP an IMAP-ê ve girêdayî ne, hûn dikarin bêjeyên ImapServer û Pop3Server bikar bînin.

Têketin di heman demê de dema ku bûyerên ewlehiya agahdariyê lêkolîn dikin jî dikarin bibin alîkar. Ka em li mînakek taybetî binêrin. Di 20ê Îlonê de, yek ji karmendan nameyek bi vîrusê vegirtî ji xerîdarek re şand. Wekî encamek, daneyên li ser komputera xerîdar hate şîfre kirin. Lêbelê, karmend sond dixwe ku wî tiştek neşandiye. Di çarçoveya lêpirsîna li ser bûyerê de, karûbarê ewlehiya pargîdanî ji rêveberê pergalê daxwaz dike ku servera nameyê ji bo 20-ê îlonê bi bikarhênerê vekolînkirî ve girêdayî ye. Bi saya mohra demê, rêvebirê pergalê pelê têketinê yê pêwîst dibîne, agahdariya pêwîst derdixe û vediguhezîne pisporên ewlehiyê. Yên ku, li wê dinêrin û dibînin ku navnîşana IP-ya ku ev name jê hatî şandin bi navnîşana IP-ya komputera bikarhêner re têkildar e. Dîmenên CCTV piştrast kir ku dema ku name şandin karmend li cîhê karê xwe bû. Van daneyan bes bû ku wî bi binpêkirina qaîdeyên ewlehiya agahdariyê tawanbar bikin û wî ji kar derxin. 

Meriv çawa bi têketinên Zimbra OSE re dixebite
Mînaka derxistina tomarên li ser yek ji hesabên ji têketina Mailbox.log nav pelek cihêreng

Dema ku binesaziya pir-server tê de her tişt pir tevlihevtir dibe. Ji ber ku têketin li herêmê têne berhev kirin, xebata bi wan re di binesaziyek pir-server de pir nerehet e û ji ber vê yekê pêdivî bi navendîkirina berhevkirina têketinê heye. Ev dikare bi sazkirina mêvandarek ji bo berhevkirina têketin were kirin. Ne hewce ye ku meriv mêvandarek taybetî li binesaziyê zêde bike. Her serverek e-nameyê dikare wekî girêkek ji bo berhevkirina têketin tevbigere. Di doza me de, ev ê girêka Mailstore01 be.

Li ser vê serverê divê em emrên jêrîn têkevin:

sudo su – zimbra 
zmcontrol stop
exit
sudo /opt/zimbra/libexec/zmfixperms -e -v

Pelê /etc/sysconfig/rsyslog biguherîne, û SYSLOGD_OPTIONS=”-r -c 2″ saz bike

/etc/rsyslog.conf biguherîne û rêzikên jêrîn şîrove bike:
$ModLoad imudp
$UDPServerRun 514

Emrên jêrîn binivîse:

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/zmupdateauthkeys

Hûn dikarin kontrol bikin ku her tişt bi karanîna fermana zmprov gacf | dixebite grep zimbraLogHostname. Piştî pêkanîna fermanê, divê navê mêvandarê ku têketin berhev dike were xuyang kirin. Ji bo ku hûn wê biguherînin, divê hûn fermana zmprov mcf zimbraLogHostname mailstore01.company.ru têkevin.

Li ser hemî pêşkêşkerên binesaziyê yên din (LDAP, MTA û firotgehên din ên nameyê), fermana zmprov gacf |grep zimbraLogHostname bişopînin da ku navê mêvandarê ku têketin jê re têne şandin bibînin. Ji bo guhertina wê, hûn dikarin fermana zmprov mcf zimbraLogHostname jî têkevin mailstore01.company.ru

Her weha divê hûn li ser her serverê emrên jêrîn têkevin:

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 restart

Piştî vê yekê, hemî têketin dê li ser servera ku we diyar kiriye bêne tomar kirin, ku ew dikarin bi hêsanî werin dîtin. Di heman demê de, di konsolê rêveberê Zimbra OSE de, li ser ekrana bi agahdariya rewşa pêşkêşkeran, karûbarê Logger-ê ya xebitandinê dê tenê ji bo servera mailstore01 were xuyang kirin.

Meriv çawa bi têketinên Zimbra OSE re dixebite

Serêşiyek din ji bo rêveberek dikare şopandina e-nameyek taybetî be. Ji ber ku e-nameyên li Zimbra OSE bi yekcarî di çend bûyerên cihêreng re derbas dibin: şopandina ji hêla antivirus, antispam, û hwd, berî ku bêne pejirandin an şandin, ji bo rêveberê, heke e-name negihêje, ew dikare pir pirsgirêk be ku meriv di kîjan qonaxê de bişopîne. winda bû.

Ji bo çareserkirina vê pirsgirêkê, hûn dikarin skrîptek taybetî bikar bînin, ku ji hêla pisporê ewlehiya agahdariyê Viktor Dukhovny ve hatî pêşve xistin û ji bo pêşdebirên Postfix-ê ji bo karanîna pêşniyar kirin. Ev skrîpt ji bo pêvajoyek taybetî têketinên ji têketinê vedihewîne û, ji ber vê yekê, dihêle hûn zû hemî navnîşên ku bi şandina nameyek taybetî ve girêdayî li ser bingeha nasnameya wê ve girêdayî ne nîşan bidin. Karê wê li ser hemî guhertoyên Zimbra OSE-ê, ji 8.7-ê dest pê ve hatî ceribandin. Li vir teksta senaryoyê ye.

#! /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";
}

Skrîpta di Perl-ê de hatiye nivîsandin û ji bo xebitandina wê divê hûn wê li pelek tomar bikin collate.pl, wê bikin îcrakar, û dûv re pelê bimeşînin ku pelê têketinê diyar dike û pgrep bikar tîne da ku agahdariya nasnameya nameya ku hûn lê digerin derxînin. collate.pl /var/log/zimbra.log | pgrep'[email parastî]>’. Encam dê bibe encamek rêzdar a rêzikan ku agahdariya li ser tevgera nameyê li ser serverê vedihewîne.

# collate.pl /var/log/zimbra.log | pgrep '<[email protected]>'
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: removed

Ji bo hemî pirsên têkildarî Zextras Suite, hûn dikarin bi e-nameyê bi Nûnera Zextras Ekaterina Triandafilidi re têkilî daynin. [email parastî]

Source: www.habr.com