Самостоятельно размещенный

Требования

Перед запуском скрипта установки убедитесь, что у вас есть следующее:

  • Операционная система: Сервер на базе Linux (например, Ubuntu 22.04+).
  • Ресурсы: 1 vCPU и 2 ГБ ОЗУ
  • Доступ с правами root: Административные привилегии для выполнения команд.
  • Доменное имя: Пользовательский домен, готовый к настройке DNS.
  • Чистый IP: Убедитесь, что ваш сервер имеет чистый IP-адрес без предыдущей репутации спама, проверив черные списки. Дополнительная информация здесь.

[!TIP] Посмотрите наш список потрясающие поставщики почтовых серверов

Cloud-init / Пользовательские данные

Большинство поставщиков облачных услуг поддерживают конфигурацию cloud-init для случаев, когда предоставляется виртуальный частный сервер (VPS). Это отличный способ заранее задать некоторые файлы и переменные среды для использования в начальной настройке скриптов, что позволит обойти необходимость запрашивать дополнительную информацию во время работы скрипта.

Параметры

  • EMAIL - EMAIL переменная окружения, используемая для напоминаний об истечении срока действия certbot
  • DOMAIN - пользовательский домен, используемый для настройки собственного хостинга
  • AUTH_BASIC_USERNAME - имя пользователя, используемое при первой настройке для защиты сайта
  • AUTH_BASIC_PASSWORD - пароль, используемый при первой настройке для защиты сайта
  • /root/.cloudflare.ini - (только для пользователей Cloudflare)файл конфигурации cloudflare, используемый certbot для настройки DNS. Он требует, чтобы вы установили свой API-токен через dns_cloudflare_api_token. Читать далее здесь.

Пример:

#cloud-config
write_files:
  - path: /root/.cloudflare.ini
    content: |
      dns_cloudflare_api_token = "xxx"
    owner: root:root
    permissions: '0600'
  - path: /etc/profile.d/env.sh
    content: |
      export EMAIL="test@myemail.com"
      export DOMAIN="mydomain.com"

runcmd:

  • chmod +x /etc/profile.d/env.sh

Установить

Выполните следующую команду на своем сервере, чтобы загрузить и выполнить установочный скрипт:

bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

Отладочный скрипт установки

Добавьте DEBUG=true перед скриптом установки для подробного вывода:

DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

Подсказки

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • Начальная настройка: Загрузите последнюю версию кода пересылки электронной почты, настройте среду, запросите свой пользовательский домен и установите все необходимые сертификаты, ключи и секреты.
  • Настройка резервного копирования: Настроит cron для резервного копирования mongoDB и redis с использованием хранилища, совместимого с S3, для безопасного удаленного хранения. Отдельно будет выполняться резервное копирование sqlite при входе в систему, если есть изменения для безопасного зашифрованного резервного копирования.
  • Установка обновления: Настройте cron для поиска ночных обновлений, которые безопасно перестроят и перезапустят компоненты инфраструктуры.
  • Продлить сертификаты: Certbot / lets encrypt используется для SSL-сертификатов, а ключи истекают каждые 3 месяца. Это обновит сертификаты для вашего домена и поместит их в нужную папку для использования соответствующими компонентами. Смотреть важные пути к файлам
  • Восстановить из резервной копии: Запустит mongodb и redis для восстановления из резервной копии данных.

Начальная настройка (вариант 1)

Выбрать вариант 1. Initial setup для начала.

После завершения вы должны увидеть сообщение об успешном завершении. Вы даже можете запустить docker ps чтобы увидеть компоненты раскручиваются. Более подробная информация о компонентах ниже.

Услуги

Название услугиПорт по умолчаниюОписание
Веб443Веб-интерфейс для всех административных взаимодействий
API4000Уровень API для абстрагирования баз данных
БриНиктоФоновое задание и исполнитель задач
SMTP465/587SMTP-сервер для исходящей электронной почты
SMTP БриНиктоФоновое задание SMTP
MX2525Обмен почтой для входящей электронной почты и переадресация электронной почты
IMAP993/2993IMAP-сервер для входящей электронной почты и управления почтовыми ящиками
POP3995/2995POP3-сервер для входящей электронной почты и управления почтовыми ящиками
SQLite3456Сервер SQLite для взаимодействия с базами данных SQLite
SQLite БриНиктоФоновое задание SQLite
CalDAV5000Сервер CalDAV для управления календарем
МонгоБД27017База данных MongoDB для большинства задач управления данными
Редис6379Redis для кэширования и управления состоянием
SQLiteНиктоБаза данных SQLite для зашифрованных почтовых ящиков

Важные пути к файлам

Примечание: Путь к хосту ниже относительно /root/forwardemail.net/self-hosting/.

КомпонентПуть к хостуПуть контейнера
МонгоБД./mongo-backups/backups
Редис./redis-data/data
SQLite./sqlite-data/mnt/{SQLITE_STORAGE_PATH}
Файл Env./.env/app/.env
SSL-сертификаты/ключи./ssl/app/ssl/
Закрытый ключ./ssl/privkey.pem/app/ssl/privkey.pem
Сертификат полной цепочки./ssl/fullchain.pem/app/ssl/fullchain.pem
Сертифицированные центры сертификации./ssl/cert.pem/app/ssl/cert.pem
Закрытый ключ DKIM./ssl/dkim.key/app/ssl/dkim.key

[!ВАЖНО] Сохраните .env файл надежно. Это важно для восстановления в случае сбоя. Вы можете найти это в /root/forwardemail.net/self-hosting/.env.

Конфигурация

Первоначальная настройка DNS

В выбранном вами DNS-провайдере настройте соответствующие записи DNS. Обратите внимание на все, что находится в скобках (<>) является динамическим и его необходимо обновлять с учетом вашего значения.

ТипимяСодержаниеTTL
A"@", "." или пусто<ip_адрес>авто
CNAMEапи<имя_домена>авто
CNAMEкалдав<имя_домена>авто
CNAMEfe-отскоки<имя_домена>авто
CNAMEIMAP<имя_домена>авто
CNAMEмх<имя_домена>авто
CNAMEпоп3<имя_домена>авто
CNAMESMTP-протокол<имя_домена>авто
MX"@", "." или пустоmx.<имя_домена> (приоритет 0)авто
TXT"@", "." или пусто"v=spf1 a -все"авто
Обратная запись DNS/PTR

Обратные DNS (rDNS) или записи обратного указателя (записи PTR) необходимы для серверов электронной почты, поскольку они помогают проверить легитимность сервера, отправляющего электронное письмо. Каждый поставщик облачных услуг делает это по-разному, поэтому вам нужно будет поискать, как добавить «Обратный DNS» для сопоставления хоста и IP с соответствующим именем хоста. Скорее всего, в сетевом разделе провайдера.

Порт 25 заблокирован

Некоторые интернет-провайдеры и поставщики облачных услуг блокируют порт 25, чтобы избежать злоумышленников. Вам может потребоваться подать заявку в службу поддержки, чтобы открыть порт 25 для SMTP / исходящей почты.

Адаптация

  1. Откройте целевую страницу Перейдите на https://<domain_name>, заменив <domain_name> на домен, настроенный в настройках DNS. Вы должны увидеть целевую страницу Forward Email.

  2. Войдите в систему и подключите свой домен

  • Войдите, используя действительный адрес электронной почты и пароль.
  • Введите доменное имя, которое вы хотите настроить (оно должно соответствовать конфигурации DNS).
  • Следуйте инструкциям, чтобы добавить необходимые MX а также TXT записи для проверки.
  1. Полная настройка
  • После проверки перейдите на страницу «Псевдонимы», чтобы создать свой первый псевдоним.
  • При желании можно настроить SMTP для исходящей электронной почты в Настройки домена. Для этого требуются дополнительные записи DNS.

[!ПРИМЕЧАНИЕ] Никакая информация не отправляется за пределы вашего сервера. Вариант с самостоятельным размещением и начальная учетная запись предназначены только для входа администратора и веб-просмотра для управления доменами, псевдонимами и связанными конфигурациями электронной почты.

Тестирование

Создание вашего первого псевдонима

  1. Перейдите на страницу псевдонимов Откройте страницу управления псевдонимами:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. Добавить новый псевдоним
  • Нажмите Добавить псевдоним (вверху справа).
  • Введите псевдоним и при необходимости измените настройки электронной почты.
  • (Необязательно) Включить IMAP/POP3/CalDAV поддержки, установив флажок.
  • Нажмите Создать псевдоним.
  1. Установить пароль
  • Нажмите Создать пароль чтобы создать надежный пароль.
  • Этот пароль потребуется для входа в ваш почтовый клиент.
  1. Настройте свой почтовый клиент
  • Используйте почтовый клиент, например Thunderbird.
  • Введите псевдоним и сгенерированный пароль.
  • Настройте IMAP а также SMTP настройки соответственно.
Настройки почтового сервера

Имя пользователя: <alias name>

ТипИмя хостаПортБезопасность соединенияАутентификация
SMTPsmtp.<имя_домена>465SSL / TLSОбычный пароль
IMAPimap.<имя_домена>993SSL / TLSОбычный пароль

Отправка/получение вашего первого электронного письма

После настройки вы сможете отправлять и получать электронную почту на свой только что созданный и размещенный на собственном сервере адрес электронной почты!

Обслуживание

How do I backup my data

Следуйте за установить скрипт и выбирай option 2 в подсказке.

How do I renew my certificates

Следуйте за установить скрипт и выбирай option 3 в подсказке.

How do I upgrade to the latest forward email code

Следуйте за установить скрипт и выбирай option 4 в подсказке.

How do I restore from a backup

Следуйте за установить скрипт и выбирай option 6 в подсказке.

Поиск неисправностей

Why is the certbot acme challenge failing

Наиболее распространенной ошибкой является то, что certbot / letsencrypt иногда запрашивает 2 проблемы. Вам нужно обязательно добавить BOTH txt-записи.

Пример: Вы можете увидеть два вызова, подобных этому: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

Также возможно, что распространение DNS не завершено. Вы можете использовать такие инструменты, как: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. Это даст вам представление о том, следует ли отражать изменения в вашей записи TXT. Также возможно, что локальный кэш DNS на вашем хосте все еще использует старое, устаревшее значение или не отразил последние изменения.

Другой вариант — использовать автоматизированные изменения DNS с помощью cerbot, установив /root/.cloudflare.ini файл с токеном api в вашем cloud-init / user-data при начальной настройке VPS или создайте этот файл и запустите скрипт снова. Это автоматически будет управлять изменениями DNS и обновлениями вызовов.

What is the basic auth username and password

Для самостоятельного размещения мы добавляем всплывающее окно первоначальной аутентификации браузера с простым именем пользователя (admin) и пароль (случайно генерируется при первоначальной настройке). Мы просто добавляем это в качестве защиты на случай, если автоматизация/скрейперы каким-то образом опередят вас при первой регистрации в веб-опыте. Вы можете найти этот пароль после первоначальной настройки в вашем .env файл под AUTH_BASIC_USERNAME а также AUTH_BASIC_PASSWORD.

How do I know what is running

Вы можете запустить docker ps чтобы увидеть все работающие контейнеры, которые запускаются из docker-compose-self-hosting.yml файл. Вы также можете запустить docker ps -a чтобы увидеть все (включая неработающие контейнеры).

How do I know if something isn't running that should be

Вы можете запустить docker ps -a чтобы увидеть все (включая контейнеры, которые не запущены). Вы можете увидеть журнал выхода или примечание.

How do I find logs

Вы можете получить больше журналов через docker logs -f <container_name>. Если что-то и вышло, то это, скорее всего, связано с .env файл настроен неправильно.

В веб-интерфейсе вы можете просматривать /admin/emails а также /admin/logs для журналов исходящей электронной почты и журналов ошибок соответственно.

Why are my outgoing emails timing out

Если вы видите сообщение типа Connection timed out при подключении к MX-серверу..., вам, возможно, следует проверить, не заблокирован ли порт 25. Обычно интернет-провайдеры или поставщики облачных услуг блокируют его по умолчанию, и вам, возможно, придется обратиться в службу поддержки или подать тикет, чтобы его открыть.

What tool(s) should I use to test email configuration best practices and IP reputation

Взгляните на наш Часто задаваемые вопросы здесь.

mxtoolbox

инструменты почтового мастера google

Используйте IP-адрес вашего сервера для проверки следующих сайтов на наличие их в черном списке. К сожалению, у распространенных облачных провайдеров нередко возникают проблемы с репутацией IP из-за использования спама по электронной почте. Если вы видите свой IP в черном списке, рекомендуется запустить новый сервер и проверить новый IP-адрес.

спамхаус

спам