Гид по технологиям

Установка Mailpile на Ubuntu 15.10 с Nginx в качестве обратного прокси

5 min read Email Security Обновлено 23 Nov 2025
Установка Mailpile на Ubuntu с Nginx
Установка Mailpile на Ubuntu с 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 --version

Mailpile требует библиотеку 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

Вывод команды mp: Mailpile слушает localhost:33411

В примере 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 предложит выбрать язык и установить пароль. Используйте надёжный пароль.

Экран приветствия Mailpile

Экран установки пароля Mailpile

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

Главная страница Mailpile после входа

Экран входа в 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).

Быстрый метод(мини-методология) развертывания

  1. Подготовка системы и установка зависимостей.
  2. Клонирование репозитория и создание virtualenv.
  3. Установка Python-зависимостей и тестовый запуск ./mp.
  4. Установка Nginx и создание SSL (или интеграция с Let’s Encrypt).
  5. Настройка proxy_pass и перезапуск Nginx.
  6. Проверка работы, настройка автозапуска и мониторинга.

Сниппет команд — шпаргалка

# базовые пакеты
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 или контейнер.
  • Следите за обновлениями безопасности операционной системы и зависимостей.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Сброс Samsung при заблокированном телефоне
Мобильные устройства

Сброс Samsung при заблокированном телефоне

Как разогнать монитор через NVIDIA Control Panel
Гайды

Как разогнать монитор через NVIDIA Control Panel

APC_INDEX_MISMATCH: как исправить BSOD в Windows
Инструкции

APC_INDEX_MISMATCH: как исправить BSOD в Windows

Как исправить ошибку Blink 1011
Техническая поддержка

Как исправить ошибку Blink 1011

Восстановление удалённых SMS на Samsung
Мобильные

Восстановление удалённых SMS на Samsung

Как сбросить Samsung планшет до заводских настроек
Руководство

Как сбросить Samsung планшет до заводских настроек