Почтовая квота
Материал из Xgu.ru
- Короткий URL: mail/quota
Ограничение размера почтового ящика пользователя (почтовая квота) — механизм,
позволяющий отказывать в приёме почтового сообщения пользователю,
если суммарный объём писем, находящихся в почтовом ящике, превысил заданный.
Задача создания почтовых ограничений стоит особенно остро в случае, когда сообщения пользователя хранятся на почтовом сервере не только до их прочтения пользователем (как принято при использовании протокола POP3), а всё время (как принято при использовании протокола IMAP4).
Содержание |
[править] Задача
Когда суммарный объём писем, находящихся в почтовом ящике пользователя, превысит некоторое значение, новые сообщения для этого пользователя уже не должны приниматься, а отправителям эти сообщений должно отсылаться ответное сообщение с информацией о том, что почтовый ящик пользователя переполнен, и почта ему доставлена быть не может.
[править] Решение
Существует три основных способа решения задачи:
- Использование механизма квот файловой системы, позволяющей ограничивать суммарный объём файлов пользователя;
- Использование подтомов (subvolumes) в таких файловых системах как ZFS и btrfs;
- Использование ограничений средствами агента локальной доставки (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 }