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