# 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)