Добрый день , поднимаю новый почтовый сервер , postfix+dovecot с пользователями из AD. возникла задача , разграничить объем почтовых ящиков одним пользователям один размер другим - другой. Возможно ли организовать такое средствами postfix или dovecot ?. Или же только скрипт приворачивать ?
> размер другим - другой. Возможно ли организовать такое средствами postfix или dovecotА что Вам говорит гугль на запросы
dovecot quota
и
postfix quota
? Наверное, что-то более интересное, чем мне? Поделитесь!
> Возможно ли организовать такое средствами 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, потому что она дура и мылом шлет авишки.
> Получив реквизиты ящика, деливер сперва стартует указанные ему плагины. У меня это
> quota и sieve:А как sieve используется? В плане, что он делает, и как рулятся его настройки?
> А как sieve используется? В плане, что он делает, и как рулятся его настройки?Сив используется по назначению - в качестве сортировщика почт.
Есть общесистемное правило, согласно которому письмо с хедером X-Spam-Detected кладется деливером в папку .Junk юзерского мейлдира.
И есть файлики с пользовательскими правилами, по которым происходят всякие разные действия - письма сортируются по подпапкам в инбоксе, рассылаются копии, делается пересылка налево, автоответчики отвечают етц.В конфиге довекота прописано примерно вот так:
plugin {
. . . . .
sieve_before = /usr/local/etc/dovecot/common.sieve
sieve_dir = /var/mail/%d/%n
sieve = /var/mail/%d/%n/user.sieve
. . . . .
}
В common.sieve прописано ручками примерно так:require "fileinto";
require "variables";
require "imap4flags";
if exists "X-Spam-Detected"
{
fileinto "Junk"; stop;
}
elsif anyof (header :contains "From" "postmaster@ххх.ххх")
{
setflag "flagvar" "\\Flagged";
fileinto :flags "${flagvar}" "INBOX";
stop;
}
. . . . .
. . . . .
else
{
keep;
}
первый блок кладет спам, куда положено
второй - помечает флагом важности сообщения постмастера и не дает юзеру их фильтровать
последний означает, что после отработки этого сита нужно еще запустить пользовательское.Пользователи своими ситами рулят через managesieve, который со второй версии довекота встроен прямо в довекот, сервисом. Клиентом к менеджсиву может работать почти любой имап-клиент. У меня это раундкуб, у которого есть штатный плагин.
Спасибо за совет. нашел вариант для себя http://wiki2.dovecot.org/Quota/Configuration
}
plugin {quota = maildir:User quota
quota_rule = *:storage=100MB
quota_exceeded_message = Внимание !!! Исчерпан лимит размера почтового ящика}
А есть ли вариант как отдельным пользователям выдать одни квоты одни а другим другие ?
Дело в том что у меня машина с почтовой системой в домене, и пользователей от туда берет.
Как им дать квоты не знаю.> }
> plugin {
> quota = maildir:User quota
> quota_rule = *:storage=100MB
> quota_exceeded_message = Внимание !!!
> Исчерпан лимит размера почтового ящика
> }
> А есть ли вариант как отдельным пользователям выдать одни квоты одни а
> другим другие ?
> Дело в том что у меня машина с почтовой системой в домене,
> и пользователей от туда берет.
> Как им дать квоты не знаю.Если у вас довекот берет юзер-БД из АД, то там же должны храниться и размеры квот. Как это делается в АД - без малейшего понятия, вам следует смотреть текущий конфиг, и делать по аналогии.
> Если у вас довекот берет юзер-БД из АД, то там же должны
> храниться и размеры квот. Как это делается в АД - безПро "там же" -- совсем не обязательно. По кр.мере авторизацию я (ровно по их wiki для vmail) хранил в sql c _частью параметров_ прописанной в static-е (один и тот же home для "виртуалов" или что-то типа). Про эзотерику ad + sql не скажу, не знаю.
>[оверквотинг удален]
> {
> keep;
> }
спасибо за ответ, надо будет поиграться с этим всем делом.
Добрый день, всем,подскажите, кто-то настраивал квоты Dovecot в связке c Microsoft Windows Active Directory?
Если есть какая либо инфа - прошу помощи в настройке или мануальчик.