Postfix
如何一次刷新後綴隊列一封郵件?
有時,郵件停留在我的 postfix 隊列中,遠端伺服器說“連接太多,速度慢”。我已經為特定域配置了我的 postfix,使其每秒只發送一封郵件,但有時似乎不夠。
我知道
postqueue -f
,但它同時發送所有郵件,並且郵件以相同的狀態保持在隊列中。我想一次刷新一封郵件的後綴隊列,假設每秒一封郵件(或兩封,或更多)。
可以刷新一封特定的電子郵件,而不是整個隊列。如果您依次為每條消息執行此操作,並且消息之間有兩秒鐘的睡眠,那應該可以滿足您的要求。
首先,您需要找到隊列中郵件的隊列 ID。您可以通過使用命令來獲得它
postqueue -p
。這是一個範例輸出:-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 6777D6E1E 3517 Mon Jan 25 03:03:02 sender@example.se recipient@example.com 69F6471CA 2820 Tue Jan 26 03:24:17 sender@example.se recipient@example.net
您需要的是第一列。您可以通過一些管道通過 grep 和 cut 獲取所有 ID,如下所示:
[jenny@sameen ~]$ postqueue -p | grep -v ^- | grep -v "(" | cut -d' ' -f1 |grep -e [[:alnum:]] 6777D6E1E 69F6471CA
現在您已經知道如何獲取 ID,您可以將它們放入 bash 循環中並進行一些睡眠:
[jenny@sameen ~]$ for ID in `postqueue -p | grep -v ^- | grep -v "(" | cut -d' ' -f1 |grep -e [[:alnum:]] `; do postqueue -i $ID; sleep 2; done