セルフホスト
インストール
要件
インストール スクリプトを実行する前に、次のものがあることを確認してください。
- オペレーティング·システム: 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インターフェース |
API | 4000 | データベースを抽象化するAPIレイヤー |
ブリー | なし | バックグラウンドジョブとタスクランナー |
SMTP | 465/587 | 送信メール用の SMTP サーバー |
SMTPブリー | なし | SMTP バックグラウンドジョブ |
MX | 2525 | 受信メールとメール転送のためのメール交換 |
IMAP | 993/2993 | 受信メールとメールボックス管理用の IMAP サーバー |
POP3 | 995/2995 | 受信メールとメールボックス管理用の POP3 サーバー |
の | 3456 | SQLite データベースとのやり取りのための SQLite サーバー |
SQLite ブリー | なし | SQLite バックグラウンドジョブ |
カルダブ | 5000 | カレンダー管理用のCalDAVサーバー |
モンゴDB | 27017 | ほとんどのデータ管理に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 | カルダブ | <ドメイン名> | 自動車 |
CNAME | feバウンス | <ドメイン名> | 自動車 |
CNAME | iマップ | <ドメイン名> | 自動車 |
CNAME | MX | <ドメイン名> | 自動車 |
CNAME | ポップ3 | <ドメイン名> | 自動車 |
CNAME | SMTP | <ドメイン名> | 自動車 |
MX | "@"、"."、または空白 | mx.<ドメイン名> (優先度 0) | 自動車 |
TXT | "@"、"."、または空白 | 「v=spf1a-すべて」 | 自動車 |
逆DNS / PTRレコード
逆 DNS (rDNS) または逆ポインター レコード (PTR レコード) は、電子メールを送信するサーバーの正当性を確認するのに役立つため、電子メール サーバーにとって不可欠です。各クラウド プロバイダーはこれを異なる方法で実行するため、ホストと IP を対応するホスト名にマップするための「逆 DNS」の追加方法を調べる必要があります。プロバイダーのネットワーク セクションにある可能性が高いです。
ポート25がブロックされました
一部の ISP およびクラウド プロバイダーは、悪意のある行為者を避けるために 25 をブロックします。SMTP/送信メール用にポート 25 を開くには、サポート チケットを提出する必要がある場合があります。
オンボーディング
-
ランディング ページを開く https://<domain_name> に移動し、<domain_name> を DNS 設定で構成されたドメインに置き換えます。メール転送ランディング ページが表示されます。
-
ログインしてドメインを登録する
- 有効なメールアドレスとパスワードでサインインしてください。
- 設定するドメイン名を入力します (DNS 構成と一致する必要があります)。
- 指示に従って必要なものを追加してください MX と TXT 検証のための記録。
- 完全なセットアップ
- 確認が完了したら、「エイリアス」ページにアクセスして最初のエイリアスを作成します。
- オプションで設定 送信メール用の SMTP の中に ドメイン設定これには追加の DNS レコードが必要です。
[!NOTE] サーバー外部に情報は送信されません。セルフホスト オプションと初期アカウントは、ドメイン、エイリアス、および関連する電子メール構成を管理するための管理者ログインと Web ビュー専用です。
テスト
最初のエイリアスを作成する
- エイリアス ページに移動します エイリアス管理ページを開きます:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- 新しいエイリアスを追加する
- クリック エイリアスを追加 (右上)。
- エイリアス名を入力し、必要に応じて電子メール設定を調整します。
- (オプション)有効にする IMAP/POP3/CalDAV チェックボックスを選択してサポートしてください。
- クリック エイリアスを作成します。
- パスワードを設定する
- クリック パスワードの生成 安全なパスワードを作成します。
- このパスワードは、電子メール クライアントにログインするために必要になります。
- メールクライアントを設定する
- Thunderbird などの電子メール クライアントを使用します。
- エイリアス名と生成されたパスワードを入力します。
- 設定する IMAP と SMTP それに応じて設定します。
メールサーバーの設定
ユーザー名: <alias name>
タイプ | ホスト名 | ポート | 接続セキュリティ | 認証 |
---|---|---|---|---|
SMTP | smtp.<ドメイン名> | 465 | SSL / TLS | 通常のパスワード |
IMAP | imap.<ドメイン名> | 993 | SSL / 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_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
ファイルが正しく構成されていません。
ウェブ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
ぜひご覧ください よくある質問はこちら.
サーバーの IP アドレスを使用して、次のサイトがブラックリストに登録されているかどうかを確認します。残念ながら、一般的なクラウド プロバイダーでは、電子メール スパムの使用により IP の評判に問題が発生することは珍しくありません。IP がブラックリストに登録されている場合は、新しいサーバーを立ち上げて新しい IP アドレスを確認することをお勧めします。