Установка Mailpile на Ubuntu 15.10 с Nginx в качестве обратного прокси
Введение
Mailpile — это open source почтовый клиент, ориентированный на шифрование и приватность пользователей. Он умеет создавать PGP-ключи внутри приложения и отправлять зашифрованные письма. В этом руководстве показан пошаговый процесс установки Mailpile на Ubuntu 15.10 и настройка Nginx как обратного прокси для безопасного доступа по HTTPS.
Коротко о терминах:
- PGP — стандарт шифрования электронной почты.
- GnuPG (gpg) — реализация PGP.
- Virtualenv — инструмент для изоляции окружения Python.
Важно: Ubuntu 15.10 — устаревшая версия; используйте современный LTS-дистрибутив для продакшн-серверов, если это возможно.
Что нужно заранее
- Сервер с Ubuntu 15.10 (64‑bit).
- Привилегии root или sudo.
- Доступ в интернет для установки пакетов и клонирования репозитория.
Шаг 1 — Установка зависимостей Mailpile
Mailpile написан на Python. В примере используется Python 2.7 и GnuPG 1.4.x.
Обновите базу пакетов и установите требуемые пакеты:
sudo apt-get update
sudo apt-get install gnupg openssl python-virtualenv python-pip python-lxml gitПроверьте версии Python и GnuPG:
python --version
gpg --versionMailpile требует библиотеку PIL (или её форки). Сначала установим системные зависимости для сборки изображений:
sudo apt-get install libjpeg62 libjpeg62-dev zlib1g-dev python-devПосле установки можно переходить к следующему шагу.
Шаг 2 — Установка и конфигурация Mailpile
Установим Mailpile в каталог /opt и создадим виртуальное окружение Python 2.7.
Клонируем репозиторий Mailpile:
cd /opt/
git clone --recursive https://github.com/mailpile/Mailpile.gitПерейдите в каталог проекта и создайте virtualenv с использованием Python 2.7:
cd /opt/Mailpile/
virtualenv -p /usr/bin/python2.7 --system-site-packages mailpile-envПояснения:
- -p указывает конкретную версию Python.
- –system-site-packages даёт доступ к глобальным пакетам внутри окружения.
- mailpile-env — имя каталога виртуального окружения.
Активируйте виртуальное окружение:
cd /opt/Mailpile/
source mailpile-env/bin/activateПодсказка: в оболочке должно появиться имя окружения, например:
(mailpile-env)root@server:/opt/Mailpile#Установите Python-зависимости проекта:
pip install -r requirements.txtЗапустите Mailpile для теста из корня проекта:
./mp
В примере Mailpile слушает на localhost:33411. Проверьте доступность с сервера:
curl -I localhost:33411Ожидаемый ответ при корректной работе:
HTTP/1.1 302 Found
Location: /setup/welcome/Примечание: пока запускайте Mailpile локально; внешние подключения обработает Nginx.
Шаг 3 — Установка Nginx
Установите Nginx:
sudo apt-get install nginxПроверьте, что Nginx слушает порт 80:
netstat -plntu | grep 80Шаг 4 — Создание самоподписанного SSL-сертификата
Перейдите в каталог конфигураций Nginx и создайте каталог для сертификатов:
cd /etc/nginx/
mkdir -p /etc/nginx/ssl/
cd ssl/Сгенерируйте самоподписанный сертификат (пример на 365 дней):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/mailpile.key -out /etc/nginx/ssl/mailpile.crtСделайте приватный ключ читаемым только для владельца:
chmod 600 mailpile.keyВажно: для публичного сервера используйте сертификат от доверенного центра сертификации (Let’s Encrypt и т.п.).
Шаг 5 — Настройка виртуального хоста Mailpile в Nginx
Создайте конфигурацию сайта в каталоге sites-available (обратите внимание на корректный путь):
cd /etc/nginx/sites-available/
touch mailpileОткройте файл mailpile в редакторе и вставьте следующую конфигурацию (замените server_name на ваш домен):
server {
# Mailpile Domain
server_name mail.mailpile.me;
client_max_body_size 20m;
# Nginx ports
listen 80;
listen 443 default ssl;
# SSL files
ssl_certificate /etc/nginx/ssl/mailpile.crt;
ssl_certificate_key /etc/nginx/ssl/mailpile.key;
# Redirect HTTP to HTTPS
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
# Proxy pass to Mailpile
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:33411;
proxy_read_timeout 90;
proxy_redirect http://localhost:33411 https://mail.mailpile.me;
}
}Активируйте сайт и перезапустите Nginx:
ln -s /etc/nginx/sites-available/mailpile /etc/nginx/sites-enabled/
systemctl restart nginxВажно: не останавливайте процесс Mailpile, если он запущен в активном виртуальном окружении.
Первый вход и настройка Mailpile
Откройте в браузере ваш домен (в примере https://mail.mailpile.me). При первом запуске Mailpile предложит выбрать язык и установить пароль. Используйте надёжный пароль.


После входа вы попадёте в интерфейс почты.



Отладка и распространённые проблемы
- Если curl возвращает другой статус — проверьте, что mp действительно запущен и прослушивает 127.0.0.1:33411.
- Если Nginx выдаёт 502 — проверьте, что proxy_pass соответствует адресу, на котором запущен Mailpile.
- Проверьте логи Nginx: /var/log/nginx/error.log и /var/log/nginx/access.log.
- Если в виртуальном окружении нет необходимых системных библиотек, pip install может завершиться с ошибкой; посмотрите вывод и установите недостающие -dev пакеты.
Меры безопасности и рекомендации
- Для публичного доступа используйте TLS от доверенного CA (Let’s Encrypt).
- Не храните приватные ключи в каталогах с открытым доступом. Разрешения 600 — обязательны для приватного ключа.
- Регулярно обновляйте операционную систему и пакеты безопасности.
- Рассмотрите запуск Mailpile под ограниченным системным пользователем и менеджером процессов (systemd) для управления автостаром и рестартами.
Альтернативные подходы
- Установка как системный сервис: упакуйте вызов ./mp в unit-файл systemd и запустите под отдельным пользователем.
- Контейнеризация: запуск Mailpile внутри Docker-контейнера и проксирование через Nginx на хосте.
- Использование готовых SSL (Let’s Encrypt) вместо самоподписанного сертификата для доверия браузером.
Контрольный список для администратора (роль: админ)
- Установлены зависимости и созданы dev-заголовки (libjpeg, zlib, python-dev).
- Создано и активировано virtualenv с Python 2.7.
- Mailpile успешно запускается локально и отвечает 302 на /setup/welcome/.
- Nginx настроен и проксирует запросы на localhost:33411.
- SSL установлен и ключы защищены правами доступа.
- Настроен автозапуск Mailpile (systemd) или процессный менеджер.
Критерии приёмки
- Mailpile отвечает на сервере по адресу https://ваш-домен/ и ведёт на страницу приветствия/входа.
- Соединение установлено по HTTPS с корректным сертификатом (для самоподписанного — браузер предупредит).
- Пользователь может создать пароль и авторизоваться.
- Nginx не выдаёт ошибок в логах при обычном использовании.
Когда этот подход не годится
- Если требуется поддержка современных версий Python/PIP или актуальная сборка Mailpile — исходник и поддержка могут требовать обновлений; рассмотрите альтернативные проекты или контейнеризацию.
- Если вы не хотите управлять TLS-сертификатами вручную — используйте готовые автоматические решения (Let’s Encrypt + certbot).
Быстрый метод(мини-методология) развертывания
- Подготовка системы и установка зависимостей.
- Клонирование репозитория и создание virtualenv.
- Установка Python-зависимостей и тестовый запуск ./mp.
- Установка Nginx и создание SSL (или интеграция с Let’s Encrypt).
- Настройка proxy_pass и перезапуск Nginx.
- Проверка работы, настройка автозапуска и мониторинга.
Сниппет команд — шпаргалка
# базовые пакеты
sudo apt-get update && sudo apt-get install -y gnupg openssl python-virtualenv python-pip python-lxml git libjpeg62 libjpeg62-dev zlib1g-dev python-dev nginx
# клонирование
cd /opt && git clone --recursive https://github.com/mailpile/Mailpile.git
# virtualenv
cd /opt/Mailpile && virtualenv -p /usr/bin/python2.7 --system-site-packages mailpile-env
source mailpile-env/bin/activate
pip install -r requirements.txt
./mp
# nginx enable site
sudo ln -s /etc/nginx/sites-available/mailpile /etc/nginx/sites-enabled/
sudo systemctl restart nginxЗаключение
Mailpile — удобный инструмент для тех, кто хочет собственный приватный почтовый клиент с поддержкой PGP. Установка на Ubuntu 15.10 требует Python 2.7 и GnuPG 1.4.x, но в большинстве случаев процесс прост: виртуальное окружение, установка зависимостей, тестовый запуск и проксирование через Nginx с TLS. Для продакшн‑развёртывания рекомендуется использовать актуальный дистрибутив, централизованное управление сертификатами и systemd для надёжности.
Ключевые советы:
- Используйте доверенные сертификаты для публичного доступа.
- Автоматизируйте запуск Mailpile через systemd или контейнер.
- Следите за обновлениями безопасности операционной системы и зависимостей.
Похожие материалы
Сброс Samsung при заблокированном телефоне
Как разогнать монитор через NVIDIA Control Panel
APC_INDEX_MISMATCH: как исправить BSOD в Windows
Как исправить ошибку Blink 1011