Postfix

如何一次刷新後綴隊列一封郵件?

  • December 6, 2020

有時,郵件停留在我的 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

引用自:https://serverfault.com/questions/752638