summaryrefslogtreecommitdiff
path: root/mail/install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'mail/install.sh')
-rwxr-xr-xmail/install.sh87
1 files changed, 87 insertions, 0 deletions
diff --git a/mail/install.sh b/mail/install.sh
new file mode 100755
index 0000000..a913938
--- /dev/null
+++ b/mail/install.sh
@@ -0,0 +1,87 @@
+#!/usr/bin/env bash
+# サーバー上で root として手動実行する
+# domains.txt からドメインを読み取り、DKIM 鍵生成と OpenDKIM テーブルを生成して
+# コンテナを起動する。ドメインを追加・削除するたびに再実行する。
+set -euo pipefail
+
+MAIL_DIR="$(cd "$(dirname "$0")" && pwd)"
+DOMAINS_FILE="$MAIL_DIR/domains.txt"
+OPENDKIM_DIR=/etc/opendkim
+KEY_DIR="$OPENDKIM_DIR/keys"
+SELECTOR=mail
+PRIMARY=hetzner.yyamashita.com
+
+if [[ "$(id -u)" -ne 0 ]]; then
+ echo "ERROR: root として実行してください" >&2
+ exit 1
+fi
+
+# domains.txt から有効なドメインを読み込む
+mapfile -t SERVICE_DOMAINS < <(grep -vE '^\s*(#|$)' "$DOMAINS_FILE")
+
+echo "=== 対象ドメイン ==="
+for d in "${SERVICE_DOMAINS[@]}"; do echo " $d"; done
+echo " $PRIMARY (プライマリ)"
+
+# DKIM 鍵生成(初回のみ)
+echo ""
+echo "=== DKIM 鍵 ==="
+mkdir -p "$KEY_DIR"
+chmod 700 "$KEY_DIR"
+
+if [[ -f "$KEY_DIR/${SELECTOR}.private" ]]; then
+ echo " 既存の鍵を使用: $KEY_DIR/${SELECTOR}.private"
+else
+ echo " 2048bit RSA 鍵を生成中..."
+ docker run --rm -v "${KEY_DIR}:/keys" debian:bookworm-slim bash -c "
+ apt-get update -qq && apt-get install -y -qq opendkim-tools 2>/dev/null
+ cd /keys && opendkim-genkey -b 2048 -s ${SELECTOR} -d yyamashita.com
+ chmod 600 /keys/${SELECTOR}.private
+ "
+ echo " 生成完了"
+fi
+
+# OpenDKIM テーブル生成
+echo ""
+echo "=== OpenDKIM テーブル生成 ==="
+mkdir -p "$OPENDKIM_DIR"
+
+{
+ for d in "${SERVICE_DOMAINS[@]}"; do
+ echo "${SELECTOR}._domainkey.${d} ${d}:${SELECTOR}:${KEY_DIR}/${SELECTOR}.private"
+ done
+ echo "${SELECTOR}._domainkey.${PRIMARY} ${PRIMARY}:${SELECTOR}:${KEY_DIR}/${SELECTOR}.private"
+} > "$OPENDKIM_DIR/KeyTable"
+echo " KeyTable : $OPENDKIM_DIR/KeyTable"
+
+{
+ for d in "${SERVICE_DOMAINS[@]}"; do
+ echo "*@${d} ${SELECTOR}._domainkey.${d}"
+ done
+ echo "*@${PRIMARY} ${SELECTOR}._domainkey.${PRIMARY}"
+} > "$OPENDKIM_DIR/SigningTable"
+echo " SigningTable: $OPENDKIM_DIR/SigningTable"
+
+cat > "$OPENDKIM_DIR/TrustedHosts" << 'EOF'
+127.0.0.1
+::1
+172.16.0.0/12
+10.0.0.0/8
+EOF
+echo " TrustedHosts: $OPENDKIM_DIR/TrustedHosts"
+
+# コンテナ起動
+echo ""
+echo "=== コンテナ起動 ==="
+bash "$MAIL_DIR/deploy.sh"
+
+# 公開鍵を表示
+echo ""
+echo "=== DKIM 公開鍵 (Route 53 各ドメインに設定) ==="
+echo "セレクター: ${SELECTOR}._domainkey.<ドメイン>"
+echo "---"
+cat "$KEY_DIR/${SELECTOR}.txt"
+echo "---"
+echo ""
+echo "Done."
+echo "次: python3 $MAIL_DIR/dns/setup-route53.py"