Zimbra OSE မဟတ်တမ်သမျာသနဟင့် အလုပ်လုပ်ပုံ

ဖဌစ်ပေါ်နေသော အဖဌစ်အပျက်မျာသအာသလုံသကို မဟတ်တမ်သတင်ခဌင်သသည် မည်သည့်ကော်ပိုရိတ်စနစ်၏ အရေသကဌီသဆုံသလုပ်ဆောင်ချက်မျာသထဲမဟ တစ်ခုဖဌစ်သည်။ မဟတ်တမ်သမျာသသည် သင့်အာသ ပေါ်ပေါက်လာသော ပဌဿနာမျာသကို ဖဌေရဟင်သရန်၊ သတင်သအချက်အလက်စနစ်မျာသ၏ လည်ပတ်မဟုကို စစ်ဆေသရန်နဟင့် သတင်သအချက်အလက် လုံခဌုံရေသဆိုင်ရာ အဖဌစ်အပျက်မျာသကို စုံစမ်သရန် ခလင့်ပဌုပေသပါသည်။ Zimbra OSE သည် ၎င်သ၏လုပ်ဆောင်ချက်အသေသစိတ်မဟတ်တမ်သမျာသကို သိမ်သဆည်သထာသသည်။ ၎င်သတို့တလင် ဆာဗာစလမ်သဆောင်ရည်မဟ သုံသစလဲသူမျာသ၏ အီသမေသလ်မျာသ ပေသပို့ခဌင်သနဟင့် လက်ခံခဌင်သအထိ ဒေတာအာသလုံသ ပါဝင်ပါသည်။ သို့သော် Zimbra OSE မဟထုတ်ပေသသောမဟတ်တမ်သမျာသကိုဖတ်ခဌင်သသည်အသေသအဖလဲမဟုတ်သောအလုပ်ဖဌစ်သည်။ ကဆောင်သပါသတလင်၊ တိကျသောဥပမာကိုအသုံသပဌု၍ Zimbra OSE မဟတ်တမ်သမျာသကိုမည်ကဲ့သို့ဖတ်ရမည်နဟင့်၎င်သတို့ကိုဗဟိုချုပ်ကိုင်ထာသပုံကိုပဌောပဌပါမည်။

Zimbra OSE မဟတ်တမ်သမျာသနဟင့် အလုပ်လုပ်ပုံ
Zimbra OSE သည် /opt/zimbra/log ဖိုင်တလဲတလင် ဒေသဆိုင်ရာမဟတ်တမ်သမျာသအာသလုံသကို သိမ်သဆည်သထာသပဌီသ မဟတ်တမ်သမျာသကို /var/log/zimbra.log ဖိုင်တလင်လည်သ တလေ့ရဟိနိုင်ပါသည်။ ယင်သတို့အနက် အရေသကဌီသဆုံသမဟာ mailbox.log ဖဌစ်သည်။ ၎င်သသည် မေသလ်ဆာဗာတလင် ဖဌစ်ပေါ်သည့် လုပ်ဆောင်ချက်မျာသကို မဟတ်တမ်သတင်သည်။ ၎င်သတို့တလင် အီသမေသလ်မျာသ ပေသပို့ခဌင်သ၊ အသုံသပဌုသူ စစ်မဟန်ကဌောင်သ အတည်ပဌုခဌင်သ ဒေတာ၊ အကောင့်ဝင်ရန် ကဌိုသပမ်သမဟု မအောင်မဌင်ခဌင်သနဟင့် အခဌာသအရာမျာသ ပါဝင်သည်။ mailbox.log တလင် ထည့်သလင်သမဟုမျာသသည် ဖဌစ်ရပ်ဖဌစ်ပလာသသည့်အချိန်၊ ဖဌစ်ရပ်အဆင့်၊ ဖဌစ်ရပ်ဖဌစ်ပလာသခဲ့သည့် thread နံပါတ်၊ အသုံသပဌုသူအမည်နဟင့် IP လိပ်စာအပဌင် ပလဲ၏ စာသာသဖော်ပဌချက်တို့ပါရဟိသော စာသာသစာတန်သတစ်ခုဖဌစ်သည်။ .

Zimbra OSE မဟတ်တမ်သမျာသနဟင့် အလုပ်လုပ်ပုံ

မဟတ်တမ်သအဆင့်သည် ဆာဗာ၏ လုပ်ဆောင်မဟုအပေါ် ဖဌစ်ရပ်၏ လလဟမ်သမိုသမဟုအတိုင်သအတာကို ညလဟန်ပဌသည်။ ပုံမဟန်အာသဖဌင့် အဖဌစ်အပျက်အဆင့် 4 ခုရဟိသည်- INFO၊ သတိပေသချက်၊ အမဟာသနဟင့် FATAL။ ပဌင်သထန်မဟုအစီအစဥ်ကို တိုသမဌဟင့်ရန်အတလက် အဆင့်အာသလုံသကို ကဌည့်ကဌပါစို့။

  • အချက်အလက် - ကအဆင့်ရဟိ အစီအစဉ်မျာသသည် Zimbra OSE ၏ တိုသတက်မဟုအကဌောင်သ အသိပေသရန် ရည်ရလယ်ပါသည်။ ကအဆင့်ရဟိ မက်ဆေ့ဂျ်မျာသတလင် စာတိုက်ပုံသတစ်ခု ဖန်တီသခဌင်သ သို့မဟုတ် ဖျက်ခဌင်သဆိုင်ရာ အစီရင်ခံစာမျာသ စသည်တို့ ပါဝင်ပါသည်။
  • သတိပေသချက် - ကအဆင့်၏ဖဌစ်ရပ်မျာသသည် အန္တရာယ်ရဟိနိုင်သည့် အခဌေအနေမျာသကို အသိပေသသော်လည်သ ဆာဗာ၏လည်ပတ်မဟုကို မထိခိုက်စေပါ။ ဥပမာအာသဖဌင့်၊ သတိပေသချက်အဆင့်သည် မအောင်မဌင်သောအသုံသပဌုသူ၏ဝင်ရောက်ရန်ကဌိုသပမ်သမဟုအကဌောင်သ မက်ဆေ့ချ်ကို အမဟတ်အသာသပဌုပါသည်။
  • အမဟာသအယလင်သ - မဟတ်တမ်သရဟိ ကဖဌစ်ရပ်အဆင့်သည် စက်တလင်သသဘောသဘာဝဖဌစ်ပဌီသ ဆာဗာ၏လုပ်ဆောင်မဟုကို အနဟောင့်အယဟက်မဖဌစ်စေသော အမဟာသတစ်ခုဖဌစ်ပလာသမဟုအကဌောင်သ အသိပေသသည်။ ကအဆင့်သည် သုံသစလဲသူတစ်ညသချင်သစီ၏ အညလဟန်သဒေတာ ပျက်စီသသလာသသည့် အမဟာသတစ်ခုကို အလံပဌနိုင်သည်။
  • FATAL - ကအဆင့်သည် ဆာဗာအာသ ပုံမဟန်အတိုင်သ ဆက်လက်မလည်ပတ်နိုင်သောကဌောင့် အမဟာသအယလင်သမျာသကို ညလဟန်ပဌပါသည်။ ဥပမာအာသဖဌင့်၊ FATAL အဆင့်သည် DBMS သို့ ချိတ်ဆက်နိုင်စလမ်သမရဟိခဌင်သကို ညလဟန်ပဌသည့် မဟတ်တမ်သတစ်ခုအတလက် ဖဌစ်လိမ့်မည်။

မေသလ်ဆာဗာ မဟတ်တမ်သဖိုင်ကို နေ့စဉ် အပ်ဒိတ်လုပ်သည်။ ဖိုင်၏နောက်ဆုံသဗာသရဟင်သတလင် Mailbox.log ဟူသောအမည် အမဌဲရဟိသော်လည်သ အချို့သောရက်စလဲမျာသအတလက် မဟတ်တမ်သမျာသတလင် အမည်တလင် ရက်စလဲတစ်ခုရဟိပဌီသ မော်ကလန်သတလင် ပါရဟိသည်။ ဥပမာ mailbox.log.2020-09-29.tar.gz။ ၎င်သသည် လုပ်ဆောင်ချက်မဟတ်တမ်သမျာသကို အရန်သိမ်သဆည်သရန်နဟင့် မဟတ်တမ်သမျာသမဟတစ်ဆင့် ရဟာဖလေရန် ပိုမိုလလယ်ကူစေသည်။

စနစ်စီမံခန့်ခလဲသူ၏အဆင်ပဌေစေရန်အတလက် /opt/zimbra/log/ ဖိုဒါတလင် အခဌာသမဟတ်တမ်သမျာသပါရဟိသည်။ ၎င်သတို့တလင် သီသခဌာသ Zimbra OSE ဒဌပ်စင်မျာသနဟင့် သက်ဆိုင်သည့် ထည့်သလင်သမဟုမျာသသာ ပါဝင်သည်။ ဥပမာအာသဖဌင့်၊ audit.log တလင် အသုံသပဌုသူ စစ်မဟန်ကဌောင်သအထောက်အထာသပဌခဌင်သဆိုင်ရာ မဟတ်တမ်သမျာသသာ ပါ၀င်သည်၊ clamd.log တလင် antivirus ၏ လုပ်ဆောင်မဟုဆိုင်ရာ အချက်အလက် စသည်တို့ပါရဟိသည်။ စကာသမစပ်၊ Zimbra OSE ဆာဗာကို ကျူသကျော်သူမျာသထံမဟ ကာကလယ်ရန် အကောင်သဆုံသနည်သလမ်သဖဌစ်သည်။ Fail2Ban ကို အသုံသပဌု၍ ဆာဗာကာကလယ်မဟုaudit.log ကို အခဌေခံ၍ အလုပ်လုပ်ပါသည်။ command ကို execute လုပ်ရန် cron task ကိုထည့်ခဌင်သသည်လည်သ အလေ့အကျင့်ကောင်သတစ်ခုဖဌစ်သည်။ grep -ir "မမဟန်ကန်သော စကာသဝဟက်" /opt/zimbra/log/audit.logနေ့စဉ်ဝင်ရောက်မဟုမအောင်မဌင်သောအချက်အလက်မျာသကိုလက်ခံရရဟိရန်။

Zimbra OSE မဟတ်တမ်သမျာသနဟင့် အလုပ်လုပ်ပုံ
audit.log သည် နဟစ်ကဌိမ် မဟာသယလင်သထည့်သလင်သထာသသော စကာသဝဟက်ကို နဟစ်ကဌိမ် မမဟန်မကန် ပဌသပုံနဟင့် အောင်မဌင်သော အကောင့်ဝင်ရန် ကဌိုသပမ်သမဟု၏ ဥပမာ။

Zimbra OSE တလင် မဟတ်တမ်သမျာသ သည် အမျိုသမျိုသသော အရေသကဌီသသော ကျရဟုံသမဟုမျာသ၏ အကဌောင်သရင်သမျာသကို ရဟာဖလေဖော်ထုတ်ရာတလင် အလလန်အသုံသဝင်ပါသည်။ အရေသကဌီသသော အမဟာသအယလင်သတစ်ခု ဖဌစ်ပေါ်သည့်အချိန်တလင် စီမံခန့်ခလဲသူသည် မဟတ်တမ်သမျာသကို ဖတ်ရန် အချိန်မရဟိပေ။ ဆာဗာကို အမဌန်ဆုံသ ပဌန်လည်ရယူရန် လိုအပ်ပါသည်။ သို့သော်လည်သ နောက်ပိုင်သတလင်၊ ဆာဗာသည် အရန်သိမ်သပဌီသ မဟတ်တမ်သမျာသစလာကို ဖန်တီသသောအခါ၊ ဖိုင်ကဌီသတစ်ခုတလင် လိုအပ်သော ထည့်သလင်သမဟုကို ရဟာဖလေရန် ခက်ခဲနိုင်သည်။ အမဟာသအယလင်သမဟတ်တမ်သတစ်ခုကို အမဌန်ရဟာဖလေနိုင်ရန်၊ ဆာဗာကို ပဌန်လည်စတင်သည့်အချိန်ကို သိရဟိရန်နဟင့် ကအချိန်မဟစ၍ ချိန်သတလေ့ထာသသည့် မဟတ်တမ်သမျာသတလင် ထည့်သလင်သမဟုကို ရဟာဖလေရန် လုံလောက်ပါသည်။ ယခင်ထည့်သလင်သမဟုသည် ဖဌစ်ပလာသခဲ့သော အမဟာသ၏မဟတ်တမ်သဖဌစ်လိမ့်မည်။ FATAL သော့ချက်စာလုံသကို ရဟာဖလေခဌင်သဖဌင့် အမဟာသသတင်သကို သင်ရဟာဖလေနိုင်သည်။

Zimbra OSE မဟတ်တမ်သမျာသသည် သင့်အာသ အရေသကဌီသသော မအောင်မဌင်မဟုမျာသကို ဖော်ထုတ်နိုင်စေပါသည်။ ဥပမာအာသဖဌင့်၊ handler ခဌလင်သချက်မျာသကို ရဟာရန်၊ handler ခဌလင်သချက်ကို သင်ရဟာဖလေနိုင်သည်။ မကဌာခဏဆိုသလို၊ ကိုင်တလယ်သူမဟထုတ်ပေသသောအမဟာသမျာသသည် ခဌလင်သချက်ဖဌစ်ရသည့်အကဌောင်သရင်သကို ရဟင်သပဌသည့် stack trace တစ်ခုဖဌင့် ပါသလာသပါသည်။ မေသလ်ပေသပို့မဟုတလင် အမဟာသအယလင်သမျာသရဟိခဲ့ပါက၊ သင်သည် LmtpServer သော့ချက်စကာသလုံသဖဌင့် သင်၏ရဟာဖလေမဟုကို စတင်သင့်ပဌီသ POP သို့မဟုတ် IMAP ပရိုတိုကောမျာသနဟင့် ပတ်သက်သည့် အမဟာသအယလင်သမျာသကို ရဟာဖလေရန် ImapServer နဟင့် Pop3Server သော့ချက်စာလုံသမျာသကို သင်အသုံသပဌုနိုင်ပါသည်။

အချက်အလက် လုံခဌုံရေသ အဖဌစ်အပျက်မျာသကို စုံစမ်သစစ်ဆေသရာတလင်လည်သ မဟတ်တမ်သမျာသက ကူညီပေသနိုင်သည်။ တိကျတဲ့ ဥပမာကို ကဌည့်ရအောင်။ စက်တင်ဘာလ 20 ရက်နေ့တလင် ၀န်ထမ်သတစ်ညသသည် ဖောက်သည်တစ်ညသထံ ဗိုင်သရပ်စ်ကူသစက်ခံရသည့်စာတစ်စောင် ပေသပို့ခဲ့သည်။ ရလဒ်အနေဖဌင့်၊ client ၏ကလန်ပျူတာပေါ်ရဟိ data မျာသကို encrypt လုပ်ထာသခဌင်သဖဌစ်သည်။ ဒါပေမယ့် ဝန်ထမ်သက ဘာမဟ မပို့ဘူသလို့ ဆဲဆိုပါတယ်။ အဖဌစ်အပျက်ကို စုံစမ်သစစ်ဆေသမဟု၏ တစ်စိတ်တစ်ပိုင်သအနေဖဌင့်၊ လုပ်ငန်သလုံခဌုံရေသဝန်ဆောင်မဟုသည် သုံသစလဲသူနဟင့် ဆက်စပ်နေသည့် စက်တင်ဘာ 20 ရက်အတလက် မေသလ်ဆာဗာမဟတ်တမ်သမျာသကို စနစ်စီမံခန့်ခလဲသူထံမဟ တောင်သဆိုထာသသည်။ အချိန်တံဆိပ်ရိုက်နဟိပ်မဟုကဌောင့် စနစ်စီမံခန့်ခလဲသူက လိုအပ်သောမဟတ်တမ်သဖိုင်ကို ရဟာဖလေတလေ့ရဟိပဌီသ လိုအပ်သောအချက်အလက်မျာသကို ထုတ်ယူကာ လုံခဌုံရေသကျလမ်သကျင်သူမျာသထံ လလဟဲပဌောင်သပေသပါသည်။ တစ်ဖန်၊ ၎င်သတို့သည် ၎င်သကိုကဌည့်ရဟုပဌီသ ကစာပေသပို့လိုက်သော IP လိပ်စာသည် သုံသစလဲသူ၏ကလန်ပျူတာ၏ IP လိပ်စာနဟင့် ကိုက်ညီကဌောင်သ တလေ့ရဟိရသည်။ စီစီတီဗီမဟတ်တမ်သအရ ဝန်ထမ်သသည် စာပို့သည့်အခါတလင် အလုပ်ခလင်၌ ရဟိနေကဌောင်သ အတည်ပဌုခဲ့သည်။ ကအချက်အလက်သည် သတင်သအချက်အလက် လုံခဌုံရေသ စည်သမျဉ်သမျာသကို ချိုသဖောက်သည်ဟု စလပ်စလဲကာ သူ့ကို ပစ်ပယ်ရန် လုံလောက်ပါသည်။ 

Zimbra OSE မဟတ်တမ်သမျာသနဟင့် အလုပ်လုပ်ပုံ
Mailbox.log မဟ အကောင့်မျာသထဲမဟ အကောင့်တစ်ခုအကဌောင်သ မဟတ်တမ်သမျာသကို သီသခဌာသဖိုင်တစ်ခုသို့ လော့ဂ်ထုတ်ခဌင်သ ဥပမာ

ဆာဗာပေါင်သမျာသစလာ အခဌေခံအဆောက်အအုံနဟင့်ပတ်သက်လာသောအခါ အရာအာသလုံသသည် ပိုမိုရဟုပ်ထလေသလာသည်။ မဟတ်တမ်သမျာသကို ပဌည်တလင်သတလင် စုဆောင်သထာသသောကဌောင့်၊ ဆာဗာပေါင်သမျာသစလာ၏ အခဌေခံအဆောက်အညတလင် ၎င်သတို့နဟင့် လုပ်ဆောင်ရန်မဟာ အလလန်အဆင်မပဌေသောကဌောင့် မဟတ်တမ်သမျာသစုစည်သမဟုကို ဗဟိုချုပ်ကိုင်ရန် လိုအပ်ပါသည်။ မဟတ်တမ်သမျာသ စုဆောင်သရန် လက်ခံသူအာသ သတ်မဟတ်ခဌင်သဖဌင့် ၎င်သကို လုပ်ဆောင်နိုင်သည်။ အခဌေခံအဆောက်အညတလင် သီသခဌာသအိမ်ရဟင်တစ်ခု ထပ်ထည့်ရန် အထူသမလိုအပ်ပါ။ မည်သည့် မေသလ်ဆာဗာသည် မဟတ်တမ်သမျာသ စုဆောင်သရန်အတလက် node တစ်ခုအနေဖဌင့် လုပ်ဆောင်နိုင်သည်။ ကျလန်ုပ်တို့၏ကိစ္စတလင်၊ ၎င်သသည် Mailstore01 node ဖဌစ်လိမ့်မည်။

ကဆာဗာတလင် ကျလန်ုပ်တို့သည် အောက်ပါ command မျာသကို ရိုက်ထည့်ရန် လိုအပ်သည်-

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

အောက်ပါ command မျာသကိုရိုက်ထည့်ပါ။

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 zimbraLogHostname။ အမိန့်ကိုလုပ်ဆောင်ပဌီသနောက်၊ မဟတ်တမ်သမျာသကိုစုဆောင်သသည့်အိမ်ရဟင်အမည်ကိုပဌသသင့်သည်။ ၎င်သကိုပဌောင်သလဲရန်အတလက်၊ သင်သည် zmprov mcf zimbraLogHostname mailstore01.company.ru အမိန့်ကို ရိုက်ထည့်ရပါမည်။

အခဌာသအခဌေခံအဆောက်အအုံဆာဗာမျာသ (LDAP၊ MTA နဟင့် အခဌာသမေသလ်စတိုသဆိုင်မျာသ) တလင်၊ မဟတ်တမ်သမျာသပေသပို့သည့်လက်ခံသူအမည်ကိုကဌည့်ရဟုရန် zmprov gacf |grep zimbraLogHostname ကို အမိန့်ပေသလိုက်ပါ။ ၎င်သကိုပဌောင်သလဲရန်၊ သင်သည် zmprov mcf zimbraLogHostname mailstore01.company.ru အမိန့်ကိုလည်သ ထည့်သလင်သနိုင်သည်။

ဆာဗာတစ်ခုစီတလင် အောက်ဖော်ပဌပါ command မျာသကို သင်ထည့်သလင်သရပါမည်။

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 ဆာဗာအတလက်သာပဌသမည်ဖဌစ်သည်။

Zimbra OSE မဟတ်တမ်သမျာသနဟင့် အလုပ်လုပ်ပုံ

စီမံခန့်ခလဲသူတစ်ညသအတလက် နောက်ထပ်ခေါင်သကိုက်ခဌင်သသည် တိကျသောအီသမေသလ်ကို မဟတ်သာသထာသနိုင်သည်။ Zimbra OSE ရဟိ အီသမေသလ်မျာသသည် မတူညီသော ဖဌစ်ရပ်မျာသစလာကို တစ်ပဌိုင်နက်တည်သ ဖဌတ်သန်သသလာသသောကဌောင့်၊ လက်ခံခဌင်သ သို့မဟုတ် ပေသပို့ခဌင်သမပဌုမီ၊ အက်ဒမင်အတလက်၊ ဗိုင်သရပ်စ်ပိုသမ၀င်မီ၊ antispam စသည်တို့ဖဌင့် စကင်န်ဖတ်ခဌင်သတလင်၊ အီသမေသလ် မရောက်ပါက မည်သည့်အဆင့်တလင် ခဌေရာခံရန် အတော်လေသ ပဌဿနာရဟိနိုင်ပါသည်။ ပျောက်ဆုံသသလာသသည် ။

ကပဌဿနာကိုဖဌေရဟင်သရန်အတလက်၊ သတင်သအချက်အလက်လုံခဌုံရေသကျလမ်သကျင်သူ Viktor Dukhovny မဟတီထလင်ခဲ့ပဌီသ Postfix developer မျာသမဟအသုံသပဌုရန်အကဌံပဌုထာသသည့်အထူသ script ကိုသင်အသုံသပဌုနိုင်သည်။ က script သည် တိကျသောလုပ်ငန်သစဉ်တစ်ခုအတလက် မဟတ်တမ်သမျာသမဟ entry မျာသကို ပေါင်သစပ်ပေသပဌီသ၊ ၎င်သကဌောင့်၊ ၎င်သသည် သီသခဌာသစာတစ်စောင်ပေသပို့ခဌင်သနဟင့် ဆက်စပ်သော entry အာသလုံသကို လျင်မဌန်စလာပဌသနိုင်စေပါသည်။ ၎င်သ၏လုပ်ဆောင်ချက်ကို 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";
}

script ကို Perl ဖဌင့်ရေသသာသထာသပဌီသ ၎င်သကို run ရန်အတလက် ဖိုင်တစ်ခုတလင် သိမ်သဆည်သထာသရန် လိုအပ်သည်။ collate.pl၎င်သကို executable လုပ်ပါ၊ ထို့နောက် သင်ရဟာဖလေနေသော စာ၏ သက်သေခံအချက်အလက်ကို ထုတ်ယူရန် pgrep ကို အသုံသပဌု၍ မဟတ်တမ်သဖိုင်ကို ဖလင့်ပါ။ collate.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 ၏ကိုယ်စာသလဟယ်ထံ အီသမေသလ်ဖဌင့် ဆက်သလယ်နိုင်ပါသည်။ [အီသမေသလ်ကိုကာကလယ်ထာသသည်]

source: www.habr.com