Проблема началась с того, что сервер через раз стал отправлять письма с помощью стандартной php функции mail(). Стал смотреть что не так с почтовиком exim4. И оказалось что у него очередь скопилась в 450 сообщений, среди которых были и нормальные. Все сообщения были помечены как frozen. Немного полезных команд для exim:
Узнать кол-во сообщений в очереди:
Вывести список очереди:
"Передернуть" очередь принудительно, чтобы не ждать когда exim по какому-то своему таймеру это сделает:
Посмотреть содержимое конкретного письма по его id (id увидите, когда выведите список exim -bp):
Собственно с помощью последней команды как раз сможете узнать что такого там произошло и почему это сообщение зависло в очереди.
У меня очередь забилась из-за того,что cron выполнялся с ошибками и были отправить попытки сообщений на ящики пользователей, которых физически нигде не заведено. Например, тот же www-data, который создается, если сервер управляется панелью ISPManager.
Самое интересное - удалить все frozen сообщения для конкретного пользователя:
Помогает нам тут утилита exiqgrep.
upd.
А вот как можно удалить всю очередь frozen-писем:
Я крайне рекомендую ознакомиться детально с информацией, перейдя по ссылкам:
http://www.opennet.ru/base/net/exim_options.txt.html
http://vds-admin.ru/mail/poleznye-komandy-pochtovogo-servera-exim-shpargalka
http://admin-dm.livejournal.com/78066.html
Узнать кол-во сообщений в очереди:
exim -bpc
Вывести список очереди:
exim -bp
"Передернуть" очередь принудительно, чтобы не ждать когда exim по какому-то своему таймеру это сделает:
exim -qff
Посмотреть содержимое конкретного письма по его id (id увидите, когда выведите список exim -bp):
exim -Mvb 1RVlKG-0001sS-pA
Собственно с помощью последней команды как раз сможете узнать что такого там произошло и почему это сообщение зависло в очереди.
У меня очередь забилась из-за того,что cron выполнялся с ошибками и были отправить попытки сообщений на ящики пользователей, которых физически нигде не заведено. Например, тот же www-data, который создается, если сервер управляется панелью ISPManager.
Самое интересное - удалить все frozen сообщения для конкретного пользователя:
exiqgrep -r user@domain -zi | xargs exim -Mrm
Помогает нам тут утилита exiqgrep.
upd.
А вот как можно удалить всю очередь frozen-писем:
exim -bp | exiqgrep -i | xargs exim -Mrm
Я крайне рекомендую ознакомиться детально с информацией, перейдя по ссылкам:
http://www.opennet.ru/base/net/exim_options.txt.html
http://vds-admin.ru/mail/poleznye-komandy-pochtovogo-servera-exim-shpargalka
http://admin-dm.livejournal.com/78066.html
0 коммент.:
Отправить комментарий