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

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

В Exchange 2003, Postfix, Exim и cPanel это может быть достигнуто довольно легко. Тем не менее, единственное, что можно сделать с помощью Qmail, это сделать на основе IP-адресов.

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

Запуск сценария, который разрешает имя хоста и соответственно вносит их в белый список, является моим последним вариантом, но это не защищает от ошибок.

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

Спасибо!

2 ответа

Решение

Если вы запускаете 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

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

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

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

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

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

Другие вопросы по тегам