Я имею, работал на проблему поведения, которую я не вижу, как зафиксировать.
Я настроил Zimbra
(8.0.4) с policyd
, после этого учебного руководства
Step1: Создайте политику
Step2: Создайте группу (list_domain
)
Step3: Добавьте домен к группе (@example.com
)
Step4: Добавьте участника к политике (от: %list_domain
, к: any
)
Step5: Добавьте квоту (дорожка: Sender: user@domain
, Период: 60
, вердикт: defer
)
Step6: Добавьте предел квоте (Тип: messageCount
, Предел: 5
)
И, эй престо. Это работает!!!
НО
Счетчики квоты увеличены числом получателя. Таким образом, если я отправлю одно сообщение электронной почты 6 получателям, то оно будет заблокировано.
Вопрос
Что я должен изменить для создания policyd номера дорожки сообщений вместо числа получателей?
ОБНОВЛЕНИЕ
Вот некоторые относительные журналы сервера, где вся уязвимая информация была заменена мнимыми данными.
Краткий обзор 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 сервер не действует как агент ретрансляции, он использует внешний сервис в нашей LAN для передачи сообщений к внешним доменам. Так, все исходящие сообщения, которые должны быть переданы к внешним доменам, передаются к внешнему mta в одном единственном объекте очереди.
Таким образом каждое сообщение становится одним и только одним объектом очереди к внешнему mta/relay, независимо число получателей в нем.
Счетчики квот увеличиваются на номер получателя. То есть, если я отправлю одно почтовое сообщение 6 получателям, оно будет заблокировано. Что я должен изменить, чтобы политика отслеживала количество сообщений, а не количество получателей?
Конечно, это будет заблокировано. Когда вы отправляете электронное письмо 6 получателям, в основном postfix (в Zimbra) отправляет копию вашего письма 6 получателям. Итак, cbpolicyd также считает это как 6 сообщений .
В терминах постфикса количество сообщений и количество получателей были одинаковыми. Помните, что ваш почтовый клиент может иметь разные способы отправки электронной почты.
Что еще более важно, этот механизм снова защитит вас от неприятного пользователя / спамера, который хочет обойти это ограничение, поместив тысяч на получателей в одном сообщении .
Дополнительное примечание:
Я могу подтвердить что такое поведение было предназначено в cbpolicyd. Доказательства взяты из исходного кода cbpolicyd , особенно из файлов cbp / modules / Quotas.pm
, строка 192 . По сути, cbpolicyd будет увеличивать счетчик на каждом этапе RCPT TO
. Итак, сейчас вы не можете сделать это через policyd.