From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "=?windows-1251?b?wujq8u7wINEu?= =?windows-1251?b?IMPw6Pnl7eru?=" Organization: =?windows-1251?b?zsDO?= "=?windows-1251?b?0eXy/CD26PTw7uL79Q==?= =?windows-1251?b?IOrg7eDr7uI=?=" To: "sisyphus@altlinux.ru" Date: Wed, 15 Oct 2003 20:13:50 +0600 User-Agent: KMail/1.5.3 MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: 8bit Content-Disposition: inline Message-Id: <200310152013.50621.gritzko@post.dcn.ru> Subject: [sisyphus] GNU mailutils & maildrop X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.1.2 Precedence: list Reply-To: sisyphus@altlinux.ru List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Oct 2003 14:13:57 -0000 Archived-At: List-Archive: Здравствуйте! Понадобился мне MDA c поддержкой Sieve, однако Cyrus целиком непремлем - не нравится его нетривиальный формат хранения. Подходящего варианта нет, дошёл уже до просмотра исходников с целью установить объём работ по доработке. Смотрел maildrop. То, что удивило после postfix - довольно сумбурная манера письма. Общаий подход плоский, С-шный. Однако написано всё на С++ почему-то. После этого смотрел GNU mailutils. Это просто злой фельетон. Общий подход - универсальный, объектный, абстрактно-полиморфный. Используются подсчёт ссылок (простой вариант сборки мусора), события, URI. Написано на С! О, боги!!! Вот, например, инициализация объекта: -------поехали------- int _mailbox_maildir_init (mailbox_t mailbox) { if (mailbox == NULL) return EINVAL; /* Overloading the defaults. */ mailbox->_destroy = maildir_destroy; mailbox->_open = maildir_open; mailbox->_close = maildir_close; /* Overloading of the entire mailbox object methods. */ mailbox->_get_message = maildir_get_message; mailbox->_append_message = maildir_append_message; mailbox->_messages_count = maildir_messages_count; mailbox->_messages_recent = maildir_messages_recent; mailbox->_message_unseen = maildir_message_unseen; mailbox->_expunge = maildir_expunge; mailbox->_save_attributes = maildir_save_attributes; mailbox->_uidvalidity = maildir_uidvalidity; mailbox->_uidnext = maildir_uidnext; mailbox->_scan = maildir_scan; mailbox->_is_updated = maildir_is_updated; mailbox->_get_size = maildir_get_size; return 0; /* okdoke */ } -------приехали------- Это Maildir, реализация абстрактного хранилища почты. Этакий конструктор: mailbox->_get_size - указатель на функцию, maildir_get_size - функция. Реализуем таблицу виртуальных функций, таким образом. СТРАУСТРУПП ПОЛЫСЕЛ НАПРАСНО!!! -- Виктор С. Грищенко Отогнав врагов, Бэнкей явился перед господином и, держа алебарду под мышкой, сказал: - Вот и я. Судья Ёсицуне читал восьмую книгу "Лотосовой сутры". Он спросил: - Как дела?