diff options
Diffstat (limited to 'mail/install.sh')
| -rwxr-xr-x | mail/install.sh | 87 |
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" |
