Чтобы иметь возможность убедиться в успешности выполнения операции, необходимо воспользоваться командой GROUP, запомнив число сообщений в группе до попытки удаления корреспонденции.
· group medlux.doc.rus
· 211 3 3030 3032 medlux.doc.rus
· Newsgroups:medlux.doc.rus
· From:«[email protected]»
· Approved:«[email protected]»
· Subject:cmsg cancel «
Аналогичным образом можно воспользоваться служебным полем “Control”, тогда заголовок будет выглядеть так:
· Newsgroups:medlux.doc.rus
· From:«[email protected]»
· Approved:«[email protected]»
· Control:
· Subject: Hello, Server!
Поле “Subject” должно присутствовать и в том и другом случае, иначе сервер не отправит сообщение.
Если удаление прошло успешно, результат работы команды “GROUP” должен выглядеть приблизительно так:
· group medlux.doc.rus
· 211 2 3030 3031 medlux.doc.rus
Количество сообщений уменьшилось на единицу! Следовательно, одно из них было только что удалено. Впрочем, на локальных дисках подписчиков не произошло никаких изменений [247], точно как и на всех серверах, уже успевших получить это сообщение.
Пользоваться управляющими сообщениями следует крайне осторожно. При возникновении ошибок обработки, сообщение об ошибке возвращается не отправителю, а администратору системы, последующие действия которого предугадать нетрудно.
Впрочем, экая невидаль удалить собственное послание! Вот если бы было можно то же проделывать и с чужой корреспонденцией. Но почему бы нет? Достаточно подставить фиктивный адрес в поле “From” в заголовке сообщения.
Эксперимент, приведенный ниже, демонстрирует удаление чужого сообщения с сервера:
· From: Nadezda Alexsandrovna
· Newsgroups: medlux.trade.optika
· Subject: I am looking for a permanent wholesale buyer of women's hair 30-60 cm long of all colours.
· Date: Thu, 6 Apr 2000 05:01:15 +0300
· Organization: AOZT'Sharm'
· Lines: 16
· Distribution: world
· Message-ID: «[email protected]»
· Reply-To:[email protected]
· NNTP-Posting-Host: ums.online.kharkov.com
· Mime-Version: 1.0
· Content-Type: text/plain; charset=koi8-r
· Content-Transfer-Encoding: 8bit
· X-Trace: uanet.vostok.net 954986531 12181 194.44.206.227 (6 Apr 2000 02:02:11 GMT)
· X-Complaints-To: [email protected]
· NNTP-Posting-Date: 6 Apr 2000 02:02:11 GMT
· Summary: Please call us or write in Russian or English.
· Keywords: hair
· X-Mailer: Mozilla 4.61 [en] (Win95; I)
· Xref: news.medlux.ru medlux.trade.optika:904
В заголовке сообщения присутствуют два поля “From” и “Reply-To”. В зависимости от настроек сервера он может проверять либо только первое из них, либо и то, и другое сразу.
Стандарт предписывает сличать поля “From” и “Sender” (если есть) и ничего не говорит обо всех остальных. Поэтому различные разработчики могут реализовывать это по-разному.
Например, можно отправить сообщение следующего содержания, в котором присутствует лишь поле “From”.
· From: Nadezda Alexsandrovna «[email protected]»
· Newsgroup: medlux.trade.optika
· Approved: Nadezda Alexsandrovna «[email protected]»
· Subject: cancel «[email protected]»
Таким же точно образом можно удалить содержимое всех конференций, достаточно воспользоваться несложным скриптом, по понятным причинам
К сожалению, это действительно очень простой скрипт, который в состоянии написать даже начинающий программист. Хотелось бы, что бы владельцы NNTP-серверов серьезнее относились к вопросам безопасности и защиты информации.
Гораздо надежнее защита от несанкционированного создания и удаления конференций. Когда-то, давным-давно, на заре существования Internet, любой пользователь мог создать собственную группу, или удалить чужую [250].
Для создания новой конференции было достаточно воспользоваться управляющей командой «newgroup ИмяГруппы», отослав ее на «all.all.ctl». Сегодня ситуация несколько изменилась. Только редкий сервер разрешит рядовому пользователю подобные операции, и, кроме того, куда отправлять сообщение? Единого мнения на этот счет никого нет. Например, на nntp://mailserver.corvis.ru существуют специальные группы, находящиеся в самом начале списка, выдаваемого командой LIST.
· list
· 215 list of newsgroups follow
· control.cancel 7463 7423 y
· control.newgroup 1 2 y
· control.rmgroup 0 1 y
·…