2017年5月12日 星期五

Linux Mail Server 郵件回收

*每台主機環境都有些許差異,使用前請確認本身的環境參數,以免作業上的錯誤!

總是會遇到某些使用者發信時發錯人,跑來說怎麼辦?
我哪知道怎麼辦!!!
但.........如果是老闆問又該怎麼辦,只好想辦法了。

郵件回收只能做到使用者還沒將伺服器上的信件收走,如果使用者隨時都在注意有沒有新信件的話............................

這支 script 是執行在 Ubuntu 系統的 iRedMail 。


#!/bin/bash
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

Delete_List='/tmp/mail_list.txt'
Home='var/vmail/vmail1/example.ddns.net'
Log_File='/var/log/mail.log'
Date=`date +%B" "%d" "%H`

read -p " 請輸入搜尋的使用者 E-Mail 帳號:" User_Email
echo -e " 搜尋的日期、時間範圍: $Date 時\n"
grep "$Date" $Log_File | grep "$User_Email" | grep --color "Message-ID"

echo -e "\n"

# 這裡須注意,一定要找到<唯一的 MAIL ID 值>
read -p " 請輸入 Message-ID(數字字串即可):" str
#read -p " 請輸入搜尋的使用者英文名,如不輸入預設搜尋全部使用者目錄:" User_Name
cat /dev/null > $Delete_List
clear

if [ -z $User_Name ]; then
     #default_user=`awk -F":" '($3>499) && ($7 != "/usr/sbin/nologin") {print $1}' /etc/passwd | sort`
     default_user=`ls /$Home/ | sort`
     f_user="${default_user}"
else
     f_user="${User_Name:-$default_user}"
fi

num=1
emp=1

for u in $f_user
do
   echo " 正在檢查第 $emp 位員工 $u 信箱!"
   grep -ir "$str" /$Home/$u/Maildir/{cur,new,tmp}/ | awk -F":" '{print $1}' >> $Delete_List

   for d in `awk '(NR == '"$num"') {print $1}' $Delete_List`
   do
     mv `ls $d*` /tmp > /dev/null 2>&1
     echo " 移動使用者:$u 信件:$d 到 /tmp, 收到此信件人員總數:$num"
     num=$(($num+1))
   done

   emp=$(($emp+1))
done
echo " 檢查完畢"





沒有留言:

張貼留言

Nutanix平台虛擬機(UBUNTU),利用Veeam備份移轉至VMware平台,安裝套件、系統更新出現錯誤

 mount: /var/lib/grub/esp: special device /dev/disk/by-id/scsi-SNUTANIX_VDISK_NFS_4_0_7672_2d41cbaa_025e_4fac_849c_9e620eff5bff-part1 does n...