# PostfixのComposeプロジェクト ## 1. ディレクトリの作成 ``` sudo mkdir -p /opt/postfix sudo chown $USER:$USER /opt/postfix cd /opt/postfix ``` ## 2. compose.ymlの作成 `compose.yml`: ``` services: postfix: image: boky/postfix:latest restart: unless-stopped hostname: mail.unchioshi.net environment: TZ: Asia/Tokyo ALLOWED_SENDER_DOMAINS: unchioshi.net ports: - "127.0.0.1:2525:25" ``` - Dockerイメージは`boky/postfix`(送信用のSMTPリレーのイメージ)を利用 - `ALLOWED_SENDER_DOMAINS`にはメールの送信元として許可するドメインを指定 - コンテナのTCP 587番ポートをホスト側の2525番ポートに公開 ## 3. コンテナの起動 ``` docker compose up -d ``` ## 4. 送信テスト `swaks`をインストール: ``` sudo apt update sudo apt install swaks ``` メール送信: ``` swaks \ --server localhost \ --port 2525 \ --from notification@unchioshi.net \ --to t.murate1124@gmail.com \ --header "Subject: Postfix SMTP Test" --body "Hello from Postfix!" ``` - `--server ` ... SMTPサーバの接続先 - `--port ` ... SMTPサーバのポート - `--from ` ... 送信元メールアドレス - `--to ` ... 送信先メールアドレス - `--header
` ... メールヘッダー - `--body ` ... メール本文 ## 補足:正引きと逆引きの対応を一致させ、PostfixがSMTP通信で名乗るホスト名も揃える 正引きと逆引きの対応: ``` tsubanyan@localhost:~$ dig +short mail.unchioshi.net A 46.250.255.203 tsubanyan@localhost:~$ dig +short -x 46.250.255.203 mail.unchioshi.net. tsubanyan@localhost:~$ ``` - 対応が取れていない場合は適宜編集する - 正引きはゾーン情報を編集する - 逆引きホスト名は、サーバ側の管理画面から設定 Postfixのホスト名を合わせる ``` myhostname = mail.unchioshi.net ``` - PostfixがSMTP通信で自身を識別する際のホスト名 ``` smtp_helo_name = mail.unchioshi.net ``` - 外部へのSMTP接続で使用するEHLO名 - 通常`smtp_helo_name`のデフォルト値は`$myhostname`なので明示的に設定する必要はない ## 補足:SPF・DMARC対策 ``` tsubanyan@localhost:~$ dig +short unchioshi.net TXT "v=spf1 a mx ~all" tsubanyan@localhost:~$ dig +short _dmarc.unchioshi.net TXT "v=DMARC1; p=none" tsubanyan@localhost:~$ ``` - ゾーン情報を編集して設定