URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 93969
[ Назад ]

Исходное сообщение
"Postfix+Dovecot квоты на размер почтового ящика"

Отправлено bearwoolfs , 30-Окт-12 07:42 
Добрый день , поднимаю новый почтовый сервер , postfix+dovecot с пользователями из AD. возникла задача , разграничить объем почтовых ящиков одним пользователям один размер другим - другой. Возможно ли организовать такое средствами postfix или dovecot ?. Или же только скрипт приворачивать ?

Содержание

Сообщения в этом обсуждении
"Postfix+Dovecot квоты на размер почтового ящика"
Отправлено Andrey Mitrofanov , 30-Окт-12 12:10 
> размер другим - другой. Возможно ли организовать такое средствами postfix или dovecot

А что Вам говорит гугль на запросы
  dovecot quota
и
  postfix quota
? Наверное, что-то более интересное, чем мне? Поделитесь!


"Postfix+Dovecot квоты на размер почтового ящика"
Отправлено DeadLoco , 31-Окт-12 03:06 
> Возможно ли организовать такое средствами 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, потому что она дура и мылом шлет авишки.


"Postfix+Dovecot квоты на размер почтового ящика"
Отправлено PavelR , 31-Окт-12 07:09 

> Получив реквизиты ящика, деливер сперва стартует указанные ему плагины. У меня это
> quota и sieve:

А как sieve используется? В плане, что он делает, и как рулятся его настройки?


"Postfix+Dovecot квоты на размер почтового ящика"
Отправлено DeadLoco , 31-Окт-12 12:57 
> А как 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, который со второй версии довекота встроен прямо в довекот, сервисом. Клиентом к менеджсиву может работать почти любой имап-клиент. У меня это раундкуб, у которого есть штатный плагин.


"Postfix+Dovecot квоты на размер почтового ящика"
Отправлено bearwoolfs , 01-Ноя-12 14:30 
Спасибо за совет. нашел вариант для себя http://wiki2.dovecot.org/Quota/Configuration


}
plugin {

    quota = maildir:User quota
     quota_rule = *:storage=100MB
        quota_exceeded_message = Внимание !!! Исчерпан лимит размера почтового ящика

}


"Postfix+Dovecot квоты на размер почтового ящика"
Отправлено bearwoolfs , 01-Ноя-12 14:59 
А есть ли вариант как отдельным пользователям выдать одни квоты одни а другим другие ?
Дело в том что у меня машина с почтовой системой в домене, и пользователей от туда берет.
Как им дать квоты не знаю.  

> }
> plugin {
>     quota = maildir:User quota
>      quota_rule = *:storage=100MB
>         quota_exceeded_message = Внимание !!!
> Исчерпан лимит размера почтового ящика
> }


"Postfix+Dovecot квоты на размер почтового ящика"
Отправлено DeadLoco , 01-Ноя-12 16:25 
> А есть ли вариант как отдельным пользователям выдать одни квоты одни а
> другим другие ?
> Дело в том что у меня машина с почтовой системой в домене,
> и пользователей от туда берет.
> Как им дать квоты не знаю.

Если у вас довекот берет юзер-БД из АД, то там же должны храниться и размеры квот. Как это делается в АД - без малейшего понятия, вам следует смотреть текущий конфиг, и делать по аналогии.


"Postfix+Dovecot квоты на размер почтового ящика"
Отправлено Andrey Mitrofanov , 01-Ноя-12 17:58 
> Если у вас довекот берет юзер-БД из АД, то там же должны
> храниться и размеры квот. Как это делается в АД - без

Про "там же" -- совсем не обязательно. По кр.мере авторизацию я (ровно по их wiki для vmail) хранил в sql c _частью параметров_ прописанной в static-е (один и тот же home для "виртуалов" или что-то типа). Про эзотерику ad + sql не скажу, не знаю.


"Postfix+Dovecot квоты на размер почтового ящика"
Отправлено PavelR , 01-Ноя-12 22:02 
>[оверквотинг удален]
> {
>    keep;
> }

> первый блок кладет спам, куда положено
> второй - помечает флагом важности сообщения постмастера и не дает юзеру их
> фильтровать
> последний означает, что после отработки этого сита нужно еще запустить пользовательское.
> Пользователи своими ситами рулят через managesieve, который со второй версии довекота встроен
> прямо в довекот, сервисом. Клиентом к менеджсиву может работать почти любой
> имап-клиент. У меня это раундкуб, у которого есть штатный плагин.

спасибо за ответ, надо будет поиграться с этим всем делом.


"Postfix+Dovecot квоты на размер почтового ящика"
Отправлено dommav , 08-Авг-14 20:35 
Добрый день, всем,

подскажите, кто-то настраивал квоты Dovecot в связке c Microsoft Windows Active Directory?
Если есть какая либо инфа - прошу помощи в настройке или мануальчик.