Я выполняю Постфикс на поле Linux с парой сотни локальных пользователей с почтовыми ящиками.
Существует ли способ контролировать все входящие соединения (SMTP) к Постфиксному сервису? Т.е. прямая трансляция "IP-адреса x.x.x.x просто подключенный к Постфиксному серверу" и "IP-адресу y.y.y.y просто разъединенный"?
Я хочу контролировать все входящие соединения, таким образом, я могу искать тенденции того же IP-адреса, пытающегося отправить, несколько посылают спам моим пользователям или возможно пытающийся передать (это не открытое реле btw!).
Просто дамп всех соединений и разъединений, с перечисленным IP-адресом, к текстовому файлу или системному журналу был бы прекрасен. Или возможно существует другой, лучший путь?
Спасибо!
постфикс регистрирует каждое соединение по мере его поступления, и строки журнала выглядят как
Jul 8 16:25:15 swiss postfix/smtpd[11127]: connect from some.host.or.other [192.0.2.1]
, поэтому вы можете tail -F
свой лог-файл (в моей системе это /var/log/mail.log
), использовать grep
для фильтрации нужных вам строк и наблюдать за трафиком в реальном времени.
Вышеуказанный плакат близок.
tail
позволяет увидеть последние 10 строк в файле. Переключатель -f
позволяет видеть новые строки по мере их добавления в файл maillog.
cd /var/log
tail -f maillog
Ctrl+c для экранирования.
Видя, что это уже записано в файл с именем /var/log/maillog
, не уверен, зачем вам понадобилось создавать другой файл, если только вы не ищете извлечения специфической информации.
Если вы хотите просто прочитать почтовый журнал, воспользуйтесь любимым редактором или сделайте следующее:
less maillog
Нажатие кнопки Enter (return) переместит файл вниз на одну строку за раз, или вы можете нажать кнопку Page Down для перемещения в полноэкранном режиме.
Нажатие кнопки q убежит от вас.
.Я нашел следующее полезным:
tail -f maillog | grep connect
Но вы можете использовать grep для отключения или конкретного IP, если хотите?
Это даст вам подсчет всех IP-адресов в вашем файле mail.log, чтобы вы могли идентифицировать мешающие IP-адреса.
grep connect /var/log/mail.log |grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | sort | uniq -c | sort
Используйте ipset для создания черных списков и добавления их в таблицы IP.
Создание черных списков:
ipset create <nameof blacklist> hash:ip (or net) -hashsize 4096
ipset add <nameof blacklist> <IP or network/nn>
Сопоставление черных списков и удаление:
iptables -I INPUT -m set --match-set <nameof blacklist> src -j DROP
iptables -I FORWARD -m set --match-set <nameof blacklist> src -j DROP
Вы, вероятно, могли бы создать сценарий и автоматизировать это.