> Возможно ли организовать такое средствами postfix или dovecot ?Можно и так, и этак, но я предпочитаю всю LDA-механику выносить в довекот. МТА должен мтить, а совать почты в локальное хранилище - не царское дело. Опять же, когда довекот кладет почты в ящики по ЛДА, и он же их отдает по ПОП/ИМАП, не возникает популярного геморроя с правами доступа к хранилищу для разных софтов с разными уидами. Довекот - и все.
У довекота есть в комплекте утиль, называемая deliver. Этот самый деливер прописываете в качестве ЛДА-агента постфиксу. Как именно это устроено в постфиксе - я не в курсе, я пользуюсь экзимом. Главное - не забыть прописать деливеру нужные ключики. В экзиме это выглядит так:
/usr/local/libexec/dovecot/deliver -d $local_part@$domain -f $sender_address
Деливер читает довекотовский конфиг, обращается к довекотовскому авторизатору с указанным в ключике -d емейлом получателя, и выгребает в ответ кучу переменных: путь к мейлдиру, объем квоты и тэ.пэ. В моем случае БД юзеров хранится в мускле, и обращаюсь к ней я вот так:
user_query = SELECT maildir AS home,
хххх AS uid,
хххх AS gid,
CONCAT("*:bytes=",quota) AS quota_rule
FROM mailbox
WHERE username = '%n@%d'
AND active=1
Но к довекоту можно аналогично прикрутить ЛДАП-хранилище и выгребать не SQL-, а лдап-запросом. В сэмпловом конфиге есть примеры, да и в нете им несть числа.
Получив реквизиты ящика, деливер сперва стартует указанные ему плагины. У меня это quota и sieve:
protocol lda {
mail_plugins = sieve quota
. . .
}
Если текущий размер ящика + доставляемое письмо превысят квоту, отправителю на адрес, переданный деливеру по ключику -f, уйдет письмо с сообщением "Не влазит".
Для полноты ощущений плугину прописываются полезные параметры:
plugin {
. . . . .
quota = maildir:User quota
quota_rule = Junk:ignore
quota_rule2 = Trash:storage=+100M
quota_warning = storage=95%% quota-warning 95 %u %d
quota_warning2 = storage=80%% quota-warning 80 %u %d
. . . . .
}
Смысл параметров такой:
параметры мейлдир-квоты берутся из юзер-БД
папка "Спам" не считается (спам в ней удаляется после месяца хранения)
в корзину влазит на 100 метров больше квоты. Это связано с тем, что довекот при удалении сначала копирует письмо в корзину, а затем удаляет исходник. Если не сделать запаса, квота не позволит нормально удалять письма при 99% заполнении ящика.
Затем идут две настройки уведомлятора о заполнении ящика. Если ящик заполнится на 80% от квоты, то вдобавок к каждому полученному письму юзер будет получать еще одно письмо-уведомление, что квоте вот-вот придет конец, письма не будут приниматься, вынеси елку.
Настроек две потому, что при 80% шлется укоризненное отеческое увещевание, а при 95 уже сплошная нецензурщина.
Как именно будет настраиваться квота - ваше личное дело. Она может быть персональной, групповой, гибридной етц. Можно, при желании, сделать так, чтобы все юзеры в группе получали гиг места, еще 0-1-2 гига от подгруппы, и еще чисто индивидуально можно другу Васе накинуть 10 гиг, а Леночке 20, потому что она дура и мылом шлет авишки.