devzone.org.ua/post/yggmail-mesendzer-z-poshtovym-interfeysom.md
2025-11-01 14:28:20 +02:00

118 lines
No EOL
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Yggmail - месенджер з поштовим інтерфейсом
[Yggmail](https://github.com/neilalexander/yggmail) - це дочірній проєкт від розробників [Yggdrasil](https://devzone.org.ua/post/yggdrasil-mereznii-protokol-z-decentralizovanim-routingom), написаний на Go та має відкритий код. Дозволяє в декілька простих кроків розгорнути сервер для підключення будь якого поштового клієнта, сумісного з протоколами IMAP / SMTP. Працює без залежності від центрального серверу та виділеної адреси IP.
Для транспорту даних використовує вбудований вузол Yggdrasil, не потребує його окремого встановлення а також може ізольовано працювати поряд з ним. Трафік, що передається - захищений і не потребує додаткового шифрування TLS.
З коробки, являє собою сервер, підключитись до якого можна через поштовий клієнт типу Thunderbird або [DeltaChat](https://delta.chat/uk/). Утім, від класичних поштових серверів відрізняється протоколом транспорту, тому не є сумісним зі звичайними скриньками і працює у власній мережі. Yggmail варто сприймати саме як месенджер, оскільки він має тільки спільний поштовий інтерфейс IMAP / SMTP але іншу модель транспорту.
## Встановлення
Yggmail знаходиться на стадії розробки, тому для встановлення будемо збирати з початкового коду на останній версії Go.
Про те, як встановити останню версію Go в Debian читайте [тут](https://devzone.org.ua/post/vstanovlennia-ostannyoyi-versiyi-go-v-debian).
Збірка Yggmail виконується наступною командою в теці і користувачем, від якого планується робота з поштою:
```
cd ~
go install github.com/neilalexander/yggmail/cmd/yggmail@latest
```
Так як я користуюсь `systemd`, встановлюю бінарний файл до системної локації:
``` bash
install go/bin/yggmail /usr/local/bin/yggmail
```
* після цього, теоретично, теку `~/go` можна видалити
Наступним кроком, ініціюємо новий профіль:
```
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]
After=network.target
Wants=network.target
[Service]
User=yggmail
Group=yggmail
Type=simple
WorkingDirectory=/home/yggmail
ExecStart=/usr/local/bin/yggmail -peer=tls://...
StandardOutput=file:///home/yggmail/debug.log
StandardError=file:///home/yggmail/error.log
[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 - відправляйте пошту з іншого вузла або залиште вашу адресу в коментарях - можливо хтось вам відповість!
## Посилання
* [Проєкт на GitHub](https://github.com/neilalexander/yggmail)
* [Канал в Matrix](https://matrix.to/#/#yggmail:matrix.org)