Робота з чергою exim, одмінскій блог

Працюючи з Exim, постійно натрапляєш на якісь проблеми, коли лист зависає в черзі, з тих чи інших причин, або хост не доступний, або криво налаштовані повтори і постає завдання, що то зробити з завислими повідомленнями. Власне нижче, про те як боротися з чергами Exim

Способи очищення черги:
Найбільш прямолінійний і грубий прийом, проте дозволяє очистити чергу безумовно, але настійно не рекомендую його використовувати:
rm -rf / var / spool / exim / input / *

Коректний спосіб, який має так само результатом повне очищення черги повідомлень:
service exim stop;
rm -rf /var/spool/exim/input.bak;
mv / var / spool / exim / input /var/spool/exim/input.bak;
mkdir / var / spool / exim / input;
chown mailnull.mail / var / spool / exim / input;
chmod 750 / var / spool / exim / input;
service exim start;

Офіційний спосіб очищення черги:
exim -qff

Теж саме з включеним дебаггом процесу:
exim -qff -d9

Власне все теж саме можна зробити скриптом. Як умова всі виконувані файли повинні бути прописані повністю, і користувач стартує скрипт повинен бути довіреною для Exim'а.
Також даний скрипт може допомогти в ситуації коли після доставки повідомлення Exim куди то діває телосообщенія, в результаті чого лист стає гостом і в лістингу черзі exim -bp обсяг не вказується, в результаті чого exiqgrep, не розуміючи про що мова, випадає з помилкою.
Власне скрипт вбиває повідомлення з черги, але зазначу відразу-листи йдуть назавжди.

# Визначаємо qualify_domain - він необхідний для видалення усілякого сміття
domain = `exim -bP | grep -i "^ qualify_domain" | sed -e s /.* \ = \ // g`

# Прощаємося з усіма замороженими повідомленнями
exim -bpr | grep '/ dev / null

# При передачі скрипту параметра c, включаємо агресивний режим
if [ "$ 1" == "c"]; then

трошки статистики

Схожі статті