The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Exim+ dovecot+quota + отлупы"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / Linux)
Изначальное сообщение [ Отслеживать ]

"Exim+ dovecot+quota + отлупы"  +/
Сообщение от McLeod095 (ok) on 30-Сен-11, 18:21 
Всем доброго времени!!
Настраиваю связку указанную выше. Вообще там конечно много чего накручено, но пока интересует вот такая проблема.
Т.к. приходится работать с квотами почтовых ящиков, то решил сильно не заморачиваться и привязать квоты к АД. В итоге для каждого пользователя выставляется квота по умолчанию, и только для тех у кого в АД в определенном параметре установлено значение, для них ставится квота отличная от квоты по умолчанию. С этим вроде проблем нет, но вот теперь есть другая проблема. Если у пользователя квота исчерпана, то сохранить что либо в почтовом ящике через imap он не может, т.к. dovecot тут же отметает данное действие. Но вот exim, ничего не зная о квотах, т.к. вся доставка производится через dovecot-lda, принимает почту и шлет ее по назначению. При этом естественно теряется копия сообщения, т.к. она клиентом не сохраняется в папке отправленные.
Хотя и сохранение отправленных сообщений в отправленных я решил вот таким методом, кстати заодно скажите мне бред это или нет.

routers
copy_to_sent:
driver = accept
condition = authenticated
transport = copy_to_sent
unseen

transports
copy_to_sent:
driver = pipe
return_path_add
delivery_date_add
envelope_to_add
user = mailnull
group = mail
command = /usr/libexec/dovecot/deliver -d "${lookup ldap{user=XXX pass=XXX ldap:///dc=test,dc=local?sAMAccountName?sub?(mail=${quote_ldap:${sender_address_local_part}@${sender_address_domain}})}{$value}}" -m Sent
message_prefix = ""
message_suffix = ""
log_output

Но охото чтобы при отправке через exim, он смотрел для авторизованных пользователей состояние квоты, и если она исчерпана, то не принимал почту, а выдавал ошибку о том что квота превышена.

Тут есть еще один вопрос.
Может кто сталкивался. в Dovecot плагином autocreate можно создавать папки. Т.к. разные клиенты по своему интерпретируют разные папки приходится создавать папки Sent и Отправленные, можно ли сделать что бы папка Отправленные была символической ссылкой на Sent. (Ящики создаются автоматически, если есть учетная запись в АД)

Заранее всем спасибо!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Exim+ dovecot+quota + отлупы"  +/
Сообщение от DeadLoco (ok) on 30-Сен-11, 20:27 
> Но охото чтобы при отправке через exim, он смотрел для авторизованных пользователей
> состояние квоты, и если она исчерпана, то не принимал почту, а
> выдавал ошибку о том что квота превышена.

Не нужно так сложно.

Экзим отдает письмо деливеру:

dovecot_lda:
        driver          = pipe
        command         = /usr/local/libexec/dovecot/deliver -d $local_part@$domain -f $sender_address
        user            = mailnull
Особое внимание обратить на ключ "-f" - на этот адрес уйдет баунс <> в случае превышения квоты.
В довекоте же следует прописать
plugin {
  quota                 = maildir
  quota_warning2        = storage=75%% /usr/local/etc/dovecot/overquote.sh 75
  quota_exceeded_message = ERROR:422 No space to store your message
. . . .
Скрипт overquote.sh:
#!/bin/sh

cat << EEEOOOTTT | /usr/local/libexec/dovecot/deliver -d $USER -c /usr/local/etc/dovecot/dovecotNW.conf
From: $USER
To: $USER
Subject: Ай-я-яй! Мы все умрем!
Content-Type: text/plain; charset="windows-1251"

Почисти ящик, цуко! $1% уже засрано!

EEEOOOTTT
exit 0

Конфиг-файл /usr/local/etc/dovecot/dovecotNW.conf от обычного отличается лишь тем, что в нем отключены квота-варнинги, чтобы не произошло цепной реакции отправки уведомлений.

Все вышеописаное работает так: если квота заполнится на 75%, то получателю отправится _И_ письмо, _И_ уведомление. Если ящик заполнится так, что письмо не пролазит, будет доставлено _ТОЛЬКО_ уведомление, независимо от квоты, а отправителю уйдет баунс "Не влезает!"

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Exim+ dovecot+quota + отлупы"  +/
Сообщение от McLeod095 (ok) on 03-Окт-11, 11:47 
>[оверквотинг удален]
> Почисти ящик, цуко! $1% уже засрано!
> EEEOOOTTT
> exit 0
> Конфиг-файл /usr/local/etc/dovecot/dovecotNW.conf от обычного отличается лишь
> тем, что в нем отключены квота-варнинги, чтобы не произошло цепной реакции
> отправки уведомлений.
> Все вышеописаное работает так: если квота заполнится на 75%, то получателю отправится
> _И_ письмо, _И_ уведомление. Если ящик заполнится так, что письмо не
> пролазит, будет доставлено _ТОЛЬКО_ уведомление, независимо от квоты, а отправителю уйдет
> баунс "Не влезает!"

Спасибо!
НО.
Все это уже реализовано.
Да и то что Вы привели, не отвечает как раз тем требованиям, которые я выдвигал в своем вопросе. Вы как раз описали момент доставки сообщения пользователю который имеет почтовый ящик на данном сервере и получает доступ посредством imap (dovecot).

Транспорт описанный Вами у меня имеется, но немного в другом варианте, т.к. используется АД для авторизации и хранения квоты, с адресами.

Скрипт для отправки уведомления о превышении квоты у Вас довольно сложный, и может свести с толку, т.к. используется дополнительный конфигурационный файл. Данный скрипт у меня выглядит примерно так.

cat quota-warning.sh


#!/bin/bash

PERCENT=$1
USER=$2

SUBJECT="Квота на Ваш почтовый ящик исчерпана на $PERCENT%"
SUBJECT="=?UTF-8?B?$(echo "$SUBJECT" | base64 -w0)?="

cat << EOF | /usr/libexec/dovecot/deliver -d $USER -o "plugin/quota=maildir:User quota:noenforcing"
MIME-Version: 1.0
From: Administrator <postmaster@test.local>
Subject: ${SUBJECT}
Content-Type: text/plain; charset=UTF-8;format=flowed
Content-Transfer-Encoding: 8bit

Квота на Ваш почтовый ящик исчерпана на $PERCENT%.
Просьба удалить старые письма.
EOF


Чего в принципе достаточно.

Как писал выше, все это работает, и квоты нормально применяются, НО, если пользователь исчерпал квоту на 100%, то к нему письма не смогут приходить, и это правильно, НО сам этот пользователь сможет отсылать письма через exim, т.к. exim ничего про данную квоту не знает. Мне же необходимо настроить exim таким образом что бы при получении письма от авторизованного пользователя, он проверял квоту на почтовый ящик, и  при исчерпании квоты, просто не принимал от него письмо.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Exim+ dovecot+quota + отлупы"  +/
Сообщение от DeadLoco (ok) on 03-Окт-11, 12:27 
> cat << EOF | /usr/libexec/dovecot/deliver -d $USER -o "plugin/quota=maildir:User
> quota:noenforcing"

У вас довекот 2.х, а в 1.х такой фишки нету, приходится держать два конфига.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Exim+ dovecot+quota + отлупы"  +/
Сообщение от McLeod095 (ok) on 03-Окт-11, 12:31 
>> cat << EOF | /usr/libexec/dovecot/deliver -d $USER -o "plugin/quota=maildir:User
>> quota:noenforcing"
> У вас довекот 2.х, а в 1.х такой фишки нету, приходится держать
> два конфига.

Да.
Сорри что не озвучил версию выше.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру