スマートフォン・タブレットからインターネットサーバーオペレーション
Ubuntu 24.04 上の Postfix サーバーから、独自ドメインを使って Gmail に正しくメールを届けるための設定手順をまとめたものです。特に、DKIM の DNS 設定(mail.txt から公開鍵を登録する部分)を詳しく解説します。
Gmail に正しく届くためには、以下の 4 要素が重要です。
Gmail は特に DKIM と DMARC を重視するため、これらが未設定・誤設定だと迷惑メール行きになりやすくなります。
sudo apt update
sudo apt install postfix mailutils
インストール時の対話設定例:
example.com(独自ドメイン)以下のような項目を設定・確認します(例:ドメイン 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
sudo apt install opendkim opendkim-tools
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
sudo mkdir -p /etc/opendkim/keys/example.com
cd /etc/opendkim/keys/example.com
sudo opendkim-genkey -s mail -d example.com
sudo chown opendkim:opendkim mail.private
生成されるファイル:
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private
*@example.com mail._domainkey.example.com
127.0.0.1
localhost
example.com
sudo systemctl restart opendkim
sudo systemctl enable opendkim
独自ドメイン example.com の TXT レコードとして、以下のように設定します。
example.com. IN TXT "v=spf1 mx a ip4:YOUR.SERVER.IP -all"
まずは監視モード(p=none)から始めるのが安全です。
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
問題がなければ、段階的にポリシーを強化します。
p=quarantine:迷惑メール扱いp=reject:受信拒否OpenDKIM が生成した mail.txt を元に、DNS に DKIM 公開鍵を登録します。
/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.txt は複数行に分かれて見えますが、DNS に登録する際は 1 行の TXT レコード にまとめる必要があります。
cat /etc/opendkim/keys/example.com/mail.txt
表示された内容から、v=DKIM1; k=rsa; p=... の部分を確認します。
DNS では、次のような 1 行の TXT レコードとして登録します。
mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr...."
ポイント:
"v=DKIM1; k=rsa; p=..."v=DKIM1; k=rsa; p=... のようなスペースはあっても問題ないmail.txt 内の公開鍵部分は、概ね次のようになっています。
p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr....
この p= 以降の文字列を、改行なしでそのまま DNS の TXT レコードに含めます。
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr...."
途中で改行やスペースを入れないように注意してください(セミコロン後のスペースは可)。
dig TXT mail._domainkey.example.com
結果に v=DKIM1 と公開鍵が表示されれば、DNS 登録は成功しています。
echo "test mail" | mail -s "test" youraddress@gmail.com
Authentication-Results: ...
spf=pass ...
dkim=pass ...
dmarc=pass ...
dkim=pass となっていれば、DKIM 署名と DNS 設定が正しく機能しています。
| 症状 | 主な原因 | 対処方法 |
|---|---|---|
| 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 に設定。 |