SimpleLogin — это легкий и простой в использовании сервер псевдонимов, который позволяет создавать постоянные и анонимные учетные записи электронной почты без создания новых почтовых ящиков. В этой статье показано, как установить сервер SimpleLogin в Ubuntu и создать анонимные псевдонимы электронной почты для использования в Интернете.
Подготовка системы
Предположение: В этой статье предполагается, что вы устанавливаете Простой вход на VPS с объемом опе
Contents
Подготовка системы
ГБ. Также предполагается, что у вас есть активное доменное имя от регистратора DNS.Для начала импортируйте ключ подписи проекта Docker на свой компьютер:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
Создайте файл репозитория для проекта Docker:
sudo nano /etc/apt/sources.list.d/docker.list
Напишите следующую строку кода внутри файла репозитория:
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable
Обновите репозитории вашего компьютера, выполнив следующую команду:
sudo apt update && sudo apt upgrade
Установка зависимостей для SimpleLogin
Установите зависимости Docker и SimpleLogin в вашей системе:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx dnsutils postfix postfix-pgsql
Выберите Интернет-сайт, когда мастер установки Postfix запросит тип конфигурации вашего почтового сервера.
Нажмите Enter, чтобы подтвердить значение «Системное почтовое имя» по умолчанию.
Убедитесь, что на вашем компьютере запущен «основной» пакет Snap:
sudo snap install core
Установите пакет оснастки certbot от Electronic Frontier Foundation (EFF):
sudo snap install certbot --classic
Убедитесь, что брандмауэр вашей системы не блокирует ни один из портов для SimpleLogin:
sudo ufw allow 25,80,443/tcp
Подготовка записей DNS
Перейдите к регистратору своего домена и создайте новую запись «A», указывающую на IPv4-адрес вашего компьютера. Установите в качестве значения имени хоста субдомен, который вы хотите использовать для своего экземпляра SimpleLogin.
Добавьте запись «MX» для своего корневого домена с целевым именем хоста, установленным для вашего поддомена SimpleLogin.
Создайте запись «TXT» для корневого домена и установите для нее следующее значение:
v=spf1 mx ~all
Создайте другую запись «TXT» для субдомена «_dmarc», затем установите для нее следующее значение:
v=DMARC1; p=quarantine; adkimПодготовка записей DNS
Откройте сеанс терминала, затем сгенерируйте пару ключей DKIM с помощью OpenSSL:
openssl genrsa -out dkim.key -traditional 1024 openssl rsa -in dkim.key -pubout -out dkim.pub.key
Выполните следующую команду и скопируйте ее результат в системный буфер обмена. Это сценарий sed, который разработчики используют для извлечения открытого ключа DKIM из его ключевого файла:
sed "s/-----BEGIN PUBLIC KEY-----/v=DKIM1; k=rsa; p=/" $(pwd)/dkim.pub.key | sed "s/-----END PUBLIC KEY-----//" | tr -d '\n' | sed -e '$a\'
Создайте запись «TXT» для поддомена «dkim._domainkey», затем установите вывод предыдущей команды в качестве ее значения.
Полезно знать: узнайте больше о DNS и серверах имен от использование копания в Linux .
Создание базы данных Postgres
Помимо использования специальных записей DNS, SimpleLogin также использует PostgresDB для управления псевдонимами электронной почты. Чтобы это настроить, сначала создайте подкаталоги для контейнера SimpleLogin Docker:
mkdir -p ~/sl/{pgp,db,upload}
Запустите виртуальную сеть с помощью Docker на своем сервере:
sudo docker network create -d bridge \ --subnet=10.0.0.0/24 \ --gateway=10.0.0.1 \ sl-network
Вставьте следующую команду в новый сеанс терминала:
sudo docker run -d \ --name sl-db \ -e POSTGRES_PASSWORD=YOUR-RANDOM-PASSWORD-HERE \ -e POSTGRES_USER=postgres \ -e POSTGRES_DB=simplelogin \ -p 127.0.0.1:5432:5432 \ -v $(pwd)/sl/db:/var/lib/postgresql/data \ --restart always \ --network="sl-network" \ postgres:12.1
Измените значение переменной «POSTGRES_PASSWORD», указав длинную произвольную текстовую строку.
Примечание. Эту случайную строку можно сгенерировать, запустив: cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1
.
Запустите модифицированную команду Docker, чтобы запустить базу данных.
Настройка Postfix для SimpleLogin
Начните с удаления файла конфигурации по умолчанию для Postfix, затем создайте пустой файл с тем же именем в вашем любимом текстовом редакторе:
sudo rm /etc/postfix/main.cf &&aСоздание базы данных Postgres
o /etc/postfix/main.cf
Вставьте следующий блок кода в новый файл конфигурации. Это шаблон Postfix из репозитория разработчиков, который я изменил, чтобы выделить части, в которые вы добавите доменное имя вашего сервера:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no append_dot_mydomain = no readme_directory = no compatibility_level = 2 smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_tls_security_level = may smtpd_tls_security_level = may alias_maps = hash:/etc/aliases mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.0.0.0/24 mydestination = myhostname = SUBDOMAIN.YOUR-ROOT.DOMAIN mydomain = YOUR-ROOT.DOMAIN myorigin = YOUR-ROOT.DOMAIN relay_domains = pgsql:/etc/postfix/pgsql-relay-domains.cf transport_maps = pgsql:/etc/postfix/pgsql-transport-maps.cf smtpd_delay_reject = yes smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname, permit smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_unknown_sender_domain, permit smtpd_recipient_restrictions = reject_unauth_pipelining, reject_non_fqdn_recipient, reject_unknown_recipient_domain, permit_mynetworks, reject_unauth_destination, reject_rbl_client zen.spamhaus.org=127.0.0.[2..11], reject_rbl_client bl.spamcop.net=127.0.0.2, permit
Замените значение «myhostname» на адрес вашего веб-приложения, затем обновите значения «mydomain» и «myorigi
Настройка Postfix для SimpleLogin
ng="async" src="https://saintist.ru/wp-content/uploads/2024/05/create-anonymous-email-aliases-simplelogin-09-set-domain-postfix-config.jpg" alt="Терминал, выделяющий имя хоста и блок домена для файла конфигурации Postfix.">Связывание Postgres с Postfix
Создайте новый файл «pgsql-relay-domains.cf» в «/etc/postfix». Это будет служить связующим звеном между Postfix и Postgres:
sudo nano /etc/postfix/pgsql-relay-domains.cf
Вставьте следующий блок кода в новый файл конфигурации:
hosts = localhost user = postgres password = DATABASE-PASSWORD dbname = simplelogin query = SELECT domain FROM custom_domain WHERE domain='%s' AND verified=true UNION SELECT domain FROM public_domain WHERE domain='%s' UNION SELECT '%s' WHERE '%s' = 'mydomain.com' LIMIT 1;
Замените «DATABASE-PASSWORD» на свой пароль Postgres.
Создайте новый файл «pgsql-transport-maps.cf» в том же каталоге:
sudo nano /etc/postfix/pgsql-transport-maps.cf
Вставьте следующий блок кода в новый файл конфигурации:
hosts = localhost user = postgres password = DATABASE-PASSWORD dbname = simplelogin query = SELECT 'smtp:127.0.0.1:20381' FROM custom_domain WHERE domain = '%s' AND verified=true UNION SELECT 'smtp:127.0.0.1:20381' FROM public_domain WHERE domain = '%s' UNION SELECT 'smtp:127.0.0.1:20381' WHERE '%s' = 'mydomain.com' LIMIT 1;
Как и в предыдущей конфигурации, замените «DATABASE-PASSWORD» на свой пароль Postgres.
Установка SimpleLogin
Перейдите в домашний каталог вашего пользователя, затем создайте файл среды для SimpleLogin.
cd && nano ./simplelogin.env
Напишите следующий блок кода внутри нового файла среды:
URL=https://SUBDOMAIN.YOUR-ROOT.DOMAIN EMAIL_DOMAIN=YOUR-ROOT.DOMAIN SUPPORT_EMAIL=support@YOUR-ROOT.DOMAIN EMAIL_SERVERS_WITH_PRIORITY=[(10, "SUBDOMAIN.YOUR-ROOT.DOMAIN.")] DB_URI=postgresql://postgres:DATABASE-PASSWORD@sl-db:5432/simplelogin FLASK_SECRET=ADD-A-NEW-RANDOM-STRING-HERE DISABLE_ALIAS_SUFFIX=1 DKIM_PRIVATE_KEY_PATH=/dkim.key GNUPGHOME=<Связывание Postgres с Postfix
>LOCAL_FILE_UPLOAD=1 POSTFIX_SERVER=10.0.0.1
Замените каждый экземпляр «SUBDOMAIN.YOUR-ROOT.DOMAIN» URL-адресом SimpleLogin.
Измените значение YOUR-ROOT.DOMAIN на корневой домен.
Замените переменную «DATABASE-PASSWORD» на свой пароль Postgres.
Сгенерируйте новую случайную строку и установите для нее значение «FLASK_SECRET»
Запуск Docker-контейнеров SimpleLogin
Когда все готово, вы можете загрузить и запустить Docker-контейнер SimpleLogin. Для начала импортируйте базу данных Postgres в вашу установку SimpleLogin:
sudo docker run --rm \ --name sl-migration \ -v $(pwd)/sl:/sl \ -v $(pwd)/sl/upload:/code/static/upload \ -v $(pwd)/dkim.key:/dkim.key \ -v $(pwd)/dkim.pub.key:/dkim.pub.key \ -v $(pwd)/simplelogin.env:/code/.env \ --network="sl-network" \ simplelogin/app:4.6.5-beta alembic upgrade head
Запустите Docker-конте
Установка SimpleLogin
и SimpleLogin:sudo docker run --rm \ --name sl-init \ -v $(pwd)/sl:/sl \ -v $(pwd)/simplelogin.env:/code/.env \ -v $(pwd)/dkim.key:/dkim.key \ -v $(pwd)/dkim.pub.key:/dkim.pub.key \ --network="sl-network" \ simplelogin/app:4.6.5-beta python init_app.py
Запустите контейнер Docker, который управляет интерфейсом приложения:
sudo docker run -d \ --name sl-app \ -v $(pwd)/sl:/sl \ -v $(pwd)/sl/upload:/code/static/upload \ -v $(pwd)/simplelogin.env:/code/.env \ -v $(pwd)/dkim.key:/dkim.key \ -v $(pwd)/dkim.pub.key:/dkim.pub.key \ -p 127.0.0.1:7777:7777 \ --restart always \ --network="sl-network" \ simplelogin/app:4.6.5-beta
Запустите контейнер, который обрабатывает серверную часть электронной почты для SimpleLogin:
sudo docker run -d \ --name sl-email \ -v $(pwd)/sl:/sl \ -v $(pwd)/sl/upload:/code/static/upload \ -v $(pwd)/simplelogin.env:/code/.env \ -v $(pwd)/dkim.key:/dkim.key \ -v $(pwd)/dkim.pub.key:/dkim.pub.key \ -p 127.0.0.1:20381:20381 \ --restart always \ --network="sl-network" \ simplelogin/app:4.6.5-beta python email_handler.py
Наконец, запустите контейнер, который управляет рутинными задачами системы SimpleLogin:
sudo docker run -d \ --name sl-job-runner \Запуск Docker-контейнеров SimpleLoginan>)/sl:/sl \ -v $(pwd)/sl/upload:/code/static/upload \ -v $(pwd)/simplelogin.env:/code/.env \ -v $(pwd)/dkim.key:/dkim.key \ -v $(pwd)/dkim.pub.key:/dkim.pub.key \ --restart always \ --network="sl-network" \ simplelogin/app:4.6.5-beta python job_runner.py
К вашему сведению: Docker — это больше, чем просто способ развертывания SimpleLogin. Узнайте, как можно быстро разместите свой собственный сайт WordPress с помощью Docker .
Создание обратного SSL-прокси с помощью Nginx
На данный момент SimpleLogin теперь работает на сервере с портом 7777. Чтобы получить к нему доступ, вам необходимо передать его исходящее соединение через обратный прокси-сервер SSL.
Создайте файл сайта для вашего экземпляра SimpleLogin:
sudo nano /etc/nginx/sites-available/simplelogin
Вставьте следующий блок кода в файл вашего сайта:
server { server_name SUBDOMAIN.YOUR-ROOT.DOMAIN; location / { proxy_pass http://127.0.0.1:7777; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } }
Создайте символическую ссылку для файла вашего сайта в «/etc/nginx/sites-enabled/»:
sudo ln -s /etc/nginx/sites-available/simplelogin /etc/nginx/sites-enabled/
Примените новые настройки, перезапустив демон Nginx:
sudo systemctl restart nginx
Зарегистрируйте свой экземпляр SimpleLogin в EFF, выполнив следующую команду:
sudo certbot register --agree-tos -m YOUR@EMAIL.ADDRESS
Запросите новый сертификат SSL для вашего обратного прокси:
sudo certbot --nginx -d SUBDOMAIN.YOUR-ROOT.DOMAIN
Откройте файл конфигурации Postfix с помощью вашего любимого текстового редактора:
sudo nano /etc/postfix/main.cf
Прокрутите вниз до переменных «smtpd_tls_cert_file» и «smtpd_tls_key_file» и замените их следующими строками кода:
smtpd_tls_cert_file=/etc/letsencrypt/live/SUBDOMAIN.YOUR-ROOT.DOMAIN/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/SUBDOMAIN.YOUR-ROOT.DOMAIN/privkey.pem
Проверьте, правильно ли работает ваш экземпляр SimpleLogin, открыв субдомен в браузере и создав новую учетную запись.
Создание псевдонимов электронной почты с помощью SimpleLogin
Вернитесь к сеансу терминала вашего сервера и откройте базу данных приложения:
docker exec -it sl-db psql -U postgres simplelogin
Чтобы включить премиум-статус для основной учетной записи, выполните следующую команду:
UPDATE users SET lifetime = TRUE; exit
Это гарантирует, что в вашей учетной записи не будет ограничений на количество псевдонимов, которые вы можете создать для своей электронной почты.
Чтобы создать свой первый псевдоним электронной почты, нажмите кнопку Новый пользовательский псевдоним на панели инструментов веб-приложения.
Примечание. Вы также можете создать псевдоним со случайным именем, нажав кнопку Случайный псевдоним.
Укажите запоминающееся имя для нового псевдоним
Создание обратного SSL-прокси с помощью Nginx
rong>.Проверьте, правильно ли работает ваш новый псевдоним электронной почты, отправив на него сообщение с другого адреса электронной почты.
Отправка электронных писем с псевдонима SimpleLogin
Помимо получения почты от псевдонима, SimpleLogin также поддерживает отправку сообщений через него. Для этого приложение создает «обратный псевдоним» для адреса назначения, на который вы можете отправить электронную почту.
Для этого нажмите кнопку Контакты на псевдониме, с которого вы хотите отправить электронное письмо. В моем случае я хочу отправить сообщение со своего адреса [email protected].
Укажите адрес электронной почты получателя, затем нажмите Создать обратный псевдоним.
Нажмите кнопку Копировать обратный псевдоним на новом контакте, а затем вставьте его в поле получателя вашего почтового клиента. Отправка сообщения на этот индивидуальный адрес позволит SimpleLogin замаскировать ваш настоящий адрес электронной почты псевдонимом получателя.
Размещение собственного сервера псевдонимов электронной почты с помощью SimpleLogin — это лишь один из шагов к восстановлению вашей цифровой конфиденциальности. Возьмите под контроль всю свою цепочку цифровых коммуникаций к размещение собственного почтового сервера с использованием Mail-in-a-Box .
Изображение предоставлено: Лукас Блазек через Unsplash и Простой вход на Github . Все изменения и скриншоты Рамсеса Реда.