Назад | Перейти на главную страницу

Dovecot: удалить неиспользуемые почтовые ящики

Используя Dovecot, я столкнулся с довольно неприятной проблемой, когда дело доходит до очистки почтовых ящиков. Вот моя установка:

Довольно базовая настройка. Теперь представьте себе следующий сценарий:

  1. Я создаю пользователя в своей базе данных (скажем, johndoe@mydomain.tld) и начать отправлять и получать электронные письма. Нет проблем, все идет нормально.
  2. Мне больше не нужен мой пользователь, я просто удаляю его из базы данных, больше нет пользователя.

Но вот в чем проблема ... На данный момент /var/mail/mydomain.tld/johndoe) все еще существует. А теперь представьте:

А теперь самое забавное: предыдущий Джон Доу не удалял свои электронные письма перед уходом, а новый Джон Доу получил доступ к предыдущему содержимому почтового ящика (поскольку адреса совпадают, ему было предоставлено то же расположение почтового ящика). Будем надеяться, что Джон Доу номер 1 не оставил учетные данные, информацию о кредитной карте или что-то подобное в своем почтовом ящике ...

Итак, вот мой вопрос: есть ли правильный способ удалить фактические почтовые ящики при удалении пользователя Dovecot? В моем примере я бы хотел /var/mail/mydomain.tld/johndoe будут удалены, когда первый Джон Доу исчезнет (шаг 2, возможно, при перезапуске службы?). Теперь я мог бы сделать это программно, используя мое внешнее приложение (приложение PHP, которое заполняет серверную часть MySQL), но это создало бы беспорядок с разрешениями (разрешить веб-пользователю доступ к почтовым ящикам, нет, спасибо!)

В нашей настройке мы используем postgres как бэкэнд для хранения user Информация. Мы устанавливаем account_status к DELETED в БД и иметь cron, который делает резервную копию всей учетной записи и удаляет их из файловой системы. Этот вопрос обсуждается в dovecot списки рассылки также, и предложенное решение заключалось в использовании rm

rm -rf `doveadm user -f home $username`