Это сработало! Сообщение мгновенно появилось на сервере, и спустя некоторое время оказалось разослано всем остальным [243]. К сожалению, популярное клиентское программное обеспечение не поддерживает возможности добавления поля “Approved”, и возникает необходимость создания собственного инструмента (не работать же, в самом деле, всю жизнь в окне telnet-клиента).
На диске, прилагаемом к книге, содержится демонстрационный пример “/SRC/nntp/htm”, который позволяет отправлять сообщения в модерируемые конференции. Его возможности наглядно демонстрирует следующий эксперимент. Если выбрать группу «с ведущим» [244], (например, medlux.doc.rus на сервере nntp://news.medlux.ru) и попробовать отправить свое сообщение с помощью «Outlook Express», то оно с завидным упорством откажется добавляться в конференцию. Но, если использовать скрипт “NNTP Test Post”, то сообщение незамедлительно появится в группе!
Рисунок 017 Демонстрация отправки сообщения в конференцию с ведущим
А заголовок отправленного сообщения должен выглядеть приблизительно так (поле “Approved” выделено жирным шрифтом, именно с его помощью удалось обойти ограничение сервера):
· Path: news.medlux.ru!not-for-mail
· From: KPNC@aport.ru
· Newsgroups: medlux.doc.rus
· Subject: Test posing
· Date: 11 Apr 2000 11:06:28 GMT
· Organization: Medlux InterNetNews site, Moscow, Russia
· Lines: 1
· Approved: KPNC@aport.ru
· Message-ID: «8cv0vk$fep$1@news.medlux.ru»
· NNTP-Posting-Host: spider.softclub.net
· Xref: news.medlux.ru medlux.doc.rus:3032
·
· Hello,Sailor!
Неплохо бы теперь удалить тестовые сообщения из группы [245]. Как это можно сделать? Какие вообще существуют способы управления сервером? В далекое доисторическое время, когда сеть была доступна ограниченному кругу лиц, и еще никто всерьез не задумывался о безопасности, была предложена концепция управляющих сообщений. В общих чертах суть ее заключалось в том, что если в послании содержалось некое ключевое слово, сервер интерпретировал следующий за ним текст как команды.
Эта методика завоевала большую популярность у разработчиков в виду привлекающей простоты реализации и дожила в неизменном виде до наших дней. Большинство NNTP-серверов допускают удаленное администрирование, не требуя для этого никаких прав.
Управляющие сообщения отличаются от всех остальных наличием поля “Control” в заголовке или ключевым словом “cmsg” в поле “Subject”, оставшаяся часть которого интерпретируется как команды. Поэтому, нет нужды в специализированном программном обеспечении для администрирования сервера, вполне сойдет ваш любимый клиент.
Когда-то все происходило несколько иначе. Управляющими считались поля “Subject”, в сообщениях, адресованных группе “ all.all.ctl”. Для обеспечения совместимости многие серверы до сих пор поддерживают такое поведение, хотя описанная концепция устарела не на один ледниковый период.
Забавно, что в попытках защитить свой сервер и установить фильтры для управляющих сообщений многие администраторы забывают об этой маленькой документированной(плохо, но документированной) особенности.
Запретить управляющие сообщения администратор не может, потому что они используются для организации взаимодействия между NNTP-серверами. Впрочем, можно настроить систему безопасности так, чтобы потенциально «опасные» команды требовали аутентификации пользователя и были доступны лишь с соответствующими привилегиями доступа. Но в большинстве случаев установленную защиту можно с легкостью обойти, используя простейшие приемы подделки полей заголовка.
Для удаления сообщения можно воспользоваться командой “cancel”, указав уникальный идентификатор (“Message-Id”) удаляемого послания. Отправлять такую команду может только администратор сервера или автор сообщения, то есть поля “From” в удаляемом и управляющем посланиях должны совпадать [246].
Для того чтобы узнать идентификатор сообщения, достаточно воспользоваться командой HEAD. Если удаляемое сообщение текущее, то это может выглядеть, например, так:
· HEAD
· 220 3031 «8cn934$f3r$2@news.medlux.ru» article
· Path: news.medlux.ru!not-for-mail
· From: kpnc@id.ru
· Newsgroups: medlux.doc.rus
· Subject: Test
· Date: 8 Apr 2000 12:35:48 GMT
· Organization: Medlux InterNetNews site, Moscow, Russia
· Lines: 1
· Approved: kpnc@aport.ru
· Message-ID: «8cn934$f3r$2@news.medlux.ru»
· NNTP-Posting-Host: ppp-18.krintel.ru
· Xref: news.medlux.ru medlux.doc.rus:3031
·.
Чтобы иметь возможность убедиться в успешности выполнения операции, необходимо воспользоваться командой GROUP, запомнив число сообщений в группе до попытки удаления корреспонденции.
Читать дальше