Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
$ sendmail -bt
ADDRESS TEST MODE
(ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> /map block4 pool-127-165.gen.ua
map_lookup: block4 (pool-127-165.gen.ua) no match (0)
> /map block5 pool-127-165.gen.ua
map_lookup: block5 (pool-127-165.gen.ua) returns @MATCH (0)
> /quit
Команда /map проверяет имя хоста на соответствие той или иной «карте». Наши правила тоже являются картами. Если соответствие найдено, возвращается @MATCH, если нет – вы получите сообщение «no match».
Проводить тестирование лучше всего после компиляции нового конфигурационного файла (make), но до его инсталляции (make install) и перезапуска работающего почтового сервера (make restart). В этом случае потребуется явно указать новый конфигурационный файл (sendmail -bt -C mydom.ru.cf), но зато в случае ошибок вы сможете их исправить до того, как они скажутся на реальной работе.
Что ответить на HELO?
Наверняка вы обратили внимание, что в показанной схеме один этап отсутствует – команда HELO/EHLO, которой клиент (под «клиентом» здесь и далее подразумевается программа, устанавливающая соединение с вашим сервером) приветствует сервер сразу после подключения. Согласно стандарту в HELO/EHLO клиент должен передать своё полное имя (FQDN), которое, очевидно, должно соответствовать IP-адресу клиента. Однако на практике здесь может быть множество «подводных камней».
Во-первых, у различных клиентов могут быть различные понятия о стандартах (особенно это касается собственно почтовых клиентов типа Outlook, The Bat! и т. п., так что в первую очередь фильтрация по HELO может сказаться на ваших же пользователях) – не всегда в HELO будет указано именно то, что нужно. Во-вторых, клиент может соединяться через какой-нибудь NAT- или прокси-сервер и, передавая HELO, может понятия не иметь, с какого IP-адреса фактически будет идти соединение. Наконец, в-третьих, у клиента может быть несколько интерфейсов, и не факт, что FQDN будет соответствовать именно тому, с которого осуществляется подключение к серверу. В общем, на мой взгляд, «безусловная» фильтрация по HELO слишком опасна, и её лучше исключить.
Но, с другой стороны, такая проверка может быть весьма эффективной. Так что если вы всё-таки хотите «наказать» клиентов, не соблюдающих стандарт (кстати говоря, в RFC 2821 ясно обозначено, что сервер не должен отказывать в соединении на основании неправильного имени в HELO/EHLO), можете воспользоваться рядом приёмов, которые можно найти в Интернете. Обычно ограничиваются блокировкой клиентов, которые сообщают в приветствии имя сервера, к которому подключаются (такая блокировка сравнительно безопасна, но тоже могут быть нюансы). Вот несколько ссылок: