Я не сделал бы этого в апаче.. Я сделал бы это на сетевом уровне с iptables.
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 86400 --hitcount 100 -j REJECT
Изменитесь 86400 на число секунд, для которых Вы хотите сохранить блок (86400, 1 день), и 100, количество хита, сколько Вы готовы позволить на IP.
Можно также измениться -j REJECT
кому: -j DROP
, который определяет пакетное поведение, когда условие соблюдают. DROP
беспрепятственно пакеты отбрасываний, и REJECT
возвращает "порт недостижимая" или подобная ошибка.
Тем не менее был a mod_throttle
это сделало бы что-то подобное, но я, может казаться, не нахожу много информации об этом. Я думаю, что это чувствует себя более опрятным, чтобы сделать такого рода вещь в сети/уровне ядра, а не в Apache. Apache способен служить запросам. Позвольте ему сделать то, что это прилагает все усилия, и не обременяйте его необходимостью отследить соединения также.
На самом деле это скорее вопрос sasl, чем вопрос Postfix. У вас есть postfix, настроенный для взаимодействия с sasl - пока все хорошо. Теперь вам нужно указать saslauthd, где найти ваши имена пользователей и пароль. Если вы не дадите ему никаких аргументов, он по умолчанию будет рассматривать их как локальных пользователей, что вы видите в своем журнале auth.log.
Насколько мне известно (что может быть не очень далеко, когда он приходит в SASL), он не использует ту же базу данных, что и ваш виртуальный пользователь для pop3. Но есть возможность для saslauthd попытаться войти на сервер IMAP с теми же учетными данными - я думаю, это должно делать то, что вы хотите.
Для этого вы запускаете saslauthd следующим образом:
saslauthd -a rimap -O myimap.server.com
У вас должна быть возможность протестировать аутентификацию с помощью программы testsaslauthd, которая должна поставляться с вашей установкой sasl. Удачи!