Саморазоблачение - рандом, хитрости и чужой опыт

Полезные команды Postfix, Dovecot, Maildir

Некоторые полезные команды в процессе настройки почтового сервера рассматриваемой в этой серии заметок почтовой системы. Часть примеров команд есть прямо в статьях (обычно в конце), но некоторые всплывали в процессе в разных ситуациях, и иногда оказывалось что есть затруднения с поиском решений. Для таких случаев я решил накапливать в этой статье самые полезные команды, которые вызывали затруднения и для которых приходилось искать решение. Заметка видимо будет постоянно дополняться.

ВАЖНО! Эта страница является частью списка заметок о настройке почтовой системы.
Родительская страница - обязательна к просмотру: Установка и настройка почтового сервера




Очистка почтовых папок из командной строки

Столкнулся с интересной проблемой - некоторые ящики некоторых пользователей (например системных) заполнились настолько, что попытки удалить почту через web-клиент приводили к его зависанию. В папках были сотни тысяч писем - не уследил.

Пришлось искать способ удалить из командной строки, но почему-то с этим возникли проблемы. Самая главная проблема - с пользователями. Выскакивали постоянные ошибки при попытках подобных команд (от имени root конечно):
doveadm expunge -u postmaster mailbox Sent savedbefore 2w

В первых попавшихся примерах эта команда приводилась как способ частично очистить папку "Отправленные" пользователя postmaster - удалить все письма старше 2 недель. В этом варианте, и в других подобных, например в варианте doveadm expunge -A mailbox Sent savedbefore 2w (все пользователи) были постоянные ошибки связанные с пользователями.

В общем рабочим оказался следующий вариант:
doveadm expunge -u postmaster@site.tld mailbox Inbox before 1d
(тут очищается папка "Входящие" - Inbox, для "Отправленные" надо заменить на Sent).

В этом варианте вместо 2 недель (2w) - 1 день (1d). Вместо savedbefore работает очистка только с before. Что касается имени пользователя postmaster@site.tld (вместо @site.tld может быть другой домен), то он взят из MySQL базы данных Postfix пользователей почтовых ящиков из таблицы mail, из поля name.

ВАЖНО! Надо зайти в БД и посмотреть имя таблицы, имя поля и имя пользователя. Потому что оно может отличаться у разных серверов в зависимости от настроек! То что в моем случае имя было полным (вместе с доменом) именем почтового ящика было для меня неожиданностью.

Кроме того надо раскомментировать строку в конце (или добавить если ее нет):
/etc/dovecot/dovecot-sql.conf.ext

...

iterate_query = SELECT username AS user FROM users

...

И заменить на нужные username (имя поля, в моем случае это name) и так же users (имя таблицы, в моем случае это mail):

...

iterate_query = SELECT name AS user FROM mail

...

ВАЖНО! Имя поля и таблицы надо посмотреть в БД Postfix (MySQL), так же как и правильное имя пользователя.

Перезагрузка на всякий случай:
service dovecot restart



Оставьте комментарий

Вы можете войти под своим логином или зарегистрироваться на сайте.