çºçãããã¹ãŠã®ã€ãã³ãã®ãã°ã¯ãäŒæ¥ã·ã¹ãã ã®æãéèŠãªæ©èœã® XNUMX ã€ã§ãã ãã°ã䜿çšãããšãæ°ããªåé¡ã解決ããããæ å ±ã·ã¹ãã ã®éçšãç£æ»ããããæ å ±ã»ãã¥ãªã㣠ã€ã³ã·ãã³ãã調æ»ãããããããšãã§ããŸãã Zimbra OSE ã¯ããã®æäœã®è©³çŽ°ãªãã°ãä¿æããŸãã ãããã«ã¯ããµãŒããŒã®ããã©ãŒãã³ã¹ãããŠãŒã¶ãŒã«ããé»åã¡ãŒã«ã®éåä¿¡ã«è³ããŸã§ããã¹ãŠã®ããŒã¿ãå«ãŸããŸãã ãã ããZimbra OSE ã«ãã£ãŠçæããããã°ãèªã¿åãã®ã¯ãããªãç°¡åãªäœæ¥ã§ã¯ãããŸããã ãã®èšäºã§ã¯ãå ·äœçãªäŸã䜿çšããŠãZimbra OSE ãã°ã®èªã¿åãæ¹æ³ãšããã°ãäžå åããæ¹æ³ã説æããŸãã
Zimbra OSE ã¯ãã¹ãŠã®ããŒã«ã« ãã°ã /opt/zimbra/log ãã©ã«ããŒã«ä¿åãããã°ã¯ /var/log/zimbra.log ãã¡ã€ã«ã«ãä¿åãããŸãã ãããã®äžã§æãéèŠãªãã®ã¯ mailbox.log ã§ãã ã¡ãŒã«ãµãŒããŒäžã§çºçãããã¹ãŠã®ã¢ã¯ã·ã§ã³ãèšé²ããŸãã ããã«ã¯ãé»åã¡ãŒã«ã®éä¿¡ããŠãŒã¶ãŒèªèšŒããŒã¿ããã°ã€ã³è©Šè¡ã®å€±æãªã©ãå«ãŸããŸãã mailbox.log ã®ãšã³ããªã¯ãã€ãã³ãã®çºçæå»ãã€ãã³ãã®ã¬ãã«ãã€ãã³ããçºçããã¹ã¬ããçªå·ããŠãŒã¶ãŒåãš IP ã¢ãã¬ã¹ãããã³ã€ãã³ãã®ããã¹ã説æãå«ãããã¹ãæååã§ãã ã
ãã°ã¬ãã«ã¯ãã€ãã³ãããµãŒããŒã®åäœã«åãŒã圱é¿ã®çšåºŠã瀺ããŸãã ããã©ã«ãã§ã¯ãINFOãWARNãERRORãFATAL ã® 4 ã€ã®ã€ãã³ã ã¬ãã«ããããŸãã ãã¹ãŠã®ã¬ãã«ãé倧床ã®æé ã«èŠãŠã¿ãŸãããã
- INFO - ãã®ã¬ãã«ã®ã€ãã³ãã¯éåžžãZimbra OSE ã®é²è¡ç¶æ³ãç¥ãããããšãç®çãšããŠããŸãã ãã®ã¬ãã«ã®ã¡ãã»ãŒãžã«ã¯ãã¡ãŒã«ããã¯ã¹ã®äœæãŸãã¯åé€ã«é¢ããã¬ããŒããªã©ãå«ãŸããŸãã
- èŠå - ãã®ã¬ãã«ã®ã€ãã³ãã¯ãæœåšçã«å±éºãªç¶æ³ã«ã€ããŠéç¥ããŸããããµãŒããŒã®åäœã«ã¯åœ±é¿ããŸããã ããšãã°ãWARN ã¬ãã«ã¯ããŠãŒã¶ãŒã®ãã°ã€ã³è©Šè¡ã®å€±æã«é¢ããã¡ãã»ãŒãžãããŒã¯ããŸãã
- ERROR - ãã°å ã®ãã®ã€ãã³ã ã¬ãã«ã¯ãæ¬è³ªçã«ããŒã«ã«ã§ããããµãŒããŒã®åäœã劚ããªããšã©ãŒã®çºçãéç¥ããŸãã ãã®ã¬ãã«ã§ã¯ãåã ã®ãŠãŒã¶ãŒã®ã€ã³ããã¯ã¹ ããŒã¿ãç Žæãããšã©ãŒã«ãã©ã°ãç«ãŠãããšãã§ããŸãã
- FATAL - ãã®ã¬ãã«ã¯ããµãŒããŒãæ£åžžã«åäœãç¶ããããšãã§ããªããšã©ãŒã瀺ããŸãã ããšãã°ãFATAL ã¬ãã«ã¯ãDBMS ã«æ¥ç¶ã§ããªãããšã瀺ãã¬ã³ãŒãã«ãªããŸãã
ã¡ãŒã«ãµãŒããŒã®ãã°ãã¡ã€ã«ã¯æ¯æ¥æŽæ°ãããŸãã ãã¡ã€ã«ã®ææ°ããŒãžã§ã³ã®ååã¯åžžã« Mailbox.log ã§ãããç¹å®ã®æ¥ä»ã®ãã°ã¯ååã«æ¥ä»ãå«ãŸããŠãããã¢ãŒã«ã€ãã«å«ãŸããŸãã ããšãã°ãmailbox.log.2020-09-29.tar.gz ã§ãã ããã«ãããã¢ã¯ãã£ãã㣠ãã°ã®ããã¯ã¢ããããã°ã®æ€çŽ¢ãã¯ããã«ç°¡åã«ãªããŸãã
ã·ã¹ãã 管çè
ã®äŸ¿å®ãå³ãããã/opt/zimbra/log/ ãã©ã«ããŒã«ã¯ä»ã®ãã°ãå«ãŸããŠããŸãã ãããã«ã¯ãç¹å®ã® Zimbra OSE èŠçŽ ã«é¢é£ãããšã³ããªã®ã¿ãå«ãŸããŸãã ããšãã°ãaudit.log ã«ã¯ãŠãŒã¶ãŒèªèšŒã«é¢ããã¬ã³ãŒãã®ã¿ãå«ãŸããclamd.log ã«ã¯ãŠã€ã«ã¹å¯Ÿçã®åäœã«é¢ããããŒã¿ãªã©ãå«ãŸããŸãã ãšããã§ãZimbra OSE ãµãŒããŒã䟵å
¥è
ããä¿è·ããåªããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
Audit.log ã«ããã¹ã¯ãŒãã XNUMX åééã£ãŠå
¥åãããããšãšããã°ã€ã³è©Šè¡ãæåããããšãã©ã®ããã«è¡šç€ºããããã®äŸã瀺ããŸãã
Zimbra OSE ã®ãã°ã¯ãããŸããŸãªé倧ãªé害ã®åå ãç¹å®ããã®ã«éåžžã«åœ¹ç«ã¡ãŸãã é倧ãªãšã©ãŒãçºçããæç¹ã§ã¯ãéåžžã管çè ã«ã¯ãã°ãèªãæéããããŸããã ã§ããã ãæ©ããµãŒããŒã埩æ§ããå¿ èŠããããŸãã ãã ããåŸã§ãµãŒããŒãããã¯ã¢ãããããŠå€§éã®ãã°ãçæããããšã倧ããªãã¡ã€ã«å ã§å¿ èŠãªãšã³ããªãèŠã€ããã®ãå°é£ã«ãªãããšããããŸãã ãšã©ãŒèšé²ãããã«èŠã€ããã«ã¯ããµãŒããŒãåèµ·åãããæå»ãç¥ãããã®æå»ä»¥éã®ãã°ã®ãšã³ããªãèŠã€ããã ãã§ååã§ãã åã®ãšã³ããªã¯ãçºçãããšã©ãŒã®èšé²ã«ãªããŸãã ããŒã¯ãŒããFATALããæ€çŽ¢ããŠãšã©ãŒ ã¡ãã»ãŒãžãèŠã€ããããšãã§ããŸãã
Zimbra OSE ãã°ã䜿çšãããšãé倧ã§ã¯ãªãé害ãç¹å®ããããšãã§ããŸãã ããšãã°ããã³ãã©ãŒäŸå€ãèŠã€ããã«ã¯ããã³ãã©ãŒäŸå€ãæ€çŽ¢ããŸãã å€ãã®å Žåããã³ãã©ãŒã«ãã£ãŠçæããããšã©ãŒã«ã¯ãäŸå€ã®åå ã説æããã¹ã¿ã㯠ãã¬ãŒã¹ã䌎ããŸãã ã¡ãŒã«é ä¿¡ã§ãšã©ãŒãçºçããå Žåã¯ãLmtpServer ããŒã¯ãŒãã§æ€çŽ¢ãéå§ããå¿ èŠããããŸããPOP ãŸã㯠IMAP ãããã³ã«ã«é¢é£ãããšã©ãŒãæ€çŽ¢ããã«ã¯ãImapServer ããã³ Pop3Server ããŒã¯ãŒãã䜿çšã§ããŸãã
ãã°ã¯ãæ å ±ã»ãã¥ãªã㣠ã€ã³ã·ãã³ãã調æ»ãããšãã«ã圹ç«ã¡ãŸãã å ·äœçãªäŸãèŠãŠã¿ãŸãããã 20æ20æ¥ãåŸæ¥å¡ã®XNUMX人ããŠã€ã«ã¹ã«ææããæçŽã顧客ã«éã£ãã ãã®çµæãã¯ã©ã€ã¢ã³ãã®ã³ã³ãã¥ãŒã¿äžã®ããŒã¿ã¯æå·åãããŸããã ããããåŸæ¥å¡ã¯äœãéã£ãŠããªãããšãèªããŸãã ã€ã³ã·ãã³ãã®èª¿æ»ã®äžç°ãšããŠããšã³ã¿ãŒãã©ã€ãº ã»ãã¥ãªã㣠ãµãŒãã¹ã¯ã·ã¹ãã 管çè ã«ã調æ»å¯Ÿè±¡ã®ãŠãŒã¶ãŒã«é¢é£ãã XNUMX æ XNUMX æ¥ã®ã¡ãŒã« ãµãŒã㌠ãã°ãèŠæ±ããŸãã ã¿ã€ã ã¹ã¿ã³ãã®ãããã§ãã·ã¹ãã 管çè ã¯å¿ èŠãªãã° ãã¡ã€ã«ãèŠã€ããŠå¿ èŠãªæ å ±ãæœåºããã»ãã¥ãªãã£å°é家ã«è»¢éããŸãã 次ã«ã圌ãã¯ããã調ã¹ãŠããã®æçŽã®éä¿¡å ã® IP ã¢ãã¬ã¹ããŠãŒã¶ãŒã®ã³ã³ãã¥ãŒã¿ã® IP ã¢ãã¬ã¹ã«äžèŽããããšãçºèŠããŸãã ç£èŠã«ã¡ã©ã®æ åã«ãããæçŽãéããããšãã«åŸæ¥å¡ãè·å Žã«ããããšã確èªãããã ãã®ããŒã¿ã¯ãæ å ±ã»ãã¥ãªãã£èŠåã«éåãããšããŠåœŒãåçºãã解éããã®ã«ååã§ããã
ããããã®ã¢ã«ãŠã³ãã«é¢ããã¬ã³ãŒãã Mailbox.log ãã°ããå¥ã®ãã¡ã€ã«ã«æœåºããäŸ
ãã«ããµãŒããŒã€ã³ãã©ã¹ãã©ã¯ãã£ãšãªããšããã¹ãŠãããã«è€éã«ãªããŸãã ãã°ã¯ããŒã«ã«ã«åéãããããããã«ããµãŒã㌠ã€ã³ãã©ã¹ãã©ã¯ãã£ã§ã®ãã°ã®æäœã¯éåžžã«äžäŸ¿ã§ããããããã°ã®åéãäžå åããå¿ èŠããããŸãã ããã¯ããã°ãåéããããã«ãã¹ããèšå®ããããšã§å®è¡ã§ããŸãã å°çšã®ãã¹ããã€ã³ãã©ã¹ãã©ã¯ãã£ã«è¿œå ããå¿ èŠã¯ç¹ã«ãããŸããã ã©ã®ã¡ãŒã« ãµãŒããŒããã°ãåéããããŒããšããŠæ©èœã§ããŸãã ãã®å Žåããã㯠Mailstore01 ããŒãã«ãªããŸãã
ãã®ãµãŒããŒã§ã¯ã以äžã®ã³ãã³ããå ¥åããå¿ èŠããããŸãã
sudo su â zimbra
zmcontrol stop
exit
sudo /opt/zimbra/libexec/zmfixperms -e -v
/etc/sysconfig/rsyslog ãã¡ã€ã«ãç·šéããSYSLOGD_OPTIONS=â-r -c 2â³ ãèšå®ããŸãã
/etc/rsyslog.conf ãç·šéãã次ã®è¡ã®ã³ã¡ã³ãã解é€ããŸãã
$ModLoad imudp
$UDPServerRun 514
次ã®ã³ãã³ããå ¥åããŸãã
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
ã³ãã³ã zmprov gacf | ã䜿çšããŠããã¹ãŠãåäœããŠããããšã確èªã§ããŸãã grep zimbraLogãã¹ãåã ã³ãã³ãå®è¡åŸããã°ãåéãããã¹ãåã衚瀺ãããã¯ãã§ãã ãããå€æŽããã«ã¯ãã³ãã³ã zmprov mcf zimbraLogHostname mailstore01.company.ru ãå ¥åããå¿ èŠããããŸãã
ä»ã®ãã¹ãŠã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ãµãŒã㌠(LDAPãMTAãããã³ãã®ä»ã®ã¡ãŒã« ã¹ãã¢) ã§ãã³ãã³ã zmprov gacf |grep zimbraLogHostname ãå®è¡ããŠããã°ã®éä¿¡å ã®ãã¹ãã®ååã確èªããŸãã ãããå€æŽããã«ã¯ãã³ãã³ã zmprov mcf zimbraLogHostname mailstore01.company.ru ãå ¥åããããšãã§ããŸãã
åãµãŒããŒã§æ¬¡ã®ã³ãã³ããå ¥åããå¿ èŠããããŸãã
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
ãã®åŸããã¹ãŠã®ãã°ã¯æå®ãããµãŒããŒã«èšé²ãããç°¡åã«è¡šç€ºã§ããããã«ãªããŸãã ãŸããZimbra OSE 管çè ã³ã³ãœãŒã«ã§ã¯ããµãŒããŒã®ã¹ããŒã¿ã¹ã«é¢ããæ å ±ã衚瀺ãããç»é¢ã«ãå®è¡äžã® Logger ãµãŒãã¹ã mailstore01 ãµãŒããŒã«å¯ŸããŠã®ã¿è¡šç€ºãããŸãã
管çè ã«ãšã£ãŠãã XNUMX ã€ã®æ©ã¿ã®çš®ã¯ãç¹å®ã®é»åã¡ãŒã«ã远跡ããããšã§ãã Zimbra OSE ã®é»åã¡ãŒã«ã¯ãåä¿¡ãŸãã¯éä¿¡ãããåã«ããŠã€ã«ã¹å¯Ÿçãã¹ãã 察çãªã©ã«ããã¹ãã£ã³ãªã©ãè€æ°ã®ç°ãªãã€ãã³ããäžåºŠã«ééããããã管çè ã«ãšã£ãŠé»åã¡ãŒã«ãå°çããªãå Žåãã©ã®æ®µéã§è¿œè·¡ããããéåžžã«å°é£ã«ãªãå¯èœæ§ããããŸããçŽå€±ããŠããŸããŸããã
ãã®åé¡ã解決ããã«ã¯ãæ å ±ã»ãã¥ãªãã£ã®å°é家 Viktor Dukhovny ã«ãã£ãŠéçºãããPostfix éçºè ã«äœ¿çšãæšå¥šãããŠããç¹å¥ãªã¹ã¯ãªããã䜿çšã§ããŸãã ãã®ã¹ã¯ãªããã¯ãç¹å®ã®ããã»ã¹ã®ãã°ã®ãšã³ããªãé£çµãããããèå¥åã«åºã¥ããŠç¹å®ã®ã¬ã¿ãŒã®éä¿¡ã«é¢é£ãããã¹ãŠã®ãšã³ããªããã°ãã衚瀺ã§ããŸãã ãã®åäœã¯ã8.7 以éã® Zimbra OSE ã®ãã¹ãŠã®ããŒãžã§ã³ã§ãã¹ããããŠããŸãã ããã«ã¹ã¯ãªããã®ããã¹ãããããŸãã
#! /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";
}
ã¹ã¯ãªãã㯠Perl ã§æžãããŠãããå®è¡ããã«ã¯ãã¡ã€ã«ã«ä¿åããå¿ èŠããããŸãã ç §å.plããããå®è¡å¯èœã«ãããã° ãã¡ã€ã«ãæå®ããŠãã¡ã€ã«ãå®è¡ããpgrep ã䜿çšããŠæ¢ããŠããæåã®èå¥æ å ±ãæœåºããŸãã Collatââe.pl /var/log/zimbra.log | pgrep '[ã¡ãŒã«ä¿è·]> 'ã ãã®çµæããµãŒããŒäžã®ã¬ã¿ãŒã®ç§»åã«é¢ããæ å ±ãå«ãè¡ãé 次åºåãããŸãã
# 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
Zextras Suite ã«é¢ãããã¹ãŠã®è³ªåã«ã€ããŠã¯ãZextras Ekaterina Triandafilidi ã®ä»£è¡šè ã«é»åã¡ãŒã«ã§ãåãåãããã ããã [ã¡ãŒã«ä¿è·]
åºæïŒ habr.com