Почтовая квота

Материал из Xgu.ru

Перейти к: навигация, поиск
stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


Короткий URL: mail/quota


Ограничение размера почтового ящика пользователя (почтовая квота) — механизм, позволяющий отказывать в приёме почтового сообщения пользователю, если суммарный объём писем, находящихся в почтовом ящике, превысил заданный.

Задача создания почтовых ограничений стоит особенно остро в случае, когда сообщения пользователя хранятся на почтовом сервере не только до их прочтения пользователем (как принято при использовании протокола POP3), а всё время (как принято при использовании протокола IMAP4).

Содержание

[править] Задача

Когда суммарный объём писем, находящихся в почтовом ящике пользователя, превысит некоторое значение, новые сообщения для этого пользователя уже не должны приниматься, а отправителям эти сообщений должно отсылаться ответное сообщение с информацией о том, что почтовый ящик пользователя переполнен, и почта ему доставлена быть не может.

[править] Решение

Существует три основных способа решения задачи:

  1. Использование механизма квот файловой системы, позволяющей ограничивать суммарный объём файлов пользователя;
  2. Использование подтомов (subvolumes) в таких файловых системах как ZFS и btrfs;
  3. Использование ограничений средствами агента локальной доставки (LDA).

Первый и второй метод фактически перекладывают решение задачи на плечи файловой системы, используя определённое её средство ограничения выделяемого пространства, будь-то стандартный механизма квот или более развитый механизм новый создания подтомов.

Третий метод заставляет агент доставки заботится о том, сколько почты пользователь принял, и разрешать или запрещать ему доставку нового сообщения. Этот способ более сложен в сравнении с первыми двумя, но он и более универсален:

  • во-первых, он работает независимо от возможностей файловой системы, на которой находится хранилище;
  • во-вторых, с его помощью можно ограничивать приём почты не только на основе информации о объёме текущего почтового ящика, а основываясь на совершенно произвольных критериях;
  • в-третьих, способ позволяет разнообразить реакцию на переполнение ящика — можно формировать какие-угодно реакции, начиная, отсылкой красивого сообщения отправителю (такого сообщения, которое он сможет понять, а не просто говорить "у вас почта не работает"), и заканчивая отсылкой в джаббер получателя информации, что к нему в почтовый ящик пыталось попасть ещё одно письмо, и даже попало бы, если бы ящик не был переполнен.

[править] Использование квот файловой системы

[править] Использование подтомов

[править] Использование локального агента доставки

Конечная доставка почты выполняется пользователю при помощи агента локальной доставки, LDA (local delivery agent). Обычно в качестве этого агента используется встроенный в Sendmail агент mail.local. Квотирование почты особенно удобно осуществлять при использовании procmail в качестве LDA (хотя и mail.local есть возможность отправлять сообщения об ошибке при превышении квоты).

Пример конфигурации для procmail [1]:

NL="
"
LOG="====================${NL}"
QUOTA=3042880
DROPPRIVS=yes
LOG="QUOTA:     $QUOTA${NL}"

## David W. Tamkin <3F1EA16E.7040102@panix.com>
## Recommendation to use :0i from Leow Hock Seng on 25 Apr 2005
:0i
INBOXSIZE=| set -- `ls -l $DEFAULT`; echo $5

LOG="INBOXSIZE: $INBOXSIZE${NL}"
:0
* $ -${INBOXSIZE}^0
* $ ${QUOTA}^0
{
    MAXMSG = $=
    LOG="MAXMSG:    $MAXMSG${NL}"
    :0
    * $ > ${MAXMSG}
    {
        LOG="Bouncing (message too big!)${NL}"
        EXITCODE=69
        HOST
    }
}

:0E
{
    LOG="Bouncing (inbox already full!)${NL}"
    EXITCODE=69
    HOST
}


[править] Материалы по настройке почтовых систем на Xgu.ru