Я столкнулся с проблемой поведения, которую не знаю, как исправить.
Я настроил Zimbra
(8.0.4) с policyd
, следуя этот учебник
Шаг 1. Создайте политику
Шаг 2: Создайте группу (list_domain
)
Шаг 3: Добавьте домен в группу (@example.com
)
Шаг 4: Добавьте участника в политику (от: %list_domain
, чтобы: any
)
Шаг 5: Добавьте квоту (трек: Sender: user@domain
, Период: 60
, приговор: defer
)
Шаг 6. Добавьте ограничение на квоту (Тип: messageCount
, Предел: 5
)
И, привет. Это работает!!!
НО
Счетчики квот увеличиваются на количество получателей. То есть, если я отправлю одно почтовое сообщение 6 получателям, оно будет заблокировано.
Вопрос
Что я должен изменить, чтобы политика отслеживала количество сообщений, а не количество получателей?
ОБНОВИТЬ
Вот несколько относительных журналов сервера, где вся конфиденциальная информация заменена воображаемыми данными.
mailbox.log аннотация
2015-09-02 10:58:44,980 INFO [qtp126151468-4888876] [name=account@domain.com;mid=537;ip=xx.xx.xx.xx;ua=ZimbraWebClient - FF40 (Win)/8.0.7_GA_6021;] smtp - Sending message to MTA at server.domain.com: Message-ID=<1187019100.8600745.14411807248
66.JavaMail.zimbra@domain.com>, origMsgId=101f0b66-b103-4161-8767-7ab1e00ffffd:1279544, replyType=w
2015-09-02 10:58:45,206 WARN [qtp126151468-4888876] [name=account@domain.com;mid=537;ip=xx.xx.xx.xx;ua=ZimbraWebClient - FF40 (Win)/8.0.7_GA_6021;] smtp - Failed to send message
com.zimbra.cs.mailclient.smtp.InvalidRecipientException: RCPT failed: Invalid recipient acc5@otherdomain.com: 450 4.7.1 <account@domain.com>: Sender address rejected: Deferring: Too many messages from sender in last 60
at com.zimbra.cs.mailclient.smtp.SmtpConnection.rcpt(SmtpConnection.java:680)
[........]
cbpolicyd.log аннотация
[2015/09/02-10:58:45 - 28180] [CORE] INFO: module=Quotas, mode=create, host=yy.yy.yy.yy, helo=server.domain.com, from=account@domain.com, to=acc1@otherdomain.com, reason=quota_create, policy=6, quota=3, limit=4, track=Sender:account@domain.com, counter=MessageCount, quota=1.00/3 (33.3%)
[2015/09/02-10:58:45 - 28180] [CORE] INFO: module=Quotas, mode=update, host=yy.yy.yy.yy, helo=server.domain.com, from=account@domain.com, to==acc2@otherdomain.com, reason=quota_update, policy=6, quota=3, limit=4, track=Sender:account@domain.com, counter=MessageCount, quota=2.00/3 (66.7%)
[2015/09/02-10:58:45 - 28180] [CORE] INFO: module=Quotas, mode=update, host=yy.yy.yy.yy, helo=server.domain.com, from=account@domain.com, to==acc3@otherdomain.com, reason=quota_update, policy=6, quota=3, limit=4, track=Sender:account@domain.com, counter=MessageCount, quota=3.00/3 (100.0%)
[2015/09/02-10:58:45 - 28180] [CORE] INFO: module=Quotas, mode=update, host=yy.yy.yy.yy, helo=server.domain.com, from=account@domain.com, to==acc4@otherdomain.com, reason=quota_update, policy=6, quota=3, limit=4, track=Sender:account@domain.com, counter=MessageCount, quota=4.00/3 (133.3%)
[2015/09/02-10:58:45 - 28180] [CORE] INFO: module=Quotas, action=defer, host=yy.yy.yy.yy, helo=server.domain.com, from=account@domain.com, to==acc5@otherdomain.com, reason=quota_match, policy=6, quota=3, limit=4, track=Sender:account@domain.com, counter=MessageCount, quota=5.00/3 (166.7%)
Наш сервер zimbra не действует как агент ретрансляции, он использует внешнюю службу в нашей локальной сети для доставки сообщений во внешние домены. Таким образом, все исходящие сообщения, которые должны быть доставлены во внешние домены, передаются внешнему mta в одном элементе очереди.
Таким образом, каждое сообщение становится одним и только одним элементом очереди для внешнего mta / relay, независимо от количества получателей в нем.
Счетчики квот увеличиваются на количество получателей. То есть, если я отправлю одно почтовое сообщение 6 получателям, оно будет заблокировано. Что я должен изменить, чтобы политика отслеживала количество сообщений, а не количество получателей?
Конечно, он будет заблокирован. Когда вы отправляете электронное письмо 6 получателям, в основном postfix (в Zimbra) отправляет копию вашего письма 6 получателям. Итак, cbpolicyd также считайте это как 6 сообщений.
В терминах постфикса количество сообщений и количество получателей были одинаковыми. Помните, что ваш почтовый клиент может иметь разные способы отправки электронной почты.
Что еще более важно, этот механизм снова защитит вас от неприятного пользователя / спамера, который хочет обойти это ограничение, поставив тысячи на получателях в не замужем сообщение.
Дополнительное примечание:
Я могу подтвердить, что такое поведение было задумано в cbpolicyd. Доказательства пришли из исходный код cbpolicyd, особенно в файлах cbp/modules/Quotas.pm
строка 192. По сути, cbpolicyd будет увеличивать счетчик в каждом RCPT TO
этап. Итак, прямо сейчас вы не можете сделать это через policyd.