ClawsMail и vdirsyncer
Jun. 27th, 2018 05:32 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Несколько лет назад я уполз с mutt-а на графический почтовый клиент claws-mail.
Оно такое все из себя gui-шное, умеет поддерживать работу сразу с несколькими аккаунтами, имеет плагины для кучи полезных вещей, включая скажем, vcalendar или managesieve
Плагины для RSS я ставил но как-то они не пошли. А вот разделять адресную книгу и календарь между всеми машинами, где я запускаю этот клиент, а также с телефоном, мне хочется.
Поэтому я поставил на имеющемся у меня сервере radicale, а на всех рабочих машинках настроил vdirsyncer, чтобы иметь доступ к тому что телефон синхронизирует с помощью DAVDroid.
Везде в описаниях vdirsyncer предлагается для локальных хранилищ использвоать type="filesystem".
Claws же почему-то предполагает что все контакты или все события календаря лежат в одном файле.
Но для этого у vdirsyncer-а есть type="singlefile"
С адресной книгой на самом деле все очень просто. Claws-mail позволяет добавить в качестве дополнительной (read-only) адресной книги файл с vcard-ами. Это core функциональность
Соответственно, берем carddav сервер, и синхронизируемся с ним с локальным хранилищем типа singlefile. Поскольку оно все равно readonly, то никаких проблем нет.
Если очень хочется иметь интерфейс для редактирования контактов, ставим khard, и прописываем его базу контактов (по одному файлу на vcard) в конфиг vdirsyncer-а как еще одно локальное хранилище с типом filesystem и синхронизируемся не только с сервером, но и с ним.
Впрочем, надо выкроить пару часов и дописать свой скриптик который редактирует контакты с type="singlefile". Поскольку khard не умеет работать с фотографиями и с текстами с encoding=quoted-printable.
C календарем интереснее. Во-первых, стандарты тем хороши, что их много, и можно выбирать. Поэтому vcalendar плагин к claws поддерживает стандарт webcal, но не поддерживает caldav.
Казалось бы все плохо, но, если указать url со схемой file, указывающую на синхронизированный vdirsyncer-ом календарь с типом singlefile, claws его прекрасно читает. Правда, не пишет.
Что уже гораздо хуже, чем с контактами, потому что основной способ создания событий в рабочем календаре - это импорт аттачмента типа vcalendar из письма. И то, что не получается распространить по машинам созданное таким образом событие - неудобно.
Правда, claws позволяет экспортировать календарь в ics файл, но события из него надо еще как-то смерджить с синхронизируемым календарем. Оно ж не проверит что оно эти события уже экспортировало.
Возможно, дешевле разбирать экспортируемый файл на отдельные события по UID-ам и потом синхронизировать как type="filesystem".
Оно такое все из себя gui-шное, умеет поддерживать работу сразу с несколькими аккаунтами, имеет плагины для кучи полезных вещей, включая скажем, vcalendar или managesieve
Плагины для RSS я ставил но как-то они не пошли. А вот разделять адресную книгу и календарь между всеми машинами, где я запускаю этот клиент, а также с телефоном, мне хочется.
Поэтому я поставил на имеющемся у меня сервере radicale, а на всех рабочих машинках настроил vdirsyncer, чтобы иметь доступ к тому что телефон синхронизирует с помощью DAVDroid.
Везде в описаниях vdirsyncer предлагается для локальных хранилищ использвоать type="filesystem".
Claws же почему-то предполагает что все контакты или все события календаря лежат в одном файле.
Но для этого у vdirsyncer-а есть type="singlefile"
С адресной книгой на самом деле все очень просто. Claws-mail позволяет добавить в качестве дополнительной (read-only) адресной книги файл с vcard-ами. Это core функциональность
Соответственно, берем carddav сервер, и синхронизируемся с ним с локальным хранилищем типа singlefile. Поскольку оно все равно readonly, то никаких проблем нет.
Если очень хочется иметь интерфейс для редактирования контактов, ставим khard, и прописываем его базу контактов (по одному файлу на vcard) в конфиг vdirsyncer-а как еще одно локальное хранилище с типом filesystem и синхронизируемся не только с сервером, но и с ним.
Впрочем, надо выкроить пару часов и дописать свой скриптик который редактирует контакты с type="singlefile". Поскольку khard не умеет работать с фотографиями и с текстами с encoding=quoted-printable.
C календарем интереснее. Во-первых, стандарты тем хороши, что их много, и можно выбирать. Поэтому vcalendar плагин к claws поддерживает стандарт webcal, но не поддерживает caldav.
Казалось бы все плохо, но, если указать url со схемой file, указывающую на синхронизированный vdirsyncer-ом календарь с типом singlefile, claws его прекрасно читает. Правда, не пишет.
Что уже гораздо хуже, чем с контактами, потому что основной способ создания событий в рабочем календаре - это импорт аттачмента типа vcalendar из письма. И то, что не получается распространить по машинам созданное таким образом событие - неудобно.
Правда, claws позволяет экспортировать календарь в ics файл, но события из него надо еще как-то смерджить с синхронизируемым календарем. Оно ж не проверит что оно эти события уже экспортировало.
Возможно, дешевле разбирать экспортируемый файл на отдельные события по UID-ам и потом синхронизировать как type="filesystem".
no subject
Date: 2018-06-27 03:38 pm (UTC)no subject
Date: 2018-06-27 04:59 pm (UTC)Бан.
no subject
Date: 2018-06-27 07:24 pm (UTC)no subject
Date: 2018-06-27 09:08 pm (UTC)А еще интереснее написать такое же про mutt.
Ваш комментарий меня сподвиг поискать curses-based календарь и я нашел calcurse. Вот прикрутить его к mutt в качестве mime-обработчика вттвяскнтоы типв application/vcalendar или как его там, чтобы импортировало, а синхронизилка с CalDav у него родная и даже работает.
Ну sieve-connect он получается не внутри mutt, а снаружи, но вполне приемлемый по интерфейсу.
В качестве искалки по carddav-овской адресной книги можно вполне khard использовать. А pgp/smime он и сам умеет, без плагинов.
no subject
Date: 2018-06-28 07:29 am (UTC)К сожалению, на больших IMAP-ящиках у него начинаются тяжелые затупы — по-видимому, на синхронизации с локальным кэшем.
Ещё одна его проблема — сложность отладки: нужно выставлять обскурные переменные окружения и запускать с консоли, а потом читать лог. Я не знаю, что там в когтях, но в Сильфиде, которого они клон, понятный реалтаймовый лог в окошке, что сильно упрощает подходы к штанге.
no subject
Date: 2018-06-28 07:35 am (UTC)В .claws-mail/imapcache/.../этот ящик 68М. - меньше килобайта на письмо.
no subject
Date: 2018-06-28 07:51 am (UTC)В общем-то это единственная причина, по которой приходится использовать mutt: там запускается vim.
no subject
Date: 2018-06-28 07:57 am (UTC)no subject
Date: 2018-06-28 07:52 am (UTC)no subject
Date: 2018-06-28 08:05 am (UTC)Конечно, можно нагородить каких-нибудь костылей вокруг rsync или unison-а (и скорее всего я так бы и поступил, будь у меня гомогенная среда). Но в syncthing эта фукциональность уже встроена и это все уже приспособлено к любой из существующих ОС.
no subject
Date: 2018-07-06 05:28 am (UTC)Кстати, к thunderbird есть external editor plugin, который позволяет писать письма в любимом виме. А claws так умеет? И card и cal dav к нему есть.
no subject
Date: 2018-07-06 05:29 am (UTC)