квоты 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%.

квоты dovecot в связке c microsoft windows active directory

Теперь объем ящика превышает лимит:

* объем превышен, почти, втрое.

Некоторые почтовые клиенты покажут превышение лимита, например, Thunderbird:

квоты dovecot в связке c microsoft windows active directory

Оповещения при превышении квоты

Открываем конфигурационный файл 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

А что Вам говорит гугль на запросы
dovecot quota
и
postfix quota
? Наверное, что-то более интересное, чем мне? Поделитесь!

1. «Postfix+Dovecot квоты на размер почтового ящика» + / –квоты dovecot в связке c microsoft windows active directory
Сообщение от Andrey Mitrofanov on 30-Окт-12, 12:10
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. «Postfix+Dovecot квоты на размер почтового ящика» + / –квоты dovecot в связке c microsoft windows active directory
Сообщение от DeadLoco (ok) on 31-Окт-12, 03:06

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

квоты dovecot в связке c microsoft windows active directory
3. «Postfix+Dovecot квоты на размер почтового ящика» + / –квоты dovecot в связке c microsoft windows active directory
Сообщение от PavelR (ok) on 31-Окт-12, 07:09

> Получив реквизиты ящика, деливер сперва стартует указанные ему плагины. У меня это
> quota и sieve:

А как sieve используется? В плане, что он делает, и как рулятся его настройки?

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

квоты dovecot в связке c microsoft windows active directory
4. «Postfix+Dovecot квоты на размер почтового ящика» + / –квоты dovecot в связке c microsoft windows active directory
Сообщение от DeadLoco (ok) on 31-Окт-12, 12:57

> А как sieve используется? В плане, что он делает, и как рулятся его настройки?

Пользователи своими ситами рулят через managesieve, который со второй версии довекота встроен прямо в довекот, сервисом. Клиентом к менеджсиву может работать почти любой имап-клиент. У меня это раундкуб, у которого есть штатный плагин.

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

квоты dovecot в связке c microsoft windows active directory
5. «Postfix+Dovecot квоты на размер почтового ящика» + / –квоты dovecot в связке c microsoft windows active directory
Сообщение от bearwoolfs квоты dovecot в связке c microsoft windows active directory(ok) on 01-Ноя-12, 14:30

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

квоты dovecot в связке c microsoft windows active directory
6. «Postfix+Dovecot квоты на размер почтового ящика» + / –квоты dovecot в связке c microsoft windows active directory
Сообщение от bearwoolfs квоты dovecot в связке c microsoft windows active directory(ok) on 01-Ноя-12, 14:59

спасибо за ответ, надо будет поиграться с этим всем делом.

Источник

forum.lissyara.su

Модератор: xM

Настраиваю почтовый сервер впервые. На данный момент все работает отлично в связке Postfix+Postfixadmin+Dovecot.

Разобрался в общем с работой квот при помощи Dovecot, а так же прикрутил оповещение пользователей и админа.

Теперь пытаюсь разрешить проблему настройки индивидуальных разрешений для каждого пользователя (а в идеале еще и с отдельными настройками для каждой из его папок).
Хотелось бы не использовать базу mysql, т.к. опыта в этом у меня нет, а получать его планировал лишь в дальнейшем. Или же, если такое есть, был бы рад получить надстройку над Postfixadmin.

Сейчас это выглядит так:
90-quota.conf

Верно ли я её сделал, т.к. при 600 скрипт не запускался принадлежа пользователю vmail.

квоты dovecot в связке c microsoft windows active directory

Услуги хостинговой компании Host-Food.ru

квоты dovecot в связке c microsoft windows active directory

квоты dovecot в связке c microsoft windows active directory

С частью разобрался, оказывается проглазел создание квот в самом PostfixAdmin, но есть проблемы с dovecot-sql.conf.ext

Файл подключения к базе данных /usr/local/etc/dovecot/dovecot-sql.conf.ext
.
password_query = SELECT `username` as `user`, `password` FROM \
`mailbox` WHERE `username` = ‘%n@%d’ AND `active`=’1′
# Запрос, возвращающий инфу о юзере и проверяющий квоту
user_query = SELECT CONCAT(‘/var/mail/exim/’, `domain`, ‘/’, `maildir`) \
AS `home`, 26 AS `uid`, 26 AS `gid`, concat(‘dict:storage=’, \
CAST(ROUND(quota / 1024) AS CHAR), ‘::proxy::sqlquota’) \
AS quota, CONCAT(‘*:storage=’, CAST(quota AS CHAR), ‘B’) AS quota_rule \
FROM `mailbox` WHERE `username` = ‘%n@%d’ AND `active`=’1′

Файл словаря SQL квот /usr/local/etc/dovecot/dovecot-dict-sql.conf.ext

# Строка подключения к БД
connect = host=localhost dbname=exim user=exim password=eximsecretpass
# Описание полей и указание таблицы quota2,
# именно эта таблица используется для Dovecot 2-й версии
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
>

А ниже вижу состояние, что использовано лишь хх% из двух гигабайт.

Как правильно сконфигурировать user_query?

И осталось неясным насчет таблиц quota и quota2, где же и какую использовать.

квоты dovecot в связке c microsoft windows active directory

Для 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 — контейнер для хранения почтовых аккаунтов;
ou=groups,dc=domain,dc=com — контейнер для хранения posix групп;
ou=services,dc=domain,dc=com — контейнер для хранения аккаунтов системных сервисов (posix аккаунты);
ou=aliases,dc=domain,dc=com — контейнер для хранения почтовых альясов.

При создании почтового аккаунта используются множество атрибутов модифицированной мною phamm схемы, применение которых выходит за рамки это статьи (например, createMaildir или Backup). Отмечу только те, которые используются в фильтрах поиска.
accountActive = TRUE|FALSE — позволяет временно включать/отключать аккаунт или альяс;
vacationInfo — содержит текст Out of Office сообщения;
vacationActive — позволяет включать/отключать OoO сообщение;
quota — тут и так понятно (например: quota = 4G)

Итак, OpenLDAP настроен и запущен, репликация работает и при помощи phpldapadmin создан первый тестовый аккаунт ipupkin c адресом почты ipupkin@domain.com. В дальнейшем будет использоваться только один домен domain.com, поэтому создаем в нашем контейнере ou=groups posix группу domain и добавляем ipupkin в эту группу.

В данном примере все сервисы работают на одном линукс сервере и логично использовать лдап базу для идентификации пользователя в системе, поэтому перекладываем это процедуру на плечи Name Service Switch (nss) или System Security Services Daemon (sssd). Также плюсом данного решения является легкая адаптация с Samba доменом, при необходимости.
Предварительно нужно убедиться что в системе установлен пакет nss_ldap (или libnss-ldapd).
В /etc/nsswitch.conf меняем строки с compat на ldap (или winbind в случае Samba домена):
passwd: files ldap
shadow: files ldap
group: files ldap

Создаем файл /etc/ldap.conf следующего содержания:

uri ldap://127.0.0.1
uri ldap://192.168.0.1 # Второй fallback лдап-сервер

base dc=domain,dc=com
binddn uid=proxyagent,ou=services,dc=domain,dc=com # Предварительно созданный в ou=services posix аккаунт, указанный в slapd.conf
bindpw *****

pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_check_host_attr no
pam_lookup_policy no
pam_member_attribute memberUid
pam_min_uid 1000
pam_max_uid 65535
ssl start_tls #используем TLS вместо SSL
# Указываем пути к сертификатам
tls_cacert /etc/openldap/ssl/ca.pem
tls_key /etc/openldap/ssl/mail_crt_new.pem
tls_cert /etc/openldap/ssl/mail_key_new.pem
tls_reqcert allow
tls_checkpeer no
tls_ciphers TLSv1
scope sub
timelimit 5
bind_timelimit 5
bind_policy soft
nss_reconnect_tries 4
nss_reconnect_sleeptime 1
nss_reconnect_maxsleeptime 16
nss_reconnect_maxconntries 2

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

Настройка Dovecot

При настройке Dovecot я удалил все вложенные монструозные дефолтные конфиги и для удобства создал только два — dovecot.conf и dovecot-ldap.conf.

unix_listener quota-warning <
mode = 0666
>
>

protocol imap <
imap_client_workarounds = delay-newmail # Хак для Аутлука
mail_plugins = quota imap_quota mail_log notify
>

protocol pop <
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh # Различные хаки для Аутлука
#pop3_uidl_format = %08Xu%08Xv # Используется при хранении Аутлуком почты на сервере, этот формат имеет проблемы с Аутлуком 2013
pop3_uidl_format = %g
pop3_fast_size_lookups=yes # Подробнее здесь раздел Maildir perfomance.
mail_plugins =
>

# Logical Delivery Agent (LDA) сервис, используемый Exim для доставки почты.
protocol lda <
hostname = domain.com
mail_fsync = optimized
mail_plugins = sieve quota
postmaster_address = postmaster@domain.com
log_path =
info_log_path =
>

# Различные опциональные добавки
plugin <
quota = maildir:User quota
quota_rule = *:storage=1M
quota_rule2 = Trash:ignore
quota_rule3 = Deleted Items:ignore
quota_rule4 = Junk E-mail:ignore
quota_rule5 = Archive:ignore
quota_rule6 = archive:ignore
quota_warning = storage=90%% quota-warning 90 %u # Указываем процент заполнения почтового ящика, при котором срабатывает скрипт quota-warning.sh
sieve =

/Maildir/sieve
expire_dict = proxy::expire
expire = Trash
expire2 = Deleted Items
expire3 = Junk E-mail
expire_cache = yes
>

Финал: Настройка Exim

Основной целью при настройке Exim был максимальный отказ от любых скриптов и реализация всего функционала только средствами Exim. Только как исключение используются дебиановский greylistd на питоне и перловый amavisd-new.
При настройке Exim также будут использоваться два файла — основной exim.conf и acl_smtp для ACL правил.
Также опционально в конфиге присутствует роутер и транспорт для mailman.

CONFIG_PREFIX=/etc/exim
ACL_PREFIX=CONFIG_PREFIX/acls #здесь хранятся все ACL конфиги
DB_PREFIX=/var/spool/exim/db #для увеличения быстродействия желательно использовать tmpfs

# Шаблоны являются сильной стороной Exim и позволяют легко заменить длинную строку коротким словом.
# Определяем шаблоны для mailman
MM_HOME=/var/lib/mailman
MM_UID=mailman
MM_GID=mailman
MM_WRAP=/usr/lib/mailman/mail/mailman
MM_LISTCHK=MM_HOME/lists/$/config.pck

ldap_default_servers = /var/run/openldap/slapd.sock: 192.168.0.1 # Указываем как соединяться к лдап-серверам, второй сервер будет использоваться как fallback.

INTERFACE = your_external_ip # Указываем внешний айпи, на котором будет висеть exim
BASEDN = dc=domain,dc=com # basedn лдап сервера

# В этой секции указаны самые важные темплейты, задающие логику работы Exim

domainlist_cache virt_domains = domain.com # Так как у нас только один домен, то указываем его. Если используется множество доменов, то нужно создать темплейт выборки доменов из лдап базы.
domainlist_cache local_domains = localhost: mail.domain.com
hostlist relay_from_hosts = 127.0.0.1: 192.168.0.0/16
addresslist noautoreply_senders = DB_PREFIX/autoreply.noanswer.db

sender_unqualified_hosts = 127.0.0.1: 192.168.0.0/16
recipient_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
tls_on_connect_ports = 465

acl_smtp_connect = acl_check_connect
acl_smtp_helo = acl_check_helo
acl_smtp_mail = acl_check_mail
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_dkim = acl_check_dkim

# Указываем пути к сертификатам
tls_certificate = /etc/exim/ssl/mail_crt_new.pem
tls_privatekey = /etc/exim/ssl/mail_key_new.pem
tls_verify_certificates = /etc/exim/ssl/ca.pem

# Подключаем антивирус и антиспам напрямую, так как LDAP здесь не используется, то все стандартно, поэтому опускаем настройку.
# av_scanner = clamd:/tmp/clamd
# spamd_address = 127.0.0.1 783

# Подключаем наш ACL конфиг (см ниже)
.include ACL_PREFIX/acl_smtp

# Создаем роутеры
begin routers

# Роутеры для входящей почты

# Приостановленные аккаунты, вся приходящая почта для suspended аккаунта отправляется в «черную дыру»
suspended:
driver = redirect
domains = +virt_domains
condition = CHECK_3
forbid_file
forbid_pipe
forbid_filter_reply = true
data = :blackhole:
no_more

localuser:
driver = accept
domains = +local_domains: +virt_domains
check_local_user
transport = dovecot_lda # Перекладываем доставку письма в почтовый ящик на плечи dovecot lda
cannot_route_message = Unknown account # Dovecot ответил нет, сдаемся
no_more

remote_smtp:
driver = smtp
helo_data = mail.domain.com
max_rcpt = 500
#подключаем DKIM
dkim_domain = domain.com
dkim_selector = dkim
dkim_private_key = DB_PREFIX/dkim.private.key
dkim_canon = relaxed

address_pipe:
driver = pipe
return_output

address_file:
driver = appendfile
current_directory = SPOOL
home_directory = SPOOL
create_directory
directory_mode = 0700
maildir_format
user = vmail
group = vmail
mode = 0600
no_check_owner
no_mode_fail_narrower

address_reply:
driver = autoreply

maillist_pipe:
driver = pipe
group = mail
return_fail_output
user = vmail

mailman_transport:
driver = pipe
command = MM_WRAP \
‘$ <$<-(\\w+)(\\+.*)?><\$1>>> \ >’ \
$local_part
current_directory = MM_HOME
home_directory = MM_HOME
user = MM_UID
group = MM_GID

#amavis:
# driver = smtp
# port = 10024
# allow_localhost

begin retry
* quota
* rcpt_4xx senders=: F,1h,10m
* * F,2h,10m; G,16h,1h,1.5; F,4d,6h

# Все системные сообщения рутов отправляем на один ящик
begin rewrite
root@* collector@domain.com Ttbcr

Орудие главного калибра Exim — это Access Control Lists.
Собственно, вся статья затевалась ради одной стройки в секции smtp_rcpt.

acl_check_dkim:
warn log_message = DKIM: Sender without DKIM signature
sender_domains = gmail.com: autodesk.com: paypal.com
dkim_signers = gmail.com: autodesk.com: paypal.com
dkim_status = none:invalid:fail
accept

acl_check_helo:
accept hosts =: +relay_from_hosts

accept hosts =: +relay_from_hosts
discard senders = dbm;DB_PREFIX/banned_senders.db: dbm;DB_PREFIX/scammers.db

deny message = Restricted characters in address
local_parts = ^[.]: ^.*[@%!/|]

accept hosts = 127.0.0.1

# Кого отправлять spamassassinу, опционально. В данном примере помещением тэга SPAM в заголовок письма занимается сам Exim.

Глобальный exim.filter тогда будет выглядеть так:

if first_delivery then
headers remove X-Spam-Score:X-Spam-Report:X-Spam-Checker-Version:X-Spam-Status:X-Spam-Level

Вот, собственно, и все.

Запускаем Exim, отсылаем письмо ipupkin-у, смотрим логи…

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *