LINUX.ORG.RU

Протокол почты для флоппинета


0

0

Пришла мне в голову эта идея, и не отпускала, пока я ею не занялся. Возможно, зря я это сделал и зря сюда об этом пишу. Посмотрим.

Итак, есть черновик протокола и черновая же реализация (https://github.com/aitap/flash-mail.git). В некоторых местах там очень необъективно расходуется память, в некоторых можно специально сформированным файлом залезть в файловую систему читающего файл компьютера - это черновик. Зависимости: perl, xz, openssl.

Основная причина, по которой было решено не использовать MIME - необходимость кодировать большие бинарные файлы в текст.

Концепция общения такая: генерируем командой gen-id пару ключей, открытый складываем (export-id) в директорию на флешке. Желающие складывают его себе в keys/. Можно писать личные сообщения командой write (и указывать msgid, на который отвечаешь). Группа (вроде почтовой рассылки) создаётся как пара ключей (они будут использоваться для модерации, если дойдут руки дописать) командой gen-group, открытый ключ публикуется и складывается желающими писать в groups/. После написания сообщения архивируются на флешку (export) и копируются другими людьми (import). Просмотр дерева делается командой list, чтение - show. Если индекс сообщений вдруг сломается, есть команда reindex.

Опасайтесь багов, они повсюду. Значительная часть программы - прикрученный проволокой openssl smime.

В планах - развить программу до эдакой смеси git и gpg, придумать интерактивный протокол (для сетей, где они будут) и сменить openssl и xz на Crypt::*, Digest::* и IO::[Un]Compress::Xz.

Кому интересно?

Чуть не забыл, делается just for fun и никому не нужно. Стандарты всё равно не победить.

★★★★★

Последнее исправление: AITap (всего исправлений: 5)

чем это лучше fido?

dikiy ★★☆☆☆
()

Ну это уж для совсем-совсем-совсем параноиков.

Deleted
()

А зачем оно вообще нужно? Какие задачи оно решает, и почему не устраивает обычная почта?

eagleivg ★★★★★
()
Ответ на: комментарий от mky

Файл (сообщение) обязательно должен влазить на флешку целиком?

думаю разбить на части для флешек на 360k, 1.2M или 1.44M не проблема.

exception13 ★★★★★
()
Ответ на: комментарий от exception13

Да, разбить то почти что угодно не проблема :-) А вот обратно склеить, чтобы при утери одной из флешек не требовалась повторная отправка всего ведра флешек...

mky ★★★★★
()
Ответ на: комментарий от eagleivg

Решает притянутую за уши проблему почты, которой наплевать, каким способом её передают. Ещё хочется решить проблему кодирования бинарников в текст (раз уж у нас в байте 8 бит), но пока никакой поддержки вложений у формата нет.

AITap ★★★★★
() автор топика
Ответ на: комментарий от mky

Можно разбить split'ом, если нужно. Благодаря тому, что xz работает с конкатенированными архивами, как с одним файлом, добавить автоматическое разбиение и склеивание будет очень просто. По той же причине сообщения можно сжимать по одному (хотя степень сжатия при этом будет меньше) и при потере «флешки» начинать чтение со следующего заголовка сжатых xz данных.

AITap ★★★★★
() автор топика
Ответ на: комментарий от AITap

Перечитал ещё раз черновик протокола, понял, что это совсем не то, что я подумал. Думал, что вы реализуете почтовый транспорт на usb-flash, который взаимодействет со стандартным smtp-сервером, и вся почта для клиента ходит как обычно и шифруется чем-то типа Enigmail. Это было бы интерестно для организации связи между офисами, если нет нормального Интернета. Где может быть применёна ваша программа я не могу придумать.

mky ★★★★★
()
Ответ на: комментарий от mky

Тогда можно выкинуть почти всё, вставить Net::SMTP и Net::SMTP::Server, а на флешку складывать пожатые mbox'ы. Мою программу можно было бы применять вместо почты, но на это никто не пойдёт.

AITap ★★★★★
() автор топика
Последнее исправление: AITap (всего исправлений: 1)
Ответ на: комментарий от AITap

а на флешку складывать пожатые mbox'ы

Не знаю, при современных объёмах флешек имеет ли смысл их сжимать. А так был именно интересен протокол, что вот есть несколько офисов, между ними бегают сотрудники с флешками, в каждом офисе сервер складывает исходящие письма на флешку, читает входящие, записывает на флешку log (подписанный ключём сервера), читает log, записаный другими серверами и удаляет из своей очедери дошедшие до адресата письма...

Мою программу можно было бы применять вместо почты, но на это никто не пойдёт.

Ну исходно почта строилась, что разрывы связи, потери пакетов не должны приводить к исчезновению писем. И по логам почтового сервера можно понять, было ли письмо передано на другую сторону. В вашей же системе, ИМХО, если там будет циркулировать десяток флешек, начнётся хаос

mky ★★★★★
()
Ответ на: комментарий от mky

А какого рода хаос должен начаться? Очевидные меры вроде проверки списка существующих сообщений перед выгрузкой/импортом я уже применяю. Вы имеете в виду именно проблемы подтверждения доставки? Спасибо за идею, я попробую её реализовать (только не понятно, кто должен отправлять подтверждения при приёме «групповых» сообщений).

AITap ★★★★★
() автор топика
Последнее исправление: AITap (всего исправлений: 1)

есть же rfc на голубинную почту

anonymous
()

А чем ФИДО лучше доброго старого uucp???

Deleted
()
Ответ на: комментарий от AITap

Что делать с групповыми сообщениями я не знаю. У вас получается, что групповое сообщение отправляется как udp-broadcast, до кого дошло, тот и получил, отправитель не знает списка получателей группового сообщения. Получается, что удалять групповое сообщение с флешки нельзя только логгировать на флешки каждого нового получаетля.

Относительно хаоса. Я в первую очередь думал про ситуацию, если, допустим 10 компьютеров и 4-5 флешек. И когда одна из флешек перестаёт читатся или просто теряется (выпала из кармана), то не понять, какие сообщения потерялись и что нужно отправлять повторно. Может каждой флешки нужно присваивать id и каждый компьютер должен дописывать в лог на этой флешки время, когда он работал с нею... Не знаю, детально думать про это некогда.

mky ★★★★★
()

Some Error
Some strange error has been occurred:
Entry was not found in database
Please contact the admin about the problem

Deleted
()
Ответ на: комментарий от mky

Раз уж место хранения сообщений для нас не проблема, групповые сообщения можно не удалять. Хранят же весь архив в нескольких видах сразу (gzipped mbox, html) сервера почтовых рассылок на Mailman.

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

Хранить полный список сообщений на всех флешках будет ещё сложнее (экспортировал на одну - подключай все; а индекс ещё и повредиться может).

Избыточное кодирование (каким-нибудь PAR2) от утери целой флешки тоже не спасёт.

В общем, надо думать. Спасибо.

AITap ★★★★★
() автор топика

Основная причина, по которой было решено не использовать MIME - необходимость кодировать большие бинарные файлы в текст.

Ну и дурак. Так бы существующие MUA без проблем работали.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.