当postfix队列为空时断开调制解调器

在/etc/ppp/ip-up.d/script我有以下运行时,ppp0接口(连接),当它完成调制解调器自动结束internet连接时运行fetchmail。

#!/bin/sh /usr/bin/fetchmail -v -f /etc/fetchmailrc -L /var/log/fetchmail.log killall wvdial 

这完美的作品。 现在我需要添加到fetchmail命令执行下面的脚本,检查postfix的邮件队列是否完全是空的,如果是true,然后执行命令killall wvdial挂断调制解调器。

从理论上讲,我知道我可以用if,else,do,while等等来做某些事情,但实际上我不知道如何去开发它。 我希望你们帮我编程和完成这个脚本正常工作。 我赞赏这些评论。

我不是bash的专家,但经过一些快速的 研究,我认为这将做你想要的:

 while [ `find /var/spool/postfix/{deferred,active,maildrop}/ -type f | wc -l` -gt 0 ]; do sleep 5 done 

这应该每5秒循环,直到后缀队列为空。 调整你的path到相应的后缀文件。

您可能希望将deferred部分留在find命令之外,否则任何导致电子邮件被延迟的临时发送错误将使调制解调器连接保持打开状态,直到重试。