Здравствуйте!Возникла потребность настроить индивидуальные для каждого юзера квоты в постфиксе. Столкнулась с тем, что в стандартном пакете из репозитория дебиана поддержки квотирования нет. Вопрос такой: это действительно так? Нету пакетов с уже пропатченным постфиксом и надо только брать исходники, патчить их и самостоятельно собирать?
> Здравствуйте!
> Возникла потребность настроить индивидуальные для каждого юзера квоты в постфиксе. Столкнулась
> с тем, что в стандартном пакете из репозитория дебиана поддержки квотирования
> нет. Вопрос такой: это действительно так? Нету пакетов с уже пропатченным
> постфиксом и надо только брать исходники, патчить их и самостоятельно собирать?http://www.postfix.org/addon.html Cмотрим раздел "Quota software". Лично у меня постфикс собран вот с таким USE-ключом (Gentoo):
equery uses postfix
* Found these USE flags for mail-mta/postfix-2.7.4:
.....
+ + vda : Adds support for virtual delivery agent quota enforcing
> надо только брать исходники, патчить их и самостоятельно собирать?Надо выносить функционал LDA на dovecot, и будет вам щясье. Пусть МТА мтит, а в локальное хранилище кладет тот, кто оттуда берет. Как минимум, не будете постить траблов с правами доступа.
> Надо выносить функционал LDA на dovecot, и будет вам щясье. Пусть МТА
> мтит, а в локальное хранилище кладет тот, кто оттуда берет. Как
> минимум, не будете постить траблов с правами доступа.Ну не обязательно на давкот. Можно и курьер приделать - дело вкуса и личных предпочтений. Но в общем - согласен. Хотя можно и все одним постфиксом разрулить - и MTA, и LDA. Хотя с другой стороны - все равно службу pop3/imap прикручивать надо. А тут тот же давкот позволяет обойтись одним собой - и LDA, и pop3-imap с кучей полезного функционала - managesieve, например. :)
> с другой стороны - все равно службу pop3/imap прикручивать надо. А
> тут тот же давкот позволяет обойтись одним собой - и LDA,
> и pop3-imap с кучей полезного функционала - managesieve, например. :)А также сабжевые квоты и просто sieve.
>> надо только брать исходники, патчить их и самостоятельно собирать?
> Надо выносить функционал LDA на dovecot, и будет вам щясье. Пусть МТА
> мтит, а в локальное хранилище кладет тот, кто оттуда берет. Как
> минимум, не будете постить траблов с правами доступа.Спасибо большое, наконец-то добралась до настройки это щастья :) .
Заставить постфикс отдавать почту довкоту, чтобы он ее раскладывал, удалось без проблем, но вот квоты не работают, довкот принимает всю почту :(Лог на пришедшее письмо:
Aug 8 20:40:17 test amavis[23896]: (23896-01) Passed CLEAN, [x.x.x.x] [x.x.x.x] <test@gmail.com> -> <test@test.com>, Message-ID: <CAMNxkx9KGPv-tCr9S4at0G-j7WhCRrWcgEspfv18nevoWs0jFA@mail.gmail.com>, mail_id: r-GiZi9MGIDA, Hits: -, size: 8080572, queued_as: 179D596057, 6410 ms
Aug 8 20:40:17 test postfix/smtp[23342]: 54D73960C8: to=<test@test.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=28, delays=21/0/0/6.4, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=23896-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 179D596057)
Aug 8 20:40:18 test deliver(test@test.com): msgid=<CAMNxkx9KGPv-tCr9S4at0G-j7WhCRrWcgEspfv18nevoWs0jFA@mail.gmail.com>: saved mail to INBOX
Aug 8 20:40:18 test postfix/pipe[23921]: 179D596057: to=<test@test.com>, relay=dovecot, delay=1.2, delays=0.89/0.01/0/0.29, dsn=2.0.0, status=sent (delivered via dovecot service)Все, что касается квот из настроек давкота:
protocol imap {
mail_plugins = quota imap_quota
imap_client_workarounds = delay-newmail netscape-eoh
}protocol pop3 {
mail_plugins = quota
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}protocol lda {
postmaster_address = postmaster@test.net
mail_plugins = quota
}plugin {
quota = maildir
quota_warning = storage=80%% /usr/local/bin/quota-warning.sh 80
}user_query = SELECT 1004 AS uid, 1004 AS gid, concat('maildir:storage=', quota, 'B') AS quota_rule FROM mailbox WHERE username = '%u'
Подскажите, пожалуйста, что не так :(
> Подскажите, пожалуйста, что не так :(Вопрос снят =)
>> Подскажите, пожалуйста, что не так :(Собсно, конфиг вроде правильный.
> Вопрос снят =)
А что было-то? Небось, в базе косяк?
>>> Подскажите, пожалуйста, что не так :(
> Собсно, конфиг вроде правильный.
>> Вопрос снят =)
> А что было-то? Небось, в базе косяк?Нет. Я как-то не посмотрела на версию давкота, все это работает только в версии 1.1, а у меня 1.0 стояла. Странно, что на эти лишние параметры он не ругался, просто их игнорил и все. Обновила давкот, все заработало =)
> Обновила давкот, все заработало =)Я бы вообще советовал на 2.0 переходить. Там сделали много вкусняшек, которых объективно не хватает в 1.х. В частности, отправка деливером уведомлений о переполнении ящика уже не требует держать отдельный конфиг, и есть возможность вешать обработчики на события, вроде перемещения письма внутри мейлдира.
В любом случае дальше надо смотреть в сторону плагинов sieve и managesieve. В них самая мякотка.
>> Обновила давкот, все заработало =)
> Я бы вообще советовал на 2.0 переходить. Там сделали много вкусняшек, которых
> объективно не хватает в 1.х. В частности, отправка деливером уведомлений о
> переполнении ящика уже не требует держать отдельный конфиг, и есть возможность
> вешать обработчики на события, вроде перемещения письма внутри мейлдира.
> В любом случае дальше надо смотреть в сторону плагинов sieve и managesieve.
> В них самая мякотка.В репах дебиана пока только 1.1 в стабильной ветке, как появится 2.0, перейду, спасибо.
И еще такой вопрос возник: никак не найду, где изменить текст сообщения, которая посылается отправителю? Чтобы вместо дефолтного Quota exceeded (mailbox for user is full) было что-то свое?
> И еще такой вопрос возник: никак не найду, где изменить текст сообщения,
> которая посылается отправителю? Чтобы вместо дефолтного Quota exceeded (mailbox for user
> is full) было что-то свое?plugin {
. . . . . .
quota = maildir
quota_rule = Junk:ignore
quota_rule2 = Trash:storage=100M
quota_exceeded_message = 422: No free space to store your message
. . . . . .
}
> quota_rule = Junk:ignoreЭта строка нужна потому, что у меня содержимое папок "СПАМ" у юзеров удаляется автоматически, после 30 дней хранения. Поэтому я спам не беру в общий зачет квоты.
> quota_rule2 = Trash:storage=100M
Эта строка нужна непременно, потому что иначе будут серьезные проблемы при переполнении ящика. Она указывает, что за счет "Корзины" квота может быть превышена на 100М. Дело в том, что при удалении писем на них сначала делается хардлинк в корзину, затем исходный хардлинк удаляется, а при опорожнении корзины удаляется и оставшийся. Так вот, на момент создания второго хардлинка в корзину, удаляемый файл учитывается квотой дважды, по обоим линкам. И если не задать оверхеда квоты по корзине, то квота может не дать удалить лишнее.
>[оверквотинг удален]
> в общий зачет квоты.
>> quota_rule2 = Trash:storage=100M
> Эта строка нужна непременно, потому что иначе будут серьезные проблемы при переполнении
> ящика. Она указывает, что за счет "Корзины" квота может быть превышена
> на 100М. Дело в том, что при удалении писем на них
> сначала делается хардлинк в корзину, затем исходный хардлинк удаляется, а при
> опорожнении корзины удаляется и оставшийся. Так вот, на момент создания второго
> хардлинка в корзину, удаляемый файл учитывается квотой дважды, по обоим линкам.
> И если не задать оверхеда квоты по корзине, то квота может
> не дать удалить лишнее.Ага, я это уже в доке прочитала и выставила, но все равно большое спасибо!
> Ага, я это уже в доке прочитала и выставила, но все равно
> большое спасибо!А-а-а-а! Она читает доки! (в панике убегает)
>[оверквотинг удален]
>> которая посылается отправителю? Чтобы вместо дефолтного Quota exceeded (mailbox for user
>> is full) было что-то свое?
> plugin {
> . . . . . .
> quota = maildir
> quota_rule = Junk:ignore
> quota_rule2 = Trash:storage=100M
> quota_exceeded_message = 422: No free space to store your message
> . . . . . .
> }Большое спасибо =)