Назад | Перейти на главную страницу

Qmail: ретранслировать только с выбранных серверов на основе rDNS

Я ищу способ отключить ретрансляцию Qmail для всех, но разрешить это одной определенной группе хостов. Все эти хосты используют одну и ту же идентифицирующую запись rDNS.

В Exchange 2003, Postfix, Exim и cPanel этого можно легко добиться. Однако с Qmail это можно сделать только на основе IP-адресов.

Однако IP-адреса имеют тенденцию меняться. Эти изменения могут произойти в любое время, и невозможно поддерживать все серверы в актуальном состоянии с учетом новых IP-адресов.

Мое последнее средство - запустить сценарий, который разрешает имя хоста и вносит его в белый список, но он не надежен.

Кто-нибудь знает, возможно ли это и если да, то как?

Спасибо!

Вам следует принять ответ Дэвида Смита, потому что он абсолютно правильный. Однако хочу отметить некоторые дополнения.

Во-первых: вы написали, что «все эти хосты используют одну и ту же идентифицирующую запись rDNS». Это действительно плохая практика, поскольку ваши обратные поиски не последовательный в этом случае: обратный поиск IP-адреса будет не обязательно возвращаются к рассматриваемому IP-адресу, делая обратный поиск почти бесполезным как в его смысле, так и на практике.

Во-вторых: меня действительно интересует описанный сценарий, в котором IP-адреса пользователей, которым разрешено ретранслировать, часто меняются, но каждый новый IP-адрес получает обратный поиск, соответствующий вашему правилу ретрансляции. Если существует «какой-то» метод автоматической установки записей PTR для рассматриваемых IP-адресов, этот же метод можно использовать для автоматического добавления их в список разрешенных ретрансляторов.

В любом случае вам лучше использовать ретрансляцию на основе IP, а не полагаться на имя хоста. Причина в том, что кто-нибудь Кто контролирует записи PTR для некоторого пространства IP-адресов, может легко придумать имена хостов, соответствующие вашему правилу ретрансляции с поддельной записью. Это означает, что кто-нибудь притворяться быть разрешенным к передаче воля разрешено ретранслировать.

Если вы запускаете qmail под tcpserver вы можете обойти это, установив -P вариант (параноидальный режим). Он автоматически игнорирует обратный поиск IP-адреса, если имя хоста, полученное в результате поиска, не разрешается обратно в подключающийся IP. Помните, что эта опция ("параноидальный режим") выключен по умолчанию - и он не будет работать с вашим «все IP-адреса имеют одинаковый обратный поиск». Как я уже сказал, в любом случае это плохая практика, и tcpserverпараноидальный режим - хороший тому пример.

Если вы запускаете qmail в режиме Life With qmail, используя tcpserver для запуска процесса qmail-smtp, вы можете добавить правило в свой файл /etc/tcp.smtp, говорящее ему принимать соединения на основе rDNS подключающегося хоста:

= rdns.of.host: разрешить, RELAYCLIENT = ""

'=' Сообщает tcpserver, что вы хотите проверить имя сервера вместо обычного IP-адреса. Если ваши клиенты разрешают с помощью уникального имени хоста, но домен тот же, вы можете указать только часть домена, и tcpserver будет последовательно сравнивать суффиксы разрешенного имени с правилами, которые вы определили.

Например, если клиент разрешается как client1.example.com и у вас есть правило '= example.com: allow, RELAYCLIENT = ""', тогда tcpserver сначала проверит client1.example.com, который не будет соответствовать, но затем он будет попробуйте example.com, который будет соответствовать и разрешить реле.

Вот документация по tcprules и их интерпретация.

http://cr.yp.to/ucspi-tcp/tcprules.html