排查邮件队列是谁在发送大量邮件:
如何查看当前有多少邮件队列正在等待发送的总数:
exim -bpc
查看邮件队列的详细情况(列出所有正在等待发送的队列中每一条邮件ID):
exim -bp
汇总队列邮件信息
exim -bp | exiqsumm
cPanel官方给的查看邮件队列数量的命令:
grep -oP '(?<= cwd=)/home?/\S+' /var/log/exim_mainlog | sort | uniq -c | sort -rn
查看邮件队列的发送用户并按照发送量来排序
grep -oP "A=\K([A-Za-z0-9_.:]+)" /var/log/exim_mainlog | sort | uniq -c | sort -nr
我在这里做的是找到A=,其中包含用户名以及如何从/var/log/exim_mainlog进行身份验证,然后我将其管道传输到,sort并将uniq -c它们聚合为一个组并为您提供一个数字。最后一个sort-nr只是反向给出了一个有序组中的计数(最大数量为第一个)。
如果您有不同类型的身份验证,让我们说dovecot_plain和dovecot_login,但使用相同的用户名,那么最简单的方法是放入另一个只获得“:”之后的grep,如下所示:
grep -oP "A=\K([A-Za-z0-9_.:]+)" /var/log/exim_mainlog | grep -oP ":\K(.*)" | sort | uniq -c | sort -nr
查看哪些PHP脚本在发信:
exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mvb " $3}' | bash |grep /home|awk {'print $4'}
如何进一步查看邮件ID的信息:
exim -Mvb messageID
exim -Mvh messageID
exigrep exceeded /var/log/exim_mainlog | grep 600
清空邮件队列的方法:https://www.crybit.com/remove-all-emails-from-queue/
清空单个邮件队列:
exim -Mrm MESSAGE-ID
清空所有的邮件队列
清空邮件队列
cPanel官方给予的命令:
exim -bp | grep -oP '\w{6}\-\w{6}\-\w{2}' | xargs -L 100 | exim -Mrm
方法1:使用 ‘exim -bp‘
exim -bp|grep "<"|awk {'print $3'}|xargs exim -Mrm
在此方法中,命令’exim -bp’用于从Exim邮件队列中查找消息ID,然后使用命令’exim -Mrm’作为参数从邮件队列中删除相应的电子邮件。
方法2: 使用‘exiqgrep‘
exiqgrep -i|xargs exim -Mrm
带有’-i’开关的exiqgrep命令列出邮件队列中的邮件ID,然后使用邮件ID删除邮件。
方法3:
exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | bash
1.删除所有被冻结的邮件
root@localhost# exiqgrep -z -i | xargs exim -Mrm
2.删除所有5天前的队列邮件
root@localhost# exiqgrep -o 432000 -i | xargs exim -Mrm
3.冻结所有来自某一发件人的邮件
root@localhost# exiqgrep -i -f 发件人@zeknet.com | xargs exim -Mf