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 и как они интерпретируются.
Вы должны принять ответ Дэвида Смита, потому что он абсолютно правильный. Однако я хотел бы отметить некоторые дополнения.
Во-первых: вы написали, что "все эти хосты используют одну и ту же идентификационную запись rDNS". Это действительно плохая практика, поскольку обратный поиск в этом случае непоследователен: обратный поиск IP-адреса не обязательно приведет к обратному IP-адресу, что делает обратный поиск практически бесполезным, как в смысле, так и на практике.
Второе: мне очень интересно описанный сценарий, когда IP-адреса пользователей, которым разрешено ретранслировать, часто меняются, но каждый новый IP-адрес получает обратный поиск, соответствующий вашему правилу ретрансляции. Если есть "некоторый" метод, автоматически устанавливающий записи PTR для рассматриваемых IP-адресов, тот же метод должен использоваться для автоматического добавления их в список разрешенных ретрансляторов.
В любом случае вам лучше использовать ретрансляцию на основе IP, а не полагаться на имя хоста. Причина этого заключается в том, что любой, кто контролирует записи PTR для некоторого пространства IP-адресов, может легко придумать имена хостов, соответствующие вашему правилу ретрансляции с поддельной записью. Это означает, что любой, кто делает вид, что ему разрешено ретранслировать, получит разрешение на ретрансляцию.
Если вы используете qmail под tcpserver, вы можете обойти это, установив -P
опция (параноидальный режим). Он автоматически игнорирует обратный поиск IP-адреса, если имя хоста, полученное в результате поиска, не преобразуется обратно в подключающийся IP-адрес. Помните, что эта опция ("режим параноика") по умолчанию отключена - и она не будет работать с вашими "все IP-адреса имеют одинаковый обратный поиск". Как я уже сказал, это все равно плохая практика tcpserver
Параноидальный режим - хороший пример.