最近Gmail宛てのメールが迷惑メール扱いになったり、届かなかったりすることがあったので、調査と対応を行いました。今回は実際に調査した時のメールヘッダの内容や、その対処方法をご紹介します。
1. Gmailの受信ヘッダログを解析してみる
Gmailでは以下の「メッセージのソースを表示」からメールヘッダを確認できます。

以下が、今回Gmailで迷惑メールとして扱われたメールヘッダの一部です。
※一部IPアドレスやメールアドレスは架空のものに置き換えています
Delivered-To: reciever@gmail.com
Received: by 1111:2222:3333:1111:2222:3333 with SMTP id 13csp3207921rch;
Mon, 09 Dec 2024 22:34:03 -0800 (PST)
X-Google-Smtp-Source: AGHT+IE2Okok9Si0ooWAntDxRmIYKnTLviqYPTYXtfqjNqZifijxpk1/GGHFkWddiPIprYXHIzyh
X-Received: by 2222:3333:4444:2222:3333:4444 with SMTP id d9443c01a7336-2166a009c10mr61354535ad.31.1733812443592;
Mon, 09 Dec 2024 22:34:03 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1733812443; cv=none;
d=google.com; s=arc-20240605;
b=XjaK8/Ia51ZJ/5o4hTT6CtFcjWgXgv9RdbaqRBnDdq+uCpKdiZAsADKy0l/v1TWuqq
TaY0e7QLAaddpehcmj2VKVcDFNskVIO9/G1vc/CXrR/GkqnG+Y/N5pI4SIV/3Hiaqwkb
oCl2badR+gqKiPqiH/xHsrLeHH0IiamgoD+9tgU6kFz9vmPkjHOwHJzE6W/Z7TdxuQy/
SMDAZnv+s1wSnbLDMR+puOHNkmT+qO9MkXKlBBGPkiHXkCOUQez8BpJevAFS2XUgm+wv
4WMXIFXXbqSg5FeCwA/RIwTEwobPNdCDvczGxmLm0uVFlfRcwbQ0/IKPIOJ4wzuivnmM
Le3Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
h=to:from:reply-to:date:mime-version:content-transfer-encoding
:subject:message-id;
bh=cDRZe5s4u2w7GFF2pvGQt7rw2BDacKVBVafUlwLaofc=;
fh=Rn8npwlW3Sdfsk9gO5p/V/Vln1tCG/oMnTrIo9On6/4=;
b=FNjoMW5l/YRSNm9ZuoUJAG5QKiO+IjqLsKkAcLCDIV+2TKyqn9oH5jUeWEKhOUrLiI
olTaxFpyw8buz9VQeys5DAYq0m1ogBCQTCq79iSmCKwg1asTlMMxJYoyxhAT1OXRkZI1
Mdk3sLSdocB0TARdkLKRVWJ/WmaIw11PgBshKpfuN3GyUgFUZHIaC7fX0t9xoeNnp932
2E3twqH6SonTP0+iqbz6Zq0ev9FtsXvtXvTmXf166GMnGNvI3hnUzN1vlasUWek/FE0r
xBORKh3+jTeeS/oyOLnUY0Z8I549md7IPdra2ZTjmUPyShPp4pfoavhPvbY/9SCVcvUa
K0lw==;
dara=google.com
ARC-Authentication-Results: i=1; mx.google.com;
spf=softfail (google.com: domain of transitioning sender@xxx.jp does not designate 1234:1234:1234:1234:1234:1234 as permitted sender) smtp.mailfrom=sender@xxx.jp;
dmarc=fail (p=REJECT sp=NONE dis=NONE) header.from=xxx.jp
Return-Path: <sender@xxx.jp>
Received: from server-name (masked-host.example.com. [1234:1234:1234:1234:1234:1234:1234:1234])
by mx.google.com with ESMTPS id d9443c01a7336-2162a886e67si81285165ad.371.2024.12.09.22.34.02
for <reciever@gmail.com>
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Mon, 09 Dec 2024 22:34:03 -0800 (PST)
Received-SPF: softfail (google.com: domain of transitioning sender@xxx.jp does not designate 1234:1234:1234:1234:1234:1234:1234:1234 as permitted sender) client-ip=1234:1234:1234:1234:1234:1234:1234:1234;
Authentication-Results: mx.google.com;
spf=softfail (google.com: domain of transitioning sender@xxx.jp does not designate 1234:1234:1234:1234:1234:1234:1234:1234 as permitted sender) smtp.mailfrom=sender@xxx.jp;
dmarc=fail (p=REJECT sp=NONE dis=NONE) header.from=xxx.jp
...
「Received-SPF」「Authentication-Results」には、
spf=softfail (google.com: domain of transitioning sender@xxx.jp does not designate 1234:1234:1234:1234:1234:1234:1234:1234 as permitted sender)
と記されています。
内容は、送信元IPアドレスとして IPv6 アドレス 1234:1234:1234:1234:1234:1234:1234:1234 が使われたが、Googleはこのアドレスは許可された送信元ではないとし「spf=softfail」(=条件付き失敗)と判断しています。
これが迷惑メールになってしまう原因です。
2. SPF認証とは?
SPF(Sender Policy Framework)は、送信元メールサーバーのIPアドレスが、そのドメインの送信許可リストに含まれているかどうかをDNS上のTXTレコードで確認する仕組みです。
例えば、DNSに以下のようなTXTレコードを設定した場合、
v=spf1 ip4:123.123.123.123 -all
123:123:123:123のIPアドレス(IPv4)の送信元からメールが送付されることがある、とドメインを参照する側に伝えることになります。ドメインを参照する側は今回で言えばメールの送信元チェックをしているGoogleになります。
このアドレスは以下のようにTXTレコードに複数指定できますが、その中に含まれていない送信元IPアドレスから送信された場合に、今回のようにspf=softfailと判定されることがあります。
v=spf1 ip4:123.123.123.123 ip4:234.234.234.234
-all
※例えば、111.111.111.111からのメールはリストに無いので、正式な送信元として認証されない
3. 原因:IPv6で送信されている
今回のメールはWebサーバから送付されたもので、すでにDNSのTXTレコードにはSPFの設定を以下のように指定しており、これにより正常にメールが届いていました。
v=spf1 ip4:123.123.123.123 -all
しかしある時から迷惑メール扱いされるようになりました。原因は冒頭のメールヘッダにあるように、送信元が上記のIPv4の123.123.123.123ではなく、IPv6の1234:1234:1234:1234:1234:1234:1234:1234になっているためです。
つまり、これまではIPv4で送付元ドメインを参照して正式な送信元かを判定していたが、IPv6を参照するようになり、迷惑メール扱いになってしまったわけです。
たとえ、同じサーバからメールが送付されていたとしても、IPv4のみをDNSに登録している場合は、IPv6でメール送付が行われても正式な送信元とは判定されません。
4. 対策:SPFレコードにIPv6アドレスを追加する
今回の問題の根本原因は、送信元として使用されるIPv6アドレスが、TXTレコードのSPF設定に含まれていないことです。
そのため、DNS上のTXTレコードを以下のように変更することで、IPv6アドレスからの送信も許可されるようにします。
変更前のTXTレコード例
v=spf1 ip4:123.123.123.123 -all
変更後のTXTレコード例
v=spf1 ip4:123.123.123.123 ip6:1234:1234:1234:1234:1234:1234:1234:1234 -all
このように、ip6 の部分を追加することで、IPv6アドレスからの送信も正当な送信元として認証されるようになります。
※SPFの設定ではipv6ではなく、ip6である点に注意
4. まとめ
SPFの設定を行っているにもかかわらず、Gmailで受信したメールが迷惑メールになる場合は、IPv6でSPFの判定が行われている可能性があります。
メールヘッダを確認し、IPv6で判定されているようであれば、DNSのTXTレコードのSPF設定にIPv6のIPアドレスを追加してみてください。

株式会社GLASS CTO。2010年、株式会社日立製作所にてIT新技術の調査・検証、Project Management Office、システム開発、マーケティング業務に携わる。2017年、株式会社Webios 取締役副社長 / CTO に就任。2018年、GLASS開発チームに参画。
AWS,GCPでのクラウドシステム開発、Ruby,PHPでのスクラッチ開発、CMS,ECパッケージでのサイト構築(WordPress / WooCommerce, MovableType, EC-CUBEなど)、kintoneでのシステム開発などに携わっている。