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

Установка 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
Автор
Редакция

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство