How to Wiki Database (change log)
http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
18 KiB
186 lines
18 KiB
10 months ago
|
====== Yggmail ======
|
||
|
|
||
|
Это [[yggdrasil:email|электронная почта]], но немного не такая, какой вы ее знаете.
|
||
|
|
||
|
В мире существует множество всевозможных служб обмена сообщениями, но асинхронная связь по-прежнему востребована и широко распространена. Yggmail разработан в соответствии со стандартами, которые большинству людей хорошо знакомы и понятны.
|
||
|
|
||
|
[[Yggdrasil:Yggdrasil]] хорошо подходит для доставки электронной почты и позволяет Yggmail работать даже в закрытых сетях, где Интернет или другие возможности подключения ограничены или просто недоступны. Yggmail гарантирует сквозное шифрование и достаточно хорошо работает в сетях с изменчивой топологией.
|
||
|
|
||
|
===== Введение =====
|
||
|
|
||
|
**Yggmail** - это агент электронной почты, реализованный в одном бинарном файле, который может отправлять и получать сообщения через сеть [[Yggdrasil:Yggdrasil]].
|
||
|
|
||
|
* Yggmail можно запустить где угодно — ваш почтовый ящик сохраняется прямо на вашей машине;
|
||
|
* Реализованы протоколы IMAP и SMTP для отправки и получения почты, таким образом, вы можете использовать свои любимые почтовые клиенты;
|
||
|
* Для обмена сообщениями Yggmail использует подключения встроенного в него узла Yggdrasil;
|
||
|
* Обмен сообщениями между двумя узлами Yggmail всегда защищен сквозным шифрованием;
|
||
|
* Узлы Yggdrasil и Yggmail в одной и той же сети могут обнаруживаются автоматически с помощью отправки широковещательных пакетов ([[yggdrasil:mpd|multicast]]), либо вы можете настроить статическое подключение к желаемым узлам Yggdrasil.
|
||
|
* Yggmail содержит в себе собственный узел Yggdrasil, но не использует отдельный TUN-адаптер, таким образом, Yggmail можно без проблем запускать на машине, где уже установлен и настроен сам Yggdrasil, а так же на машинах, где Yggdrasil не установлен (Yggmail не использует IP-пакеты, поэтому TUN не нужен; встроенный узел Yggdrasil используется в качестве транспорта, SMTP использует uTP).
|
||
|
|
||
|
Адреса электронной почты формируются на основе ваших публичных ключей. Пример: \\ ''%%617b5772c6d10feda41fc6e0e43b976c4cc9383d3729310d3dc9e1332f0d9acd@yggmail%%''.
|
||
|
|
||
|
===== Быстрый старт =====
|
||
|
|
||
|
Используйте последнюю версию [[go:go|Go]] для установки Yggmail:
|
||
|
|
||
|
<code>go install github.com/neilalexander/yggmail/cmd/yggmail@latest</code>
|
||
|
|
||
|
(подробнее об установке или обновлении Go можно прочесть [[go:go_installation|здесь]])
|
||
|
|
||
|
Yggmail будет установлен в директорию, указанную в переменной окружения GOPATH, для удобства вы можете указать этот путь в переменной PATH:
|
||
|
|
||
|
<code>export PATH=$PATH:`go env GOPATH`/bin</code>
|
||
|
|
||
|
Создайте свой почтовый ящик и установите пароль. База данных Yggmail будет автоматически создана в вашей рабочей директории, если она еще не существует:
|
||
|
|
||
|
<code>yggmail -password</code>
|
||
|
|
||
|
Запустите Yggmail, используя созданную в рабочей директории базу данных, указав при запуске либо multicast, либо статический узел Yggdrasil, либо и то и другое:
|
||
|
|
||
|
<code>yggmail -multicast
|
||
|
yggmail -peer=tls://...
|
||
|
yggmail -multicast -peer=tls://...</code>
|
||
|
|
||
|
Адрес вашей электронной почты будет выведен в log при запуске Yggmail. Так же, этот адрес необходимо будет использовать в качестве имени пользователя для подключений SMTP/IMAP.
|
||
|
|
||
|
Подключитесь к Yggmail с помощью вашего почтового клиента. Примеры параметров подключения:
|
||
|
|
||
|
* SMTP прослушивает TCP-порт 1025, имя пользователя - ваш адрес, аутентификация по паролю простым текстом, не использовать SSL/TLS
|
||
|
* IMAP прослушивает TCP-порт 1143, имя пользователя - ваш адрес, аутентификация по паролю простым текстом, не использовать SSL/TLS
|
||
|
|
||
|
Теперь вы можете попробовать отправить электронное письмо другому пользователю Yggmail!
|
||
|
|
||
|
===== Параметры запуска =====
|
||
|
|
||
|
Поддерживаются следующие параметры командной строки:
|
||
|
|
||
|
* ''%%-peer=tls://... or -peer=tcp://...%%'' — подключение к указанному узлу Yggdrasil, подобно тому, как настраивается подключение к [[yggdrasil:public_peer|публичному пиру]];
|
||
|
* ''%%-multicast%%'' - задействовать multicast peer discovery (автоматическое обнаружение) для узлов Yggdrasil в вашей локальной сети;
|
||
|
* ''%%-database=/path/to/yggmail.db%%'' — использовать указанный файл базы данных;
|
||
|
* ''%%-smtp=listenaddr:port%%'' — ожидать подключения SMTP на указанных адресе/порте;
|
||
|
* ''%%-imap=listenaddr:port%%'' — ожидать подключения IMAP на указанных адресе/порте;
|
||
|
* ''%%-password%%'' — установить IMAP/SMTP пароль (не имеет значения запущен Yggmail или нет, просто убедитесь, что Yggmail работает с нужной базой данных или что вы находитесь в нужной рабочей директории).
|
||
|
|
||
|
===== Пример =====
|
||
|
|
||
|
При запуске на локальном компьютере без Yggdrasil, достаточно указать один [[https://publicpeers.neilalexander.dev/|пир]] (а в настройках почтового клиента - localhost):
|
||
|
|
||
|
<code>yggmail -peer=tls://94.140.114.89:4708</code>
|
||
|
|
||
|
Так можно запустить Yggmail, чтобы он был доступен для подключения по SMTP / IMAP из локальной сети:
|
||
|
|
||
|
<code>yggmail -peer=tls://192.168.1.4:22953 -database=/home/user/go/bin/yggmail.db -smtp=192.168.1.4:1025 -imap=192.168.1.4:1143</code>
|
||
|
Здесь:
|
||
|
* 192.168.1.4 - адрес в локальной сети устройства, на котором запускается Yggmail (в моём случае, это RaspberryPi); на этом же устройстве запущен пир Yggdrasil, который принимает подключения на порту 22953.
|
||
|
* ''%%/home/user/go/bin/yggmail.db%%'' - путь к локальной базе Yggmail (см. выше)
|
||
|
|
||
|
Таким образом мы подключаем Yggmail к нашему пиру Yggdrasil и открываем на этом устройстве в локальной сети порты 1025 и 1143.
|
||
|
|
||
|
На любом другом устройстве в этой локальной сети настраиваем почтовый клиент (например, Thunderbird (notebook) или Почта (iPhone)) для подключения к получившемуся мини почтовому серверу, указав в настройках адрес 192.168.1.4 и соответствующие порты для SMTP и IMAP протоколов: 1025 и 1143.
|
||
|
|
||
|
В дальнейшем работаем, как с любой другой почтой на других серверах.
|
||
|
|
||
|
В этом примере ''%%-peer=tls://192.168.1.4:22953%%'' можно заменить на ''%%-multicast%%'', тогда Yggmail будет пытаться сам найти Yggdrasil в локальной сети с помощью отправки широковещательных пакетов.
|
||
|
|
||
|
Пример systemd-unit'a для запуска yggmail:
|
||
|
<code>
|
||
|
[Unit]
|
||
|
Description=Yggmail
|
||
|
Documentation=https://github.com/neilalexander/yggmail
|
||
|
After=network-online.target
|
||
|
|
||
|
[Service]
|
||
|
Type=simple
|
||
|
ExecStart=/home/user/go/bin/yggmail -peer=tcp://192.168.1.4:22953 -database=/home/user/go/bin/yggmail.db -smtp=192.168.1.4:1025 -imap=192.168.1.4:1143 2>&1
|
||
|
Restart=always
|
||
|
RestartSec=1
|
||
|
TimeoutStopSec=0
|
||
|
|
||
|
[Install]
|
||
|
WantedBy=multi-user.target
|
||
|
</code>
|
||
|
|
||
|
Unit нужно сохранить в файл ''%%/lib/systemd/system/yggmail.service%%'' и выполнить команду: ''%%sudo systemctl enable --now yggmail%%'' (не забудьте указать корректные пути к yggmail и yggmail.db).\\
|
||
|
Если все сделано правильно ''%%systemctl status yggmail%%'' покажет: "Active (running)".
|
||
|
|
||
|
Таким же образом можно установить и запустить Yggmail на [[:VPS]] [cо статическим ("белым") IP-адресом], тогда этот почтовый сервер может стать доступным не только из локальной сети, но и через Интернет, и вы сможете отправлять и получать почту Yggmail со смартфона, находясь, где угодно, имея любое подключение к Интернет. Дополнительно соединения и аутентификацию на SMTP / IMAP можно защитить c помощью VPN.
|
||
|
|
||
|
C учетом описанных ниже [[.:yggmail#Замечания|ограничений]] Yggmail [на данный момент] больше подходит для использования с мессенджером [[https://delta.chat/ru/|Delta Chat]], однако другие e-mail клиенты так же можно настроить для работы с ним.
|
||
|
|
||
|
==== Пример настроек Delta Chat ====
|
||
|
|
||
|
Мессенджер доступен для популярных настольных операционных систем, а так же для [[wpru>IOS|iOS]] и [[wpru>Android]]. Ниже пример настроек клиента iOS, с учетом описанного выше.
|
||
|
<WRAP group>
|
||
|
<WRAP column>
|
||
|
^ Параметр ^ Значение ^
|
||
|
| Адрес эл. почты | 36ef9bc3a91ffbcc511b33faa3bb72b31c140f18e3ef143559a0128be440de49@yggmail|
|
||
|
| Пароль | %%***%% (ваш пароль) |
|
||
|
| **Дополнительные параметры** ||
|
||
|
| Параметры безопасности IMAP | Выкл.|
|
||
|
| IMAP логин | 36ef9bc3a91ffbcc511b33faa3bb72b31c140f18e3ef143559a0128be440de49@yggmail |
|
||
|
| IMAP сервер | 192.168.1.4 |
|
||
|
| IMAP порт | 1143 |
|
||
|
| Параметры безопасности SMTP | Выкл. |
|
||
|
| SMTP логин | 36ef9bc3a91ffbcc511b33faa3bb72b31c140f18e3ef143559a0128be440de49@yggmail |
|
||
|
| SMTP пароль | %%***%% (ваш пароль) |
|
||
|
| SMTP сервер | 192.168.1.4|
|
||
|
| SMTP порт |1025 |
|
||
|
| Проверка сертификатов| Принимать недействительный |
|
||
|
</WRAP>
|
||
|
|
||
|
<WRAP column>
|
||
|
{{ yggdrasil:email:deltachat_settings.png?183&direct|Настройки Delta Chat }}
|
||
|
</WRAP>
|
||
|
</WRAP>
|
||
|
==== Пример настроек аккаунта электронной почты в Mozilla Thunderbird ====
|
||
|
|
||
|
{{yggdrasil:email:yggmail_tb_acc_settings.png?350&direct|Настройки аккаунта Yggmail в Mozilla Thunderbird}}
|
||
|
|
||
|
Для настроенного аккаунта можно в его свойствах задать отображаемое имя (Account Name), чтобы выглядело примерно так:
|
||
|
|
||
|
{{yggdrasil:email:yggmail_tb_acc_view.png?350&direct|Как выглядит аккаунт в Thunderbird}}
|
||
|
|
||
|
===== Резервные копии =====
|
||
|
|
||
|
Чтобы полностью сохранить копию аккаунта и почтовые сообщения для переноса или восстановления - достаточно скопировать файл, указанный при инициализации сервера:
|
||
|
|
||
|
<code>yggmail -database=/path/to/yggmail.db</code>
|
||
|
|
||
|
Если данный путь не указан явно, файл можно найти в домашней директории профиля.
|
||
|
|
||
|
Приватный ключ (private_key) и хеш пароля (password) расположены в таблице config.
|
||
|
|
||
|
Также нужно отдельно сохранить пароль инициализации базы данных (при выполнении команды yggmail -password), поскольку в исходном виде он не сохраняется.
|
||
|
|
||
|
===== Замечания =====
|
||
|
|
||
|
Несколько важных замечаний:
|
||
|
|
||
|
* Yggmail должен быть запущен, чтобы была возможность получать входящие сообщения. По этой причине важно запускать Yggmail там, где он будет запущен постоянно, 24/7 [ //возможно, информация [[https://github.com/neilalexander/yggmail/issues/1#issuecomment-1930768430|устарела]]// ];
|
||
|
* Yggmail пытается гарантировать, что отправители - это те, за кого они себя выдают, поэтому заголовок 'From address' в отправляемых сообщениях должен соответствовать вашему Yggmail-адресу;
|
||
|
* Вы можете обмениваться сообщениями только с другими пользователями Yggmail, обычные адреса электронной почты в Интернет и других сетях не поддерживаются;
|
||
|
* Вы должны настроить свой почтовый клиент так, чтобы он использовал "insecure" (небезопасную) или "plaintext" (простым текстом) аутентификацию для IMAP/SMTP — это потому, что мы не используем SSL/TLS для IMAP/SMTP-протоколов, трафик Yggdrasil зашифрован;
|
||
|
* На данный момент Yggmail поддерживает отправку сообщений, объемом не более 1MB.
|
||
|
* Попытка отправить тестовое письмо на собственный адрес приведет к ошибке ([[https://github.com/neilalexander/yggmail/issues/33|#33]], [[https://github.com/neilalexander/yggmail/issues/35|#35]])
|
||
|
|
||
|
===== Известные проблемы =====
|
||
|
|
||
|
Вероятно, Yggmail содержит большее количество багов, ниже упомянуты пара из них:
|
||
|
|
||
|
* Поведение IMAP может не вполне соответствовать спецификации в некоторых случаях, таким образом, в различных почтовых клиентах могут наблюдаться различные проблемы;
|
||
|
* Поиск в IMAP на данным момент не реализован полностью и вместо этого будет возвращать все известные адреса.
|
||
|
|
||
|
Так же, код немного запутан, простите нас за это ;) ([[https://github.com/neilalexander|neilalexander]])
|
||
|
|
||
|
===== Адреса пользователей =====
|
||
|
|
||
|
Желающие могут оставить здесь свой адрес, чтобы другие пользователи могли его найти и связаться с вами. \\
|
||
|
(если в таблице наберется большое количество контактов, перенесём её на отдельную страницу, а здесь оставим ссылку)
|
||
|
|
||
|
^ Никнейм / Имя ^ Адрес ^
|
||
|
| TomasGl | f6065c4d768d5b40e40c942ca77bd40079ed3cc2df266562b9f4546ebe2c13d6@yggmail |
|
||
|
| BiGLapa | b6c2beb9ed1d8847bd5dba85d0623200435625fb2f9e155b8dd703a53b8c734d@yggmail |
|
||
|
|
||
|
====== Ссылки ======
|
||
|
|
||
|
Репозиторий проекта на GitHub: https://github.com/neilalexander/yggmail
|