Не дают покоя спаммеры факультетской почте. После настройки Яндекс.Спамооборона 1024 спам в ящики практически перестал приходить, но пошла новая тема – вдувать за день в очередь около миллиона корявых сообщений, которые системе приходится обрабатывать и получается, фактически, отказ в обслуживании.
Пришлось подключить к postfix релею policy server Postgrey. Смысл её работы:
When a request for delivery of a mail is received by Postfix via SMTP, the triplet CLIENT_IP / SENDER / RECIPIENT is built. If it is the first time that this triplet is seen, or if the triplet was first seen, less than 5 minutes ago, then the mail gets rejected with a temporary error. Hopefully spammers or viruses will not try again later, as it is however required per RFC.
Тем самым отсекается основной поток одинаковых писем.
Настроить на Ubuntu очень просто:
apt-get install postgrey
И потом добавить нужную директиву к smtpd_recipient_restrictions, например:
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023
И перезапустить postfix:
/etc/init.d/postfix reload
После этого не помешает очистить очередь от скопившихся там баунсов. Что бы найти и удалить все письма в очереди от MAILER-DAEMON, я воспользовался скриптом, найденным тут:
#!/bin/bash mailq | tail -n +2 | grep -v '^ *(' | awk 'BEGIN { RS = "" } # $7=sender, $8=recipient1, $9=recipient2 { if ($7 == "MAILER-DAEMON" ) print $1 } ' | tr -d '*!' | postsuper -d -
больше интересует то, как очистить базу этого самого Postgrey. Эта собака зачемто хранит всю историю своих действий за всё время своего существования 🙁 Складывает её аккуратно в /var/lib/postgrey. За год 2 гига набежало. Это при том что –max-age=20 установлено. Ну зачем мне история всего и вся за все годы работы этой дряни? Нет, ладно бы была возможность её очищать. Но я таковой не нашёл 🙁 Ни в мане, ни в гугле 🙁
Остановить, переместить файлы из /var/lib/postgrey, запустить, по идее должно помочь.
Да, действительно, очень удобный способ!
Естественно, я так и сделал. Только вот плохо, что штатными средствами нельзя.