Как отправить предупреждение с помощью Dovecot пользователям при превышении квоты?

Две клавиши Enter разные. Тот, который находится над клавишей сдвига вправо, отправляет символ возврата каретки (который драйвер терминала переводит в перевод строки как новая строка ), а другой может отправлять escape-последовательность, когда включен режим приложения клавиатуры. Ваши инструкции имели в виду первое (если, например, приложение не использует проклятия).

Если вы пытаетесь использовать приложение curses (или ncurses), вам все равно не гарантируется, что вы можете использовать их как взаимозаменяемые. Некоторых разработчиков смущает разница, и они игнорируют KEY_ENTER , когда замечают, что клавиша Enter на клавиатуре отправляет только возврат каретки.

Наряду с этим были написаны некоторые описания терминалов (неудивительно), в которых kent (имя terminfo для KEY_ENTER ) приравнивается к строке возврата каретки или . кормить. Многие из них предназначены для малоизвестных терминалов, которые вы, вероятно, не используете (и они составляют меньшинство описаний терминалов). Для xterm kent назначается escape-последовательности. Это было некоторое время (до gnome-terminal):

# 9.11.3 (Thu Nov  9 12:14:40 EST 1995):
#       * Added kspd=\E[P, kcbt=\E[Z, to linux entry, changed kbs back to ^H.
#       * Added kent=\EOM to xterm entry.

1
09.05.2017, 02:12
2 ответа

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

Используйте doveadm quota get для получения дампа текущей базы данных квот; doveadm quota recalc принудительно выполняет перерасчет квоты.

1
27.01.2020, 23:33

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

У Dovecot вообще нет драйвера passdb plesk. Возможные драйверы: passwd, passwd-file, ldap, sql, dict и vpopmail . Вы должны обратиться к конфигурации plesk и выяснить, какой тип passdb используется plesk. Затем вам нужно добавить соответствующие строки в конфигурацию вашей голубятни.

В общем случае конфигурация квоты dovecot должна выглядеть следующим образом:

quota           = maildir:User quota
quota_rule      = Junk:ignore
quota_rule2     = Trash:storage=+100M
quota_warning   = storage=90%% quota-warning 90 %u %d
quota_warning2  = storage=80%% quota-warning 80 %u %d
quota_exceeded_message = ERROR:422 - Mailbox full 

Здесь квота на пользователя связана с учетными данными пользователя и хранится вместе с логином/паролем и местом хранения в одном месте. Когда dovecot deliver обращается к базе данных passdb, он также получает ограничение квоты и сравнивает его с фактическим размером почтового ящика.

Н.Б.

Также вы можете заметить, что скрипт уведомления quota-warning имеет три аргумента вместо двух — я передал имя пользователя и домен отдельно, потому что несколько доменов обслуживаются одним dovecot и в разных доменах могут быть одни и те же пользователи, например webmaster или abuse. Передав точную локальную часть и домен, dovecot может избежать двусмысленности и сохранить сообщение в правильном почтовом ящике.

1
27.01.2020, 23:33

Теги

Похожие вопросы