试图删除sendmail消息

时间:2012-04-18 05:26:10

标签: linux shell

我正在尝试从root我的脚本中删除sendmail消息,该消息将要删除的邮件消息删除到具有受尊重ID的文件中,但即使从root运行它仍然没有删除它。所有它表示权限被拒绝不能删除文件,甚至从根

#!/usr/bin/ksh
WORKFILE="/tmp/check.mq"
MAILLIST="emailadress"

mailq|grep -B1 -i temporarily |grep -iv deferred |egrep -i   'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |awk -F" " '{print $1}' |awk '{print  substr($0,10,14)}' |tee -a $WORKFILE |awk '{print "*" $1}' |tee -a mail.mq
mailq|grep -B1 -i unknown|egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |awk -F" " '{print $1}' |awk '{print substr($0,10,14)}' |tee -a $WORKFILE |awk '{print "*" $1}' |tee -a mail.mq
mailq|grep -B1 -i lookup |grep -iv deferred |egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |awk -F" " '{print $1}' |awk '{print substr($0,10,14)}' |tee -a $WORKFILE |awk '{print "*" $1}' |tee -a mail.mq

cat mail.mq | while read file; do rm -rf /var/spool/mqueue/$file;done
find . -type f -name "mail.mq" |rm -rf mail.mq

我正在使用此代码,该代码会删除ID的最后5个数字的id和子字符串。

我得到的错误是

rm: cannot lstat '/var/spool/mqueue/*11343' :Permission denied

我在删除这些邮件时获得了许可

1 个答案:

答案 0 :(得分:1)

你有几个问题:

  1. tee命令附加到名为mailq的文件,但稍后您尝试读取名为mailq.mq的文件,该文件将不存在
  2. 使用rm从sendmail下删除文件可能会严重混淆。我使用postfix,它有删除排队消息的命令;如果sendmail有类似的设施,请使用它。
  3. 最终find...rm根本没有使用查找结果。您不需要find命令。