Samodzielnie hostowane

Wymagania

Przed uruchomieniem skryptu instalacyjnego upewnij się, że masz następujące elementy:

  • System operacyjny:Serwer oparty na systemie Linux (np. Ubuntu 22.04+).
  • Zasoby: 1 vCPU i 2 GB pamięci RAM
  • Dostęp do roota:Uprawnienia administracyjne do wykonywania poleceń.
  • Nazwa domeny:Niestandardowa domena gotowa do konfiguracji DNS.
  • Wyczyść IP: Upewnij się, że Twój serwer ma czysty adres IP bez wcześniejszej reputacji spamu, sprawdzając czarne listy. Więcej informacji Tutaj.

[!TIP] Zobacz naszą listę niesamowici dostawcy serwerów pocztowych

Cloud-init / Dane użytkownika

Większość dostawców chmury obsługuje konfigurację cloud-init na czas, gdy wirtualny serwer prywatny (VPS) jest dostarczany. To świetny sposób na wcześniejsze ustawienie niektórych plików i zmiennych środowiskowych do wykorzystania przez początkową logikę konfiguracji skryptów, co ominie potrzebę wyświetlania monitu podczas działania skryptu w celu uzyskania dodatkowych informacji.

Opcje

  • EMAIL - EMAIL zmienna środowiskowa używana do przypomnień o wygaśnięciu certbot
  • DOMAIN - domena niestandardowa używana do konfiguracji samodzielnego hostingu
  • AUTH_BASIC_USERNAME - nazwa użytkownika używana przy pierwszej konfiguracji w celu ochrony witryny
  • AUTH_BASIC_PASSWORD - passward używany przy pierwszej konfiguracji w celu ochrony witryny
  • /root/.cloudflare.ini - (Tylko dla użytkowników Cloudflare)plik konfiguracyjny cloudflare używany przez certbot do konfiguracji DNS. Wymaga ustawienia tokenu API za pomocą dns_cloudflare_api_token. Przeczytaj więcej Tutaj.

Przykład:

#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

Zainstalować

Uruchom następujące polecenie na swoim serwerze, aby pobrać i uruchomić skrypt instalacyjny:

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

Skrypt instalacyjny debugowania

Dodaj DEBUG=true przed skryptem instalacyjnym, aby uzyskać szczegółowe dane wyjściowe:

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

Monity

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • Konfiguracja początkowa: Pobierz najnowszy kod do przekazywania poczty e-mail, skonfiguruj środowisko, wyświetl monit o podanie własnej domeny i skonfiguruj wszystkie niezbędne certyfikaty, klucze i sekrety.
  • Konfiguracja kopii zapasowej: Skonfiguruje cron do tworzenia kopii zapasowych mongoDB i redis przy użyciu magazynu zgodnego z S3 w celu bezpiecznego, zdalnego przechowywania. Osobno sqlite będzie kopiowany zapasowo po zalogowaniu, jeśli nastąpią zmiany dotyczące bezpiecznych, szyfrowanych kopii zapasowych.
  • Konfiguracja aktualizacji: Skonfiguruj cron, który będzie wyszukiwał nocne aktualizacje, co umożliwi bezpieczne odbudowanie i ponowne uruchomienie komponentów infrastruktury.
  • Odnów certyfikaty: Certbot / lets encrypt jest używany do certyfikatów SSL, a klucze wygasają co 3 miesiące. To odnowi certyfikaty dla Twojej domeny i umieści je w odpowiednim folderze, aby powiązane komponenty mogły je wykorzystać. Zobacz ważne ścieżki plików
  • Przywróć z kopii zapasowej:Uruchomi mongodb i redis w celu przywrócenia danych z kopii zapasowej.

Konfiguracja początkowa (opcja 1)

Wybierz opcję 1. Initial setup zacząć.

Po zakończeniu powinieneś zobaczyć komunikat o powodzeniu. Możesz nawet uruchomić docker ps zobaczyć ten komponenty rozkręcone. Więcej informacji o komponentach poniżej.

Usługi

Nazwa usługiDomyślny portOpis
Sieć443Interfejs internetowy do wszystkich interakcji administracyjnych
API4000Warstwa API do abstrakcyjnych baz danych
BreeNicPraca w tle i wykonawca zadań
SMTP465/587Serwer SMTP dla poczty wychodzącej
SMTP BreeNicPraca w tle SMTP
MX2525Wymiana poczty dla poczty przychodzącej i przekazywanie poczty e-mail
IMAP993/2993Serwer IMAP do zarządzania pocztą przychodzącą i skrzynką pocztową
POP3995/2995Serwer POP3 do zarządzania pocztą przychodzącą i skrzynką pocztową
Sqlite3456Serwer SQLite do interakcji z bazami danych SQLite
SQLite BreeNicPraca w tle w programie SQLite
CalDAV5000Serwer CalDAV do zarządzania kalendarzem
MongoDB27017Baza danych MongoDB do większości zastosowań w zarządzaniu danymi
Redisa6379Redis do buforowania i zarządzania stanem
SqliteNicBazy danych SQLite dla szyfrowanych skrzynek pocztowych

Ważne ścieżki plików

Notatka: Ścieżka hosta poniżej jest w odniesieniu do /root/forwardemail.net/self-hosting/.

CzęśćŚcieżka hostaŚcieżka kontenera
MongoDB./mongo-backups/backups
Redisa./redis-data/data
Sqlite./sqlite-data/mnt/{SQLITE_STORAGE_PATH}
Plik env./.env/app/.env
Certyfikaty/klucze SSL./ssl/app/ssl/
Klucz prywatny./ssl/privkey.pem/app/ssl/privkey.pem
Pełny certyfikat łańcucha./ssl/fullchain.pem/app/ssl/fullchain.pem
Certyfikowani CA./ssl/cert.pem/app/ssl/cert.pem
Klucz prywatny DKIM./ssl/dkim.key/app/ssl/dkim.key

[!WAŻNE] Zapisz .env plik bezpiecznie. Jest to krytyczne dla odzyskania w przypadku awarii. Możesz to znaleźć w /root/forwardemail.net/self-hosting/.env.

Konfiguracja

Początkowa konfiguracja DNS

W wybranym przez siebie dostawcy DNS skonfiguruj odpowiednie rekordy DNS. Nie zanotuj niczego w nawiasach (<>) jest dynamiczny i wymaga aktualizacji zgodnie z Twoją wartością.

RodzajImięTreśćTTL
A„@”, „.” lub puste<adres_ip>automatyczny
CNAMEAPI<nazwa_domeny>automatyczny
CNAMEkaldav<nazwa_domeny>automatyczny
CNAMEfe-odbicia<nazwa_domeny>automatyczny
CNAMEimap<nazwa_domeny>automatyczny
CNAMEmx<nazwa_domeny>automatyczny
CNAMEpop3<nazwa_domeny>automatyczny
CNAMESmtp<nazwa_domeny>automatyczny
MX„@”, „.” lub pustemx.<nazwa_domeny> (priorytet 0)automatyczny
TXT„@”, „.” lub puste"v=spf1 a -wszystko"automatyczny
Odwrotny rekord DNS/PTR

Odwrotny DNS (rDNS) lub odwrotne rekordy wskaźnika (PTR records) są niezbędne dla serwerów poczty e-mail, ponieważ pomagają zweryfikować legalność serwera wysyłającego wiadomość e-mail. Każdy dostawca chmury robi to inaczej, więc musisz sprawdzić, jak dodać „Odwrotny DNS”, aby zmapować hosta i adres IP na odpowiadającą mu nazwę hosta. Najprawdopodobniej w sekcji sieciowej dostawcy.

Port 25 zablokowany

Niektórzy dostawcy usług internetowych i usług w chmurze blokują 25, aby uniknąć złych aktorów. Może być konieczne złożenie zgłoszenia pomocy technicznej w celu otwarcia portu 25 dla SMTP / poczty wychodzącej.

Proces wdrażania do firmy nowego pracownika

  1. Otwórz stronę docelową Przejdź do https://<nazwa_domeny>, zastępując <nazwa_domeny> domeną skonfigurowaną w ustawieniach DNS. Powinna zostać wyświetlona strona docelowa Forward Email.

  2. Zaloguj się i dołącz swoją domenę

  • Zaloguj się, podając prawidłowy adres e-mail i hasło.
  • Wprowadź nazwę domeny, którą chcesz skonfigurować (musi być zgodna z konfiguracją DNS).
  • Postępuj zgodnie z instrukcjami, aby dodać wymagane MX oraz TXT zapisy do weryfikacji.
  1. Zakończ konfigurację
  • Po weryfikacji wejdź na stronę Aliasy, aby utworzyć swój pierwszy alias.
  • Opcjonalnie skonfiguruj SMTP dla poczty wychodzącej w Ustawienia domeny. Wymaga to dodatkowych rekordów DNS.

[!NOTE] Żadne informacje nie są wysyłane poza Twój serwer. Opcja samodzielnego hostowania i początkowe konto są przeznaczone tylko do logowania administratora i widoku internetowego w celu zarządzania domenami, aliasami i powiązanymi konfiguracjami poczty e-mail.

Testowanie

Tworzenie pierwszego aliasu

  1. Przejdź do strony Aliasy Otwórz stronę zarządzania aliasami:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. Dodaj nowy alias
  • Trzask Dodaj alias (w prawym górnym rogu).
  • Wprowadź nazwę aliasu i dostosuj ustawienia poczty e-mail według potrzeb.
  • (Opcjonalnie) Włącz IMAP/POP3/CalDAV wsparcie poprzez zaznaczenie pola wyboru.
  • Trzask Utwórz alias.
  1. Ustaw hasło
  • Trzask Wygeneruj hasło aby utworzyć bezpieczne hasło.
  • To hasło będzie wymagane do zalogowania się do klienta poczty elektronicznej.
  1. Skonfiguruj swojego klienta poczty e-mail
  • Użyj klienta poczty e-mail, np. Thunderbird.
  • Wprowadź nazwę aliasu i wygenerowane hasło.
  • Skonfiguruj IMAP oraz SMTP ustawienia odpowiednio.
Ustawienia serwera e-mail

Nazwa użytkownika: <alias name>

RodzajNazwa hostaPortBezpieczeństwo połączeniaPoświadczenie
SMTPsmtp.<nazwa_domeny>465SSL / TLSNormalne hasło
IMAPimap.<nazwa_domeny>993SSL / TLSNormalne hasło

Wysyłanie/odbieranie pierwszej wiadomości e-mail

Po skonfigurowaniu będziesz mieć możliwość wysyłania i odbierania wiadomości e-mail na nowo utworzony i samodzielnie hostowany adres e-mail!

Konserwacja

How do I backup my data

Śledź skrypt instalacyjny i wybierz option 2 w monicie.

How do I renew my certificates

Śledź skrypt instalacyjny i wybierz option 3 w monicie.

How do I upgrade to the latest forward email code

Śledź skrypt instalacyjny i wybierz option 4 w monicie.

How do I restore from a backup

Śledź skrypt instalacyjny i wybierz option 6 w monicie.

Rozwiązywanie problemów

Why is the certbot acme challenge failing

Najczęstszą pułapką jest to, że certbot / letsencrypt czasami żąda 2 wyzwania. Musisz być pewien, że dodasz BOTH rekordy txt.

Przykład: Możesz zobaczyć dwa wyzwania takie jak to: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

Możliwe jest również, że propagacja DNS nie została ukończona. Możesz użyć narzędzi takich jak: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. To da ci pojęcie, czy zmiany w twoim rekordzie TXT powinny zostać odzwierciedlone. Możliwe jest również, że lokalna pamięć podręczna DNS na twoim hoście nadal używa starej, nieaktualnej wartości lub nie wykryła ostatnich zmian.

Inną opcją jest użycie automatycznych zmian DNS cerbota poprzez ustawienie /root/.cloudflare.ini plik z tokenem api w swoim cloud-init / user-data na początkowej konfiguracji VPS lub utwórz ten plik i uruchom skrypt ponownie. To automatycznie zarządza zmianami DNS i aktualizacjami wyzwań.

What is the basic auth username and password

W przypadku samodzielnego hostingu dodajemy pierwsze wyskakujące okienko uwierzytelniania przeglądarki z prostą nazwą użytkownika (admin) i hasło (losowo generowane podczas początkowej konfiguracji). Dodajemy to tylko jako zabezpieczenie na wypadek, gdyby automatyzacja/scrapery jakoś Cię wyprzedziły w kwestii pierwszej rejestracji w środowisku internetowym. Możesz znaleźć to hasło po początkowej konfiguracji w swoim .env złóż pod AUTH_BASIC_USERNAME oraz AUTH_BASIC_PASSWORD.

How do I know what is running

Możesz biegać docker ps aby zobaczyć wszystkie uruchomione kontenery, które są uruchamiane docker-compose-self-hosting.yml plik. Możesz także uruchomić docker ps -a aby zobaczyć wszystko (w tym kontenery, które nie są uruchomione).

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

Możesz biegać docker ps -a aby zobaczyć wszystko (w tym kontenery, które nie są uruchomione). Możesz zobaczyć dziennik wyjścia lub notatkę.

How do I find logs

Możesz uzyskać więcej dzienników za pośrednictwem docker logs -f <container_name>. Jeśli coś się wydarzyło, prawdopodobnie jest to związane z .env plik jest nieprawidłowo skonfigurowany.

W interfejsie internetowym możesz przeglądać /admin/emails oraz /admin/logs odpowiednio dla dzienników poczty wychodzącej i dzienników błędów.

Why are my outgoing emails timing out

Jeśli widzisz komunikat, taki jak Przekroczono limit czasu połączenia podczas łączenia się z serwerem MX..., być może musisz sprawdzić, czy port 25 jest zablokowany. Dostawcy usług internetowych lub dostawcy usług w chmurze często blokują to domyślnie, więc może być konieczne skontaktowanie się z pomocą techniczną / złożenie zgłoszenia, aby to otworzyć.

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

Zajrzyj na nasze FAQ tutaj.

skrzynka narzędziowa mx

narzędzia google postmaster

Użyj adresu IP swojego serwera, aby sprawdzić, czy poniższe witryny znajdują się na czarnej liście. Niestety, nie jest niczym niezwykłym, że dostawcy usług w chmurze mają problemy z reputacją IP z powodu używania spamu e-mailowego. Jeśli widzisz swój adres IP na czarnej liście, zaleca się uruchomienie nowego serwera i sprawdzenie nowego adresu IP.

dom ze spamem

spamowany