セルフホスト

要件

インストール スクリプトを実行する前に、次のものがあることを確認してください。

  • オペレーティング·システム: Linux ベースのサーバー (例: Ubuntu 22.04+)。
  • 資源: 1 つの vCPU と 2GB の RAM
  • ルートアクセス: コマンドを実行するための管理者権限。
  • ドメイン名: DNS 構成の準備が整ったカスタム ドメイン。
  • クリーンIP: ブラックリストをチェックして、サーバーにスパムの評判がないクリーンな IP アドレスがあることを確認します。詳細情報 ここ.

[!TIP] 当社のリストをご覧ください 素晴らしいメールサーバープロバイダー

クラウド初期化 / ユーザーデータ

ほとんどのクラウド ベンダーは、仮想プライベート サーバー (VPS) がプロビジョニングされるときに cloud-init 構成をサポートしています。これは、スクリプトの初期セットアップ ロジックで使用するために事前にいくつかのファイルと環境変数を設定するための優れた方法であり、スクリプトの実行中に追加情報を求めるプロンプトを表示する必要がなくなります。

オプション

  • EMAIL - EMAIL certbot の有効期限リマインダーに使用される環境変数
  • DOMAIN - セルフホスティング設定に使用するカスタムドメイン
  • AUTH_BASIC_USERNAME - サイトを保護するために初回セットアップ時に使用するユーザー名
  • AUTH_BASIC_PASSWORD - サイトを保護するために初回セットアップ時に使用されるパスワード
  • /root/.cloudflare.ini - (Cloudflareユーザーのみ)DNS設定のためにcertbotが使用するcloudflare設定ファイル。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
  • 初期設定: 最新の転送メール コードをダウンロードし、環境を構成し、カスタム ドメインの入力を求め、必要なすべての証明書、キー、シークレットを設定します。
  • セットアップのバックアップ: 安全なリモート ストレージとして S3 互換ストアを使用して mongoDB と redis をバックアップする cron を設定します。それとは別に、安全で暗号化されたバックアップのために変更があった場合は、ログイン時に sqlite がバックアップされます。
  • セットアップのアップグレード: インフラストラクチャ コンポーネントを安全に再構築して再起動する夜間更新を探す cron を設定します。
  • 証明書の更新: Certbot / lets encryptはSSL証明書に使用され、キーは3か月ごとに期限切れになります。これにより、ドメインの証明書が更新され、関連するコンポーネントが使用するために必要なフォルダーに配置されます。 重要なファイルパス
  • バックアップから復元: mongodb と redis をトリガーしてバックアップ データから復元します。

初期設定(オプション1)

オプションを選択 1. Initial setup 始めます。

完了すると成功メッセージが表示されます。 docker ps 見る コンポーネントが起動しました。コンポーネントの詳細については以下を参照してください。

サービス

サービス名デフォルトポート説明
ウェブ443すべての管理者とのやり取りのためのWebインターフェース
API4000データベースを抽象化するAPIレイヤー
ブリーなしバックグラウンドジョブとタスクランナー
SMTP465/587送信メール用の SMTP サーバー
SMTPブリーなしSMTP バックグラウンドジョブ
MX2525受信メールとメール転送のためのメール交換
IMAP993/2993受信メールとメールボックス管理用の IMAP サーバー
POP3995/2995受信メールとメールボックス管理用の POP3 サーバー
3456SQLite データベースとのやり取りのための SQLite サーバー
SQLite ブリーなしSQLite バックグラウンドジョブ
カルダブ5000カレンダー管理用のCalDAVサーバー
モンゴDB27017ほとんどのデータ管理にMongoDBデータベースを使用
レディス6379キャッシュと状態管理のためのRedis
なし暗号化されたメールボックス用の SQLite データベース

重要なファイルパス

注記: ホストパス 以下は相対的である /root/forwardemail.net/self-hosting/.

成分ホストパスコンテナパス
モンゴDB./mongo-backups/backups
レディス./redis-data/data
スクライト./sqlite-data/mnt/{SQLITE_STORAGE_PATH}
環境変数ファイル./.env/app/.env
SSL 証明書/キー./ssl/app/ssl/
秘密鍵./ssl/privkey.pem/app/ssl/privkey.pem
フルチェーン証明書./ssl/fullchain.pem/app/ssl/fullchain.pem
認定CA./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バウンス<ドメイン名>自動車
CNAMEiマップ<ドメイン名>自動車
CNAMEMX<ドメイン名>自動車
CNAMEポップ3<ドメイン名>自動車
CNAMESMTP<ドメイン名>自動車
MX"@"、"."、または空白mx.<ドメイン名> (優先度 0)自動車
TXT"@"、"."、または空白「v=spf1a-すべて」自動車
逆DNS / PTRレコード

逆 DNS (rDNS) または逆ポインター レコード (PTR レコード) は、電子メールを送信するサーバーの正当性を確認するのに役立つため、電子メール サーバーにとって不可欠です。各クラウド プロバイダーはこれを異なる方法で実行するため、ホストと IP を対応するホスト名にマップするための「逆 DNS」の追加方法を調べる必要があります。プロバイダーのネットワーク セクションにある可能性が高いです。

ポート25がブロックされました

一部の ISP およびクラウド プロバイダーは、悪意のある行為者を避けるために 25 をブロックします。SMTP/送信メール用にポート 25 を開くには、サポート チケットを提出する必要がある場合があります。

オンボーディング

  1. ランディング ページを開く https://<domain_name> に移動し、<domain_name> を DNS 設定で構成されたドメインに置き換えます。メール転送ランディング ページが表示されます。

  2. ログインしてドメインを登録する

  • 有効なメールアドレスとパスワードでサインインしてください。
  • 設定するドメイン名を入力します (DNS 構成と一致する必要があります)。
  • 指示に従って必要なものを追加してください MXTXT 検証のための記録。
  1. 完全なセットアップ
  • 確認が完了したら、「エイリアス」ページにアクセスして最初のエイリアスを作成します。
  • オプションで設定 送信メール用の SMTP の中に ドメイン設定これには追加の DNS レコードが必要です。

[!NOTE] サーバー外部に情報は送信されません。セルフホスト オプションと初期アカウントは、ドメイン、エイリアス、および関連する電子メール構成を管理するための管理者ログインと Web ビュー専用です。

テスト

最初のエイリアスを作成する

  1. エイリアス ページに移動します エイリアス管理ページを開きます:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. 新しいエイリアスを追加する
  • クリック エイリアスを追加 (右上)。
  • エイリアス名を入力し、必要に応じて電子メール設定を調整します。
  • (オプション)有効にする IMAP/POP3/CalDAV チェックボックスを選択してサポートしてください。
  • クリック エイリアスを作成します。
  1. パスワードを設定する
  • クリック パスワードの生成 安全なパスワードを作成します。
  • このパスワードは、電子メール クライアントにログインするために必要になります。
  1. メールクライアントを設定する
  • Thunderbird などの電子メール クライアントを使用します。
  • エイリアス名と生成されたパスワードを入力します。
  • 設定する IMAPSMTP それに応じて設定します。
メールサーバーの設定

ユーザー名: <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 レコード。

例: 次のような 2 つのチャレンジが表示される場合があります: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

DNS 伝播が完了していない可能性もあります。次のようなツールを使用できます。 https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>これにより、TXT レコードの変更を反映する必要があるかどうかがわかります。また、ホスト上のローカル DNS キャッシュがまだ古い値を使用しているか、最近の変更が反映されていない可能性もあります。

もう一つの選択肢は、CerbotのDNSの自動変更を使用する方法です。 /root/.cloudflare.ini 初期 VPS セットアップ時に cloud-init / user-data に API トークンを含むファイルを追加するか、このファイルを作成してスクリプトを再度実行します。これにより、DNS の変更とチャレンジの更新が自動的に管理されます。

What is the basic auth username and password

セルフホスティングの場合、簡単なユーザー名でブラウザのネイティブ認証ポップアップを初めて表示します(admin)とパスワード(初期設定時にランダムに生成されます)。これは、自動化やスクレーパーが何らかの理由でウェブエクスペリエンスで最初のサインアップを先取りした場合に備えて保護するために追加したものです。このパスワードは、初期設定後に .env ファイル AUTH_BASIC_USERNAMEAUTH_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 ファイルが正しく構成されていません。

ウェブUIでは、 /admin/emails/admin/logs それぞれ送信メール ログとエラー ログ用です。

Why are my outgoing emails timing out

MX サーバーへの接続時に「接続がタイムアウトしました...」などのメッセージが表示される場合は、ポート 25 がブロックされていないか確認する必要があります。ISP またはクラウド プロバイダーがデフォルトでこれをブロックするのはよくあることです。その場合、これを開くにはサポートに問い合わせるか、チケットを提出する必要があります。

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

ぜひご覧ください よくある質問はこちら.

mxツールボックス

Google ポストマスター ツール

サーバーの IP アドレスを使用して、次のサイトがブラックリストに登録されているかどうかを確認します。残念ながら、一般的なクラウド プロバイダーでは、電子メール スパムの使用により IP の評判に問題が発生することは珍しくありません。IP がブラックリストに登録されている場合は、新しいサーバーを立ち上げて新しい IP アドレスを確認することをお勧めします。

スパムハウス

スパム