Я поддерживаю почтовый сервер, которым пользуются сотни клиентов. Время от времени клиент заражается вирусом и начинает рассылать тонны спама. Я прежде всего замечаю это, потому что она заполняет очередь сообщений десятками тысяч ожидающих сообщений, а не парой сотен.
Найти IP-адрес отправителя спама и заблокировать его очень просто, но у меня все еще есть десятки тысяч спам-писем в очереди почты, часто с разными адресами отправителя.
Когда я печатаю почтовую очередь, используя postqueue -p
она отображает почтовый идентификатор, адрес электронной почты отправителя и всех получателей. Он не отображает IP-адрес отправителя.
Я могу найти IP-адрес отправителя, запустив:
postcat -q ABCDEF1234 | egrep "\\bclient_address="
Где "ABCDEF1234" - это почтовый идентификатор.
Я написал инструмент, который перечисляет все почтовые идентификаторы, затем просматривает их, выполняя postcat -q
для каждого и отфильтровывая те, которые не соответствуют входному идентификатору.
Это работает, но это очень медленно. Фильтрация почтовой очереди с 441 электронным письмом занимает 7-8 секунд. Если я попытаюсь отфильтровать спам-очередь с десятками тысяч писем, этот инструмент окажется бесполезным.
Я надеюсь, что есть какой-то инструмент или флаг, о котором я не знаю, и давайте отфильтруем по IP-адресу отправителя.
Я использую Postfix 2.10