スマートフォン・タブレットからインターネットサーバーオペレーション

APPW.jp
 

独自ドメインから Gmail へメール送信するための設定手順(Postfix / OpenDKIM / SPF / DMARC)

Ubuntu 24.04 上の Postfix サーバーから、独自ドメインを使って Gmail に正しくメールを届けるための設定手順をまとめたものです。特に、DKIM の DNS 設定(mail.txt から公開鍵を登録する部分)を詳しく解説します。

1. 全体構成と必要な要素

Gmail に正しく届くためには、以下の 4 要素が重要です。

  • Postfix:メール送信サーバー(MTA)
  • SPF:そのドメインから送信してよいサーバーのリスト
  • DKIM:メールに電子署名を付けて改ざん防止
  • DMARC:SPF/DKIM の結果に基づく受信側の判断ルール

Gmail は特に DKIM と DMARC を重視するため、これらが未設定・誤設定だと迷惑メール行きになりやすくなります。

2. Postfix の基本設定(Ubuntu 24.04)

2.1 Postfix のインストール


sudo apt update
sudo apt install postfix mailutils

インストール時の対話設定例:

  • General type of mail configuration: Internet Site
  • System mail name: example.com(独自ドメイン)

2.2 /etc/postfix/main.cf の基本設定

以下のような項目を設定・確認します(例:ドメイン example.com、ホスト名 mail.example.com)。


myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP

# メール送信時のTLS接続設定
smtp_tls_security_level = may

# OpenDKIM 連携設定
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

設定反映:


sudo systemctl restart postfix

3. OpenDKIM の設定

3.1 OpenDKIM のインストール


sudo apt install opendkim opendkim-tools

3.2 /etc/opendkim.conf の設定


Syslog                  yes
UMask                   002
Mode                    sv
Canonicalization        relaxed/simple
SubDomains              no
AutoRestart             yes
AutoRestartRate         10/1h
OversignHeaders         From
KeyTable                /etc/opendkim/key.table
SigningTable            /etc/opendkim/signing.table
ExternalIgnoreList      /etc/opendkim/trusted.hosts
InternalHosts           /etc/opendkim/trusted.hosts
Socket                  inet:8891@localhost

3.3 DKIM 鍵用ディレクトリの作成


sudo mkdir -p /etc/opendkim/keys/example.com

3.4 DKIM 鍵の生成


cd /etc/opendkim/keys/example.com
sudo opendkim-genkey -s mail -d example.com
sudo chown opendkim:opendkim mail.private

生成されるファイル:

  • mail.private:秘密鍵(サーバー側で使用)
  • mail.txt:DNS に登録する公開鍵情報

3.5 /etc/opendkim/key.table の設定


mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private

3.6 /etc/opendkim/signing.table の設定


*@example.com mail._domainkey.example.com

3.7 /etc/opendkim/trusted.hosts の設定


127.0.0.1
localhost
example.com

3.8 OpenDKIM の起動・自動起動設定


sudo systemctl restart opendkim
sudo systemctl enable opendkim

4. DNS 設定(SPF / DKIM / DMARC)

4.1 SPF レコードの設定

独自ドメイン example.com の TXT レコードとして、以下のように設定します。


example.com.  IN  TXT  "v=spf1 mx a ip4:YOUR.SERVER.IP -all"
  • YOUR.SERVER.IP:実際のサーバーのグローバル IP アドレス
  • mx / a:ドメインの MX / A レコードのホストからの送信を許可

4.2 DMARC レコードの設定

まずは監視モード(p=none)から始めるのが安全です。


_dmarc.example.com.  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

問題がなければ、段階的にポリシーを強化します。

  • p=quarantine:迷惑メール扱い
  • p=reject:受信拒否

5. DKIM の DNS 設定(mail.txt から公開鍵を登録する手順)

OpenDKIM が生成した mail.txt を元に、DNS に DKIM 公開鍵を登録します。

5.1 mail.txt の構造

/etc/opendkim/keys/example.com/mail.txt の中身は、概ね次のような形式になっています。


mail._domainkey.example.com IN TXT ( "v=DKIM1; k=rsa; "
  "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr...." )  ; ----- DKIM key mail for example.com

重要な要素:

  • mail:セレクタ名(selector)
  • _domainkey.example.com:DKIM 用サブドメイン
  • p=...:公開鍵(非常に長い文字列)

mail.txt は複数行に分かれて見えますが、DNS に登録する際は 1 行の TXT レコード にまとめる必要があります。

5.2 mail.txt の確認


cat /etc/opendkim/keys/example.com/mail.txt

表示された内容から、v=DKIM1; k=rsa; p=... の部分を確認します。

5.3 DNS に登録する最終形

DNS では、次のような 1 行の TXT レコードとして登録します。


mail._domainkey.example.com.  IN  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr...."

ポイント:

  • 改行を入れない:公開鍵は 1 行に連結する
  • ダブルクォーテーションで全体を囲む:"v=DKIM1; k=rsa; p=..."
  • セミコロン後のスペース:v=DKIM1; k=rsa; p=... のようなスペースはあっても問題ない
  • 末尾のドット:DNS サービスによっては自動補完されるため、省略可の場合もある

5.4 公開鍵文字列の扱い

mail.txt 内の公開鍵部分は、概ね次のようになっています。


p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr....

この p= 以降の文字列を、改行なしでそのまま DNS の TXT レコードに含めます。


"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr...."

途中で改行やスペースを入れないように注意してください(セミコロン後のスペースは可)。

6. 設定確認とテスト

6.1 DNS レコードの確認(dig)


dig TXT mail._domainkey.example.com

結果に v=DKIM1 と公開鍵が表示されれば、DNS 登録は成功しています。

6.2 テストメール送信


echo "test mail" | mail -s "test" youraddress@gmail.com

6.3 Gmail 側での確認

  1. Gmail でテストメールを開く
  2. 右上の「︙」メニューから「メッセージのソースを表示」を選択
  3. ヘッダ内の以下の項目を確認

Authentication-Results: ...
    spf=pass ...
    dkim=pass ...
    dmarc=pass ...

dkim=pass となっていれば、DKIM 署名と DNS 設定が正しく機能しています。

7. よくあるトラブルと対処

症状 主な原因 対処方法
DKIM が fail DNS の公開鍵に改行が含まれている / コピー漏れ / セレクタ不一致 mail.txt を再確認し、1 行にまとめて正しくコピーする。セレクタ名(mail)を統一。
SPF が fail サーバー IP が SPF レコードに含まれていない SPF レコードに ip4:YOUR.SERVER.IP を追加する。
DMARC が fail SPF または DKIM の alignment(整合性)が取れていない From ドメインと SPF/DKIM のドメインが一致しているか確認。
Gmail で迷惑メール行き 逆引き DNS(PTR)が未設定 / 新設ドメイン / 送信実績が少ない サーバー事業者の管理画面で PTR を YOUR.SERVER.IP → mail.example.com に設定。

『独自ドメインから Gmail へメール送信するための設定手順(Postfix / OpenDKIM / SPF / DMARC)』を公開しました。