Bea*_*e T 8 postfix ubuntu-18.04
我最近发现我们的一个 Ubuntu 服务器每分钟生成数十封通知电子邮件,并限制它与少数其他服务器共享的 Office 365 中继帐户。我停止了此服务器上的 Postfix 服务并禁用了生成所有这些警报(以及随后的传递失败消息的级联)的脚本。但是,我没有考虑 Postfix 队列管理器,它保留了数千条这样的消息,并在我重新启动 Postfix 时尝试重新发送它们。
我的第一个,诚然是笨手笨脚的,尝试清除队列是导航到队列目录,/var/spool/postfix并从“活动”和“传入”文件夹中手动删除文件。然而,当我运行postqueue -p大量电子邮件时,队列中仍然出现。
完全重置或清除 Postfix 队列的最佳方法是什么?
您应该使用该postsuper命令从 Postfix 队列中删除消息 - 该-d <queueid>选项将删除具有指定队列 ID 的消息。
我正在使用类似这个脚本的东西来运行邮件队列中的所有消息:
mailq | awk '$7~/@/{print$1}' | while read qid; do postsuper -d $qid; done
Run Code Online (Sandbox Code Playgroud)
由于您直接弄乱了队列的文件,因此您可能需要发出postsuper -p.
-p 清除系统或软件崩溃后遗留的旧临时文件。
几年前,有人写了一个小脚本来更好地处理后缀邮件队列中的某些情况,而不是仅仅做临时的一个衬垫。您将来可能会发现它很有用。
$ cat /usr/local/sbin/postclear
#!/bin/bash
usage() {
echo "${0/*\/} --from <address1> [<address2> .. <addressN>]"
echo "${0/*\/} --bounce <address1> [<address2> .. <addressN>]"
echo "${0/*\/} --to <address1> [<address2> .. <addressN>]"
}
if [ $# -lt 2 ]; then
usage 1>&2 ;
exit 1;
fi
case $1 in
--from )
shift
while (( $# )) ; do
postqueue -p | grep -e "$1" | grep -Eo '^[A-F0-9]+' | postsuper -d -
shift
done
exit;;
--bounce )
shift
while (( $# )) ; do
postqueue -p | grep -E -B2 -e "$1" | grep MAILER-DAEMON | grep -Eo '^[A-F0-9]+' | postsuper -d -
shift
done
exit;;
--to )
shift
while (( $# )) ; do
postqueue -p | grep -E -B2 -e "$1" | grep -Eo '^[A-F0-9]+' | postsuper -d -
shift
done
exit;;
* )
echo "Unknown option $1" >&2
exit 1;;
esac
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1907 次 |
| 最近记录: |