Используя Dovecot, я столкнулся с довольно неприятной проблемой, когда дело доходит до очистки почтовых ящиков. Вот моя установка:
/var/mail/domain/user
.Довольно базовая настройка. Теперь представьте себе следующий сценарий:
Но вот в чем проблема ... На данный момент /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`