加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

postfix log简要整理

发布时间:2020-12-15 07:08:03 所属栏目:安全 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/bin/bash#-------------------------------------------------------#TITLE:Postfix Mail Log Handle#AUTHOR:HankZhou#TIME:2013/07/17#VERSION:0.

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#!/bin/bash

#-------------------------------------------------------
#TITLE:		Postfix Mail Log Handle
#AUTHOR:	HankZhou
#TIME:		2013/07/17
#VERSION:	0.5V
#-------------------------------------------------------

#To determine whether a file exists
if [ ! -e $1 ]
then 
  printf "$1 No such file or directorynr"
  exit 0
fi

dirName="maillog"$(date +%y%m%d%H%M%S)

#To determine whether a directory exists
if [  -d $dirName ]
then
    printf "Folder already existsnr"
    exit 0
fi

mkdir $dirName

#Sented File handling
cat $1 | 
awk '{if(match($12,/^status=sent$/)) 
    {mat=match($7,/[a-zA-Z0-9_]+@[a-zA-Z0-9_.]/); 
    lenMatch=length($7); 
    matched=substr($7,5,lenMatch-6); 
    timeOri=$1" "$2" "$3; 
    cmd="date ""timeOri"" "+%Y/%m/%d %T ""; 
    cmd|getline time;
    lenTime=length(time); 
    timeH=substr(time,lenTime-1); 
    print timeH","matched ",Message accepted"}}' | 
awk 'BEGIN{FS=OFS=","} 
    {a[$2]++;a[$0]++; 
    if(a[$2]<2) 
        {print $0}}' 
>./$dirName/sented.csv

#calculate number of lines
lines=$(awk '{b++;}END{print b}' ./$dirName/sented.csv)
printf "**nrSented mail has been generated.nr"
printf "Totle of $lines linesnr"

#Error File handling
cat $1 | 
awk '{if(match($12,/^status=(deferred|bounced|expired)$/)) 
    {mat=match($7,lenMatch-6); 
    timeOri=$1" "$2" "$3; 
    cmd="date -d ""timeOri"" "+%Y/%m/%d %T ""; 
    cmd|getline time; 
    lenTime=length(time); 
    timeH=substr(time,lenTime-1); 
    printf timeH","matched",";
    printf substr($12,8);
    for (i=13;i<=NF;i++){printf $i" "};
    print "n";}}' | 
awk 'BEGIN{FS=OFS=","} 
    {a[$2]++;a[$0]++; 
    if(a[$2]<2) 
        {print $0}}' 
>./$dirName/ErrorMail.csv


lines=$(awk '{b++;}END{print b}' ./$dirName/ErrorMail.csv)
printf "**nrError mail  has been generated.nr"
printf "Totle of $lines linesnr"

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读