Внедряем email-аутентификацию DKIM в Postfix за 5 минут

Работал у нас почтовый сервер для рассылки корреспонденции клиентам. И все бы ничего, но стал люд жаловаться, что не доходят письма или  в спам попадают. И хотя spf был настроен, все говорило о том, что пора нам к нашему Postfix прикрутить DKIM. Как гласит цитата откуда-то с хабра:

Для начала установим необходимый софт командой

После установки необходимо отредактировать файл /etc/opendkim.conf, добавив в него строки

Теперь создадим рабочий каталог,а в нем новый приватный и открытый ключ. Открытый ключ мы потом пропишем на нашем DNS-сервере.

В каталоге /etc/opendkim у вас должно появиться 2 новых файла. mail.private — это наш приватный ключ, которым мы будем подписывать письма. А mail.txt содержит публичный ключ. Список имеющихся ключей укажем в файле /etc/opendkim/keytable в формате «название домен:селектор:/путь/до/ключа». В нашем случае содержимое файла будет таким:

Теперь объясним OpenDKIM почту каких доменов какими ключами подписывать в файле /etc/opendkim/signingtable в формате «домен название-ключа».

В файле /etc/opendkim/trusted необходимо прописать ваши доверенные узлы:

Зададим необходимые права, добавим пользователя postfix в группу opendkim. Это нужно чтобы postfix смог отправлять письма на подпись через сокет OpenDKIM. После чего перезапустим службу. Я рекомендую заглянуть в системный лог и убедиться, что нет ошибок при запуске службы.

Вторым этапом настроим postfix, чтобы он мог подписывать нашу почту. В main.cf необходимо добавить:

Ну и опять рестарт/релоад

Третьим и последним этапом мы настроим наш DNS сервер добавив в него TXT запись. Выведите содержимое файла mail.txt и используйте следующую пару ключ-значение для добавления новой записи в DNS.

Для применения изменений в DNS может пройти несколько часов. Проверить DKIM-подпись вы можете отправив пиьсмо через свой сервер на ящик [email protected] Ответное письмо вы получите в виде отчета. Например:

Полезные ссылки:

Как обнаружить спам-бота в своей сети

Не будем говорить о том, что надо ограничивать права, блокировать трафик и применять прочие методы для того чтобы в вашей сети не заводились спам-боты. Так как все равно каждый день появляются уязвимости, а с ними и новые вирусы.

Но вначале я бы хотел обратить ваше внимание на такой замечательный ресурс как http://mxtoolbox.com/blacklists.aspx, который периодически будет производить проверку вашего IP на наличие в black list. И в случае, если ваш IP будет замечен,- пришлет «тревожное письмо».

После этого возникнет вопрос какая машина заражена. Определить это очень просто. Просто приведу пример работы утилиты, которая должна быть на вооружении у каждого уважающего себя админа, а именно tcpdump. Естественно запускать tpcdump нужно на вашем шлюзе под управлением Linux

В моем примере eth1 — это интерфейс, который смотрит в локальную сеть.

Как избавиться от спама в WordPress раз и навсегда

Сегодня днем, в очередной раз, очищая комментарии в админке WordPress, я решил что с меня хватит и спам я больше чистить не буду. Но не потому, что я заброшу свой блог, а потому что найду решение этой проблемы. Конечно же я до сегодняшнего дня перепробовал кучу плагинов, но ни один из них нормально не помог бороться со спамом.

Итак, первое что я сделал — это удалил все плагины с Capcha, блокированием по черным спискам и прочую неработающую фигню. Они нам больше никогда не понадобятся, а если и понадобятся — это только при регистрации.

В 99% случаев спамеры отправляют url своих ресурсов. От этого то и будем отталкиваться. В одной из предыдущих заметок я уже рассказывал, что убрал из формы отправки комментария параметр «Сайт». Так вот, спамеры все равно отправляют этот параметр заполненным в своем POST запросе. Этим то мы и воспользуемся. Если есть параметр ‘url’ — шлем спамера «подальше». Также я заметил, что спамеры в качестве текста комментария используют заголовок темы, потому если коммент будет совпадать с заголовком — шлем спамера «еще дальше».

И теперь самое главное — добавим в форму комментария свое поле, которое обязательно для заполнения. К примеру я использовал простое текстовое поле с просьбой ввести от пользователя url своего блога.

Открываем файл wp-includes/comment-template.php и ищем в нем функцию comment_form. В ней находим блок

В этот массив добавляем наше поле АнтиСпам.  В конечном счете оно выглядит так:

Далее нам будет необходимо обработать новое поле spam. Для этого открываем файл wp-comments-post.php в корне движка WordPress и находим блок

И сразу после него добавляем наш код, котором, если пользователь не авторизован,  будет происходить проверка что он не спамер

Далее необходимо отключить trackback, т.к. очень много спама валится через него. Долго искать решение не пришлось. В корне сайта просто удаляем или переименовываем файл wp-trackback.php.

На этом настройка своей АнтиСпам системы закончена. Приведу немного статистики — когда я использовал капчи и другие плагины, я удалял порядка 300-400 спам сообщений в день. В моем решении мне не пришло ни одного сообщения от спамеров. Скажем им «гуд бай» =)