Как очистить очередь сообщений

от admin

Удалить/Очистить/Сбросить очередь в postfix

Иногда, приходиться удалять письма из очереди, и если не знаете как это сделать ( или может забыли), то данная тема поможет с этим разобраться.

Для начала, проверим что иметься в очереди:

У меня например, образовалось вот такая очередь:

Или, имеется другая утилита:

Чтобы сохранить результат в текстовый файл, можно запустить:

Просмотр сообщения (Содержимое, заголовок и тело)

Предположим, что сообщение имеет идентификатор XXXXXXX (я выше показывал как )

Или, сохраняем в файл:

Удалить/Очистить/Сбросить очередь в postfix

Если есть необходимость удалить конкретное письмо ( нужно знать его ID), выполните команду:

Чтобы очистить очередь в Postfix MTA просто введите следующую команду:

Чтобы удалить всю почту из очереди, введите:

Чтобы удалить все письма в отложенной очереди (deferred), введите:

Чтобы удалить все письма из почтовой очереди, которые пришли с test_user@linux-notes.org или отправлены на адрес test_user@linux-notes.org (команда одинакова независимо от того, является ли это адресом отправителя или получателя), вы можете использовать следующую команду:

Ничего сложного в этом нет.

Нашел в интернете, готовый скрипт, который удаляет всю почту из mailq, которая соответствует регулярному выражению (указанному в качестве первого аргумента).

И прописываем в него:

Например, удалите все поставленные в очередь сообщения (исходящие и входящие) для http://linux-notes.org:

Удалите все сообщения в очереди, содержащие слово «world»:

У меня, по данной статье «Удалить/Очистить/Сбросить очередь в postfix» все.

Как очистить очередь RabbitMQ?

Как можно очистить очередь через админку? Можно ли очистить очередь RabbitMQ через консоль?

3 ответа

Очередь rabbitmq можно очистить через админку.

По умолчанию адмнка rabbitMQ ставится на порту 15672. Подбробнее об установке админки rabbitMQ.

1. Авторизоваться в админке

Вход в админку rabbitMQ

2. Перейти на вкладку Queues и выбрать очередь, которую нужно очистить (удалить).

Очередь выбирается кликом. Если очередей в списке много, воспользуйтесь полем Filter для фильтрации по имени.

Выбираем одну из очередей rabbitMQ для последующей очистки

3. В настройках очереди выберите меню Delete / purge (1). Затем нажмите на кнопку Delete (2).

Всплывёт окно подверждения. Для очистки очереди отвечаем утвердительно.

Очистка очереди RabbitMQ через админку

PHP-код для очистки очереди rabbitMQ.

В цикле, пока очередь не пуста, получаем из очереди сообщения. Для получения очередного сообщения имеется метод consume() . Помечаем сообщения (задачи, таски) как выполненные с помощью метода ack() .

php код примерно такой:

При необходимости делаем проверки имени задачи, параметров и т.д.

Удалить все сообщения из определенной очереди rabbitMQ можно с помощью консоли cli.

Посмотреть все доступные очереди в списке очередей, точное имя как в rabbitMQ:

Читать:
Что за приложение фэмили линк

sudo rabbitmqctl list_queues name messages

В выводе будут имена тасков и их количество в очереди, например:

Теперь одной из двух команд ( purge или delete ) к утилите rabbitmqadmin мы можем очистить очередь.

  • rabbitmqadmin purge queue name=Имя_Очереди_Для_Очистки
  • rabbitmqadmin delete queue name=Имя_Очереди_Для_Очистки

Альтернативой для очистки очереди является "reset". Делать reset не рекомендуется, т.к. при этом сбрасываются абсолютно все настройки на дефолтные, включая созданных пользователей и правки в конфигах:

Если в rabbitMQ много задач с похожими именами, то можно написать bash-команду, чтобы удалить их:

Как очистить очередь Exim?

Exim — это агент для передачи сообщений или почтовый сервер, который используется в OC Linux.

exim

Команды для очистки очереди Exim:

Для показа писем в очереди используется команда, выводятся время постановки в очередь, размер, ID сообщения, отправитель, получатель:
exim -bp

Очистить все сообщения из очереди:
exipick -i | xargs exim -Mrm

Выполнить очистку всех замороженных сообщений из очереди:
exipick -zi | xargs exim -Mrm

Удалить определенное сообщение из очереди можно командой (где ID это id сообщения в очереди):
exim -Mrm ID

Как очистить очередь сообщений postfix

Postfix — это агент передачи почты (MTA — mail transfer agent). Postfix — это свободное программное обеспечение. Архитектура Postfix выполнена в стиле UNIX — где простые программы выполняют минимальный набор функций, но выполняют их быстро и надежно.

Заполнившаяся очередь сообщений postfix как правило свидетельствует о проблемах с нормальным функционированием почтового сервера.

Теперь давайте вернемся к главному вопросу — Как очистить очередь сообщений postfix?

Перед тем как приступить к отчистке очереди сообщений, первым делом нам следует проверить, что сейчас находится в очереди почтового сервера postfix, для этого наберём в консоли команду:

Если в результате выполнения этой команды мы получим сообщение Mail queue is empty, значит очередь пуста и можно не волноваться. Если же результат похож на тот, что на картинке, будем чистить очередь сообщений.

Для этого мы сначала остановим postfix, набрав в консоли команду:

и после того как сервер остановлен очистим очередь командой

Пока остановлен postfix, можно почитать логи, найти проблему из-за которой очереди сообщений забиваются и решить ее. После того как проблема решена снова запустим постфикс для этого введите команду:

для того чтобы окончательно убедиться что проблема решена не забудьте через некоторое время повторить проверку очереди.

Если для у Вас остались вопросы по теме вы можете задать их в коментариях

Похожие статьи