# Yggmail - месенджер з поштовим інтерфейсом

Yggmail - це дочірній проєкт від розробників Yggdrasil, написаний на Go та має відкритий код.

* Дозволяє в декілька простих кроків розгорнути сервер для підключення будь якого поштового клієнта, сумісного з протоколами IMAP / SMTP.
* Працює без залежності від центрального серверу та виділеної адреси IP.
* Для транспорту даних використовує вбудований вузол Yggdrasil, не потребує його окремого встановлення а також може ізольовано працювати поряд з ним.
* Трафік, що передається - захищений і не потребує додаткового шифрування TLS.

З коробки, являє собою сервер, підключитись до якого можна через поштовий клієнт типу Thunderbird або DeltaChat.

Утім, від класичних поштових серверів відрізняється протоколом транспорту, тому не є сумісним зі звичайними скриньками і працює у власній мережі.

Yggmail варто сприймати саме як месенджер, оскільки він має тільки спільний поштовий інтерфейс IMAP / SMTP але іншу модель транспорту.

## Встановлення

Yggmail знаходиться на стадії розробки, тому для встановлення будемо збирати з початкового коду на останній версії Go:

=> install-latest-golang-version-on-debian-linux.gmi Встановлення останньої версії Go в Debian

Збірка Yggmail виконується наступною командою в теці і користувачем, від якого планується робота з поштою:

```
cd ~
go install github.com/neilalexander/yggmail/cmd/yggmail@latest
```

Наступним кроком, ініціюємо новий профіль:

```
yggmail -password
```

Записуємо згенеровану адресу в полі "Mail address", на неї будуть отримуватись листи і вона вказується при підключенні поштового клієнта.

Профіль користувача буде збережено до файлу "~/yggmail.db" - його можна використовувати для резервного копіювання пошти.
Щоб вказати альтернативний шлях, вказується атрибут "-database=/path/to/yggmail.db".

Довідка доступна командою:

```
yggmail -help
```

## Запуск

Запуск відбувається однойменною командою, утім декілька слів про режими підключень:

* Мультикаст
* Підключення через певний публічний пір (https://publicpeers.neilalexander.dev)
* Обидва варіанти

Відповідно:

```
yggmail -multicast
yggmail -peer=tls://...
yggmail -multicast -peer=tls://...
```

## Автозапуск

Yggmail отримує пошту тільки тоді, коли він працює та підключений до мережі.
Якщо вузол отримувача недосяжний, лист переміщується в до черги очікування і буде надіслано як тільки зв'язок між вузлами відновиться.

Тому зручно створити системний сервіс з автозапуском:

``` /etc/systemd/system/yggmail.service
[Unit]
Description=Yggmail
After=network-online.target

[Service]
Type=simple
ExecStart=/home/user/go/bin/yggmail -peer=tcp://... 2>&1
Restart=always

[Install]
WantedBy=multi-user.target
```

Активуємо сервіс:

```
systemctl daemon-reload
systemctl enable yggmail
systemctl start yggmail
```

Перевіряємо:

```
netstat -tulpn | grep LISTEN
```

## Підключення поштового клієнта

Yggmail прослуховує порти:

* 1025 - SMTP / TCP
* 1143 - IMAP / TCP

В залежності від поштового клієнта, при створенні нового підключення скриньки, вказуються наступні дані:

* Логін - адреса, наприклад "123abc@yggmail"
* Пароль - пароль, вказаний при виконанні команди "yggmail -password"
* SMTP сервер - localhost
* SMTP порт - 1025
* IMAP сервер - localhost
* IMAP порт - 1143

Якщо сервер працює на віддаленому VPS, на ньому потрібно відкрити відповідні порти, а "localhost" замінити на його IP.

Єдиною рекомендацією можна додати, що не варто відправляти пошту самому собі для тестування, наразі це не працює.
Щоб перевірити роботу Yggmail - відправляйте пошту з іншого вузла або залиште вашу адресу в коментарях - можливо хтось вам відповість!

## Посилання

=> https://github.com/neilalexander/yggmail Проєкт на GitHub
=> https://matrix.to/#/#yggmail:matrix.org Канал в Matrix

## Дивіться також

=> yggdrasil-is-network-with-distributed-routing.gmi Yggdrasil - мережа з децентралізованим роутингом
