квоты dovecot в связке c microsoft windows active directory
Квота в dovecot из active directory
Всем привет. Снова мучаю почтовый сервер: пытаюсь настроить задание квот из Active Directory.
Конфиг получается следующий
Собственно, этим я добился, что квоту из AD он вроде как читает, но работает она не полностью. В случае превышения квоты отправленные письма не сохраняются на сервере. Входящие письма все так же приходят.Подскажите, чего еще не хватает? Спасибо.
Посмотри, какая квота выставилась по факту:
Я так понимаю, это в мегабайтах. Выставил квоту в AD в байтах 10000000. Письма тем не менее приходят и уведомлений нет.
Прописал mail_plugins=quota в 10-mail.conf и таки заработало. Письма перестали доходить и появился отлуп сервера у отправителя. Но сообщение об исчерпании квоты пока не приходит. Буду ковырять дальше.
Собственно, первоначальная проблема решена, квоты выгружаются и предупреждения юзеру сыплются.
Теперь есть другие проблемы:
1) у многих юзеров ящик разросся сильно. Если установить квоту меньше, чем размер ящика, то юзер об этом никак не узнает. Можно ли приделать к давкоту уведомления в реальном времени об установлении или изменении квоты?
2) Если входящее письмо больше по размеру, чем оставшееся место в ящике, то оно опять же не доходит и пользователь об этом не узнает. Можно ли сделать так, чтобы юзеру приходило сообщение, что письмо ему не было доставлено из-за превышения квоты?
Реально не знаю, что гуглить чтобы найти реализацию таких моментов. С чего стоит начать?
Настройка квот в Dovecot + PostfixAdmin
При установке почтового сервера на базе Postfix + Dovecot и использовании панели управления почтовыми ящиками PostfixAdmin, по умолчанию, квотирование не настроено — его можно задавать в последней, но работать квоты не будут. Нужна дополнительная настройка.
Настройка Dovecot
Открываем конфигурационный файл10-mail.conf:
Находим строку с mail_plugins и приводим ее к виду:
* данная строка подключает к плагинам дополнительно плагин для управления квотами (quota). Если опция закомментирована, снимаем комментарий.
Открываем конфигурационный файл 20-imap.conf:
Находим опцию protocol imap и добавим в нее также возможность использования плагина с квотами:
* опция mail_plugins может быть закомментирована. Если это так, то коментарий снимаем.
Открываем конфигурационный файл 10-master.conf:
Находим опцию service dict, в ней unix_listener dict и приводим ее к виду:
service dict <
unix_listener dict <
mode = 0660
user = vmail
group = vmail
>
>
Открываем файл 90-quota.conf:
plugin <
quota = dict:User quota::proxy::quota
>
* или снимаем комментарий с соответствующей строки quota = dict:User quota::proxy::quota.
Открываем основной конфигурационный файл для dovecot:
Находим раздел dict и снимаем комментарий или добавляем:
dict <
quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
>
Теперь создаем файл для настройки выгрузки квот:
connect = host=localhost dbname=postfix user=postfix password=postfix123
map <
pattern = priv/quota/storage
table = quota2
username_field = username
value_field = bytes
>
map <
pattern = priv/quota/messages
table = quota2
username_field = username
value_field = messages
>
* где host — сервер mysql, к которому будем подключаться; dbname — имя базы данных, в которой находятся пользователи postfix; user — пользователь, под которым мы подключаемся к базе; password — пароль для подключения к базе. В данном примере мы подключимся к СУБД, которая находится на том же сервере (localhost) к базе postfix под пользователем postfix с паролем postfix123.
Откроем наш файл, в котором мы описываем настройки выборки данных по пользователям из базы данных:
Находим запрос user_query и дописываем в SELECT CONCAT(‘*:bytes=’, quota) AS quota_rule — у меня в итоге получилось:
* если в нашем файле запросов есть несколько строк user_query, то необходимо дописать запрос для последней.
Проверяем конфигурационный файл dovecot:
. и если команда не вернет ошибку, перезапускаем его:
systemctl restart dovecot
Проверка работы квот
Для начала в командной строке вводим:
* user@domain.net — почтовый пользователь, для которого нужно показать квоту.
Данная команда отобразит квоту для пользователя, например:
* в данном примере почтовый ящик занимает около 16 Мб, а квота около 50 Мб — ящик заполнен на 32%.
Теперь объем ящика превышает лимит:
* объем превышен, почти, втрое.
Некоторые почтовые клиенты покажут превышение лимита, например, Thunderbird:
Оповещения при превышении квоты
Открываем конфигурационный файл 90-quota.conf:
Снимаем комментарий или добавляем данные строки:
plugin <
quota_warning = storage=95%% quota-warning 95 %u
quota_warning2 = storage=80%% quota-warning 80 %u
>
* в данном примере мы указываем на необходимость делать 2 предупреждения — первое при достижении объема ящика в 80%, второе — 95%. Сервис dovecot, который будет это обеспечивать, называется quota-warning.
Теперь находим раздел service quota-warning и приводим его к виду:
service quota-warning <
executable = script /usr/local/bin/quota-warning.sh
user = dovecot
unix_listener quota-warning <
user = vmail
>
>
* мы создали сервис quota-warning, который будет запускать скрит /usr/local/bin/quota-warning.sh.
Создаем сам скрипт quota-warning.sh:
Как настроить ограничение размера виртуальных почтовых ящиков в PostfixAdmin и Dovecot
Квоты dovecot в связке c microsoft windows active directory
1. «Postfix+Dovecot квоты на размер почтового ящика» | + / – | |
Сообщение от Andrey Mitrofanov on 30-Окт-12, 12:10 | ||
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору |
2. «Postfix+Dovecot квоты на размер почтового ящика» | + / – | |
Сообщение от DeadLoco (ok) on 31-Окт-12, 03:06 | ||
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору |
3. «Postfix+Dovecot квоты на размер почтового ящика» | + / – | |
Сообщение от PavelR (ok) on 31-Окт-12, 07:09 | ||
А как sieve используется? В плане, что он делает, и как рулятся его настройки? | ||
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору |
4. «Postfix+Dovecot квоты на размер почтового ящика» | + / – | |
Сообщение от DeadLoco (ok) on 31-Окт-12, 12:57 | ||
Пользователи своими ситами рулят через managesieve, который со второй версии довекота встроен прямо в довекот, сервисом. Клиентом к менеджсиву может работать почти любой имап-клиент. У меня это раундкуб, у которого есть штатный плагин. | ||
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору |
5. «Postfix+Dovecot квоты на размер почтового ящика» | + / – | |
Сообщение от bearwoolfs | ||
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору |
6. «Postfix+Dovecot квоты на размер почтового ящика» | + / – | |
Сообщение от bearwoolfs | ||
спасибо за ответ, надо будет поиграться с этим всем делом. forum.lissyara.suМодератор: xM Настраиваю почтовый сервер впервые. На данный момент все работает отлично в связке Postfix+Postfixadmin+Dovecot. Разобрался в общем с работой квот при помощи Dovecot, а так же прикрутил оповещение пользователей и админа. Теперь пытаюсь разрешить проблему настройки индивидуальных разрешений для каждого пользователя (а в идеале еще и с отдельными настройками для каждой из его папок). Сейчас это выглядит так: Верно ли я её сделал, т.к. при 600 скрипт не запускался принадлежа пользователю vmail. Услуги хостинговой компании Host-Food.ruС частью разобрался, оказывается проглазел создание квот в самом PostfixAdmin, но есть проблемы с dovecot-sql.conf.ext Файл подключения к базе данных /usr/local/etc/dovecot/dovecot-sql.conf.ext Файл словаря SQL квот /usr/local/etc/dovecot/dovecot-dict-sql.conf.ext # Строка подключения к БД А ниже вижу состояние, что использовано лишь хх% из двух гигабайт. Как правильно сконфигурировать user_query? И осталось неясным насчет таблиц quota и quota2, где же и какую использовать. Для Dovecot версии выше 1.2 используется таблица ‘quota2’. Во-вторых, настраиваем Dovecot 2. Расширенная настройка Exim и Dovecot с привязкой к OpenLDAPВ этой статье рассматривается расширенная настройка Exim, Dovecot и OpenLDAP для совместной работы на основе моего опыта с этими приложениями. Быть может, кто-то найдет для себя что-либо интересное и новое — в этом и была цель написания очередного howto на данную тему. Почему Exim и OpenLDAP, а не Postfix и MySQL, например? Postfix отлично работает «из коробки», но если нужно что-то неординарное, то очень скоро Postfix превращается в неповоротливого монстра, обвешанного перл-скриптами, Exim же обладает чудовищным по силе мета-языком конфигурации и позволяет обойтись без сторонних скриптов и костылей. MySQL я посчитал избыточным для моих задач и заменил стандартным OpenLDAP, тем более для работы адресной книги используется LDAP. Dovecot очень шустрый и легкий в настройке плюс отлично интегрируется как с Exim, так и с OpenLDAP. Итак, устанавливаем необходимый софт, тут все стандартно (apt-get, yum и тд). Я использовал Gentoo, поэтому emerge openldap dovecot exim (exim и dovecot должны иметь поддержку ldap). Используемые USE флаги при сборке: Первым в очереди будет OpenLDAP, в его базе будут храниться все почтовые аккаунты, группы и альясы, также OpenLDAP будет использоваться в качестве адресной книги для почтовых клиентов. Для простоты и удобства я не использую slapd-config, а храню все настройки в текстовом slapd.conf. Так как стандартный OpenLDAP не имеет в наличии подходящей схемы для работы с почтой, то я использовал свою модифицированную версию phamm.schema и дефолтную phamm-vacation.schema. Настройка OpenLDAPОпускаю первичную настройку, создание basedn dc=domain,dc=com и ssl сертификатов для OpenLDAP, поскольку тут все стандартно. Второй сервер будет работать как адресная книга в режиме только для чтения. Для администрирования LDAP базы я использую phpldapadmin, так как он легкий, удобный и имеет поддержку XML шаблонов, что позволяет гибко настраивать необходимые шаблоны для создания аккаунтов. К сожалению, проект давно заброшен автором и больше не развивается. Например, пример шаблона для создания почтового аккаунта. При создании я использую следующую схему LDAP базы: ou=people,dc=domain,dc=com — контейнер для хранения почтовых аккаунтов; При создании почтового аккаунта используются множество атрибутов модифицированной мною phamm схемы, применение которых выходит за рамки это статьи (например, createMaildir или Backup). Отмечу только те, которые используются в фильтрах поиска. Итак, OpenLDAP настроен и запущен, репликация работает и при помощи phpldapadmin создан первый тестовый аккаунт ipupkin c адресом почты ipupkin@domain.com. В дальнейшем будет использоваться только один домен domain.com, поэтому создаем в нашем контейнере ou=groups posix группу domain и добавляем ipupkin в эту группу. В данном примере все сервисы работают на одном линукс сервере и логично использовать лдап базу для идентификации пользователя в системе, поэтому перекладываем это процедуру на плечи Name Service Switch (nss) или System Security Services Daemon (sssd). Также плюсом данного решения является легкая адаптация с Samba доменом, при необходимости. Создаем файл /etc/ldap.conf следующего содержания: uri ldap://127.0.0.1 base dc=domain,dc=com pam_filter objectclass=posixAccount Теперь, когда пользователь ipupkin распознается системой, нужно чтобы ipupkin смог получать и отсылать почту. Настройка DovecotПри настройке Dovecot я удалил все вложенные монструозные дефолтные конфиги и для удобства создал только два — dovecot.conf и dovecot-ldap.conf. unix_listener quota-warning < protocol imap < protocol pop < # Logical Delivery Agent (LDA) сервис, используемый Exim для доставки почты. # Различные опциональные добавки /Maildir/sieve Финал: Настройка EximОсновной целью при настройке Exim был максимальный отказ от любых скриптов и реализация всего функционала только средствами Exim. Только как исключение используются дебиановский greylistd на питоне и перловый amavisd-new. CONFIG_PREFIX=/etc/exim # Шаблоны являются сильной стороной Exim и позволяют легко заменить длинную строку коротким словом. ldap_default_servers = /var/run/openldap/slapd.sock: 192.168.0.1 # Указываем как соединяться к лдап-серверам, второй сервер будет использоваться как fallback. INTERFACE = your_external_ip # Указываем внешний айпи, на котором будет висеть exim # В этой секции указаны самые важные темплейты, задающие логику работы Exim domainlist_cache virt_domains = domain.com # Так как у нас только один домен, то указываем его. Если используется множество доменов, то нужно создать темплейт выборки доменов из лдап базы. sender_unqualified_hosts = 127.0.0.1: 192.168.0.0/16 local_interfaces = 0.0.0.0.25: 0.0.0.0.26: 0.0.0.0.465: 0.0.0.0.587: 127.0.0.1.10025 acl_smtp_connect = acl_check_connect # Указываем пути к сертификатам # Подключаем антивирус и антиспам напрямую, так как LDAP здесь не используется, то все стандартно, поэтому опускаем настройку. # Подключаем наш ACL конфиг (см ниже) # Создаем роутеры # Роутеры для входящей почты # Приостановленные аккаунты, вся приходящая почта для suspended аккаунта отправляется в «черную дыру» localuser: remote_smtp: address_pipe: address_file: address_reply: maillist_pipe: mailman_transport: #amavis: begin retry # Все системные сообщения рутов отправляем на один ящик Орудие главного калибра Exim — это Access Control Lists. acl_check_dkim: acl_check_helo: accept hosts =: +relay_from_hosts deny message = Restricted characters in address accept hosts = 127.0.0.1 # Кого отправлять spamassassinу, опционально. В данном примере помещением тэга SPAM в заголовок письма занимается сам Exim. Глобальный exim.filter тогда будет выглядеть так: if first_delivery then Вот, собственно, и все. Запускаем Exim, отсылаем письмо ipupkin-у, смотрим логи…
|