カテゴリ: PHP 更新日: 2026/05/14

PHPのメール送信でSPF・DKIM認証設定を完全解説!初心者でもわかるメール認証の基本

PHP の メールのSPF・DKIM認証設定
PHP の メールのSPF・DKIM認証設定

先生と生徒の会話形式で理解しよう

生徒

「PHPでメールを送れるようになりましたが、迷惑メールになることがあります。」

先生

「それは、SPFやDKIMというメール認証設定ができていない可能性があります。」

生徒

「SPFやDKIMって何ですか?難しそうです。」

先生

「大丈夫です。家の表札のような仕組みだと考えるとわかりやすいですよ。順番に解説していきます。」

1. SPF・DKIMとは?メール認証の基本

1. SPF・DKIMとは?メール認証の基本
1. SPF・DKIMとは?メール認証の基本

PHPのメール送信で重要なのがSPF認証DKIM認証です。これは、送信されたメールが本当にそのドメインから送られたものか確認するための仕組みです。

インターネットでは、差出人を偽装するなりすましメールが多く存在します。そのため、受信側のメールサーバーは「このメールは信用できるか」を確認します。その確認方法がSPFとDKIMです。

SPFは「このサーバーから送って良い」と宣言する仕組み、DKIMは「このメールは改ざんされていない」と証明する仕組みです。どちらも設定しておくことで、迷惑メール判定を防ぎやすくなります。

2. PHPでメールを送る基本

2. PHPでメールを送る基本
2. PHPでメールを送る基本

まずはPHPの基本的なメール送信方法を確認しましょう。PHPにはmail()関数があります。


$to = "test@example.com";
$subject = "テストメール";
$message = "これはPHPから送信したメールです。";
$headers = "From: info@example.com";

mail($to, $subject, $message, $headers);

この方法でメールは送れますが、SPFやDKIMが未設定だと迷惑メールに入ることがあります。そのため、サーバー側の設定が重要になります。

3. SPF認証の仕組みと設定方法

3. SPF認証の仕組みと設定方法
3. SPF認証の仕組みと設定方法

SPFとは、送信を許可するサーバーをDNSに登録する仕組みです。DNSとはインターネット上の住所録のようなものです。

例えば、example.comのメールはこのサーバーから送る、と宣言します。DNSにTXTレコードを追加します。


v=spf1 ip4:123.45.67.89 include:_spf.google.com ~all

v=spf1はSPFの宣言です。ip4は許可するIPアドレス、includeは外部メールサービス利用時に使います。~allはそれ以外は疑わしいという意味です。

レンタルサーバーを使っている場合は、管理画面のDNS設定からTXTレコードを追加します。

4. DKIM認証の仕組みと設定方法

4. DKIM認証の仕組みと設定方法
4. DKIM認証の仕組みと設定方法

DKIMは公開鍵暗号という技術を使います。公開鍵暗号とは、鍵が二つある仕組みです。送信側が秘密鍵で署名し、受信側が公開鍵で確認します。

まずサーバーで鍵を生成します。Linuxサーバーの場合の例です。


openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key

生成した公開鍵をDNSにTXTレコードとして登録します。


default._domainkey.example.com IN TXT "v=DKIM1; k=rsa; p=公開鍵文字列"

これで、メールに電子署名が付き、改ざんチェックが可能になります。

5. PHPでSMTPを使う場合の設定

5. PHPでSMTPを使う場合の設定
5. PHPでSMTPを使う場合の設定

より確実に送信するにはSMTPサーバーを使います。SMTPとはメールを送信する専用の仕組みです。PHPMailerというライブラリを使うと簡単です。


use PHPMailer\PHPMailer\PHPMailer;

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = 'info@example.com';
$mail->Password = 'password';
$mail->setFrom('info@example.com', '送信者名');
$mail->addAddress('test@example.com');
$mail->Subject = 'SMTPテスト';
$mail->Body = 'SMTP経由で送信しています。';
$mail->send();

SMTPを利用することで、SPFやDKIMが正しく適用されやすくなります。

6. SPF・DKIM確認方法

6. SPF・DKIM確認方法
6. SPF・DKIM確認方法

設定後は確認が重要です。mail testerなどのメール検査サービスに送信すると、SPF判定やDKIM判定を確認できます。

ヘッダー情報を確認すると次のように表示されます。


SPF: PASS
DKIM: PASS

PASSと表示されれば成功です。FAILの場合はDNS設定を見直します。

7. 迷惑メール対策と注意点

7. 迷惑メール対策と注意点
7. 迷惑メール対策と注意点

SPFとDKIMを設定しても、本文内容が広告的すぎると迷惑メール判定されることがあります。また、送信ドメインとFromアドレスを一致させることも重要です。

さらにDMARCという仕組みを追加すると、より強力ななりすまし対策になります。メール到達率を高めるためには、SPF設定、DKIM設定、SMTP利用、正しいDNS設定が重要です。

PHPメール送信、SPF認証設定、DKIM認証設定、迷惑メール対策、SMTP設定、DNSレコード設定を正しく行うことで、安全で信頼性の高いメール配信が可能になります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
PHP のメール送信の記事一覧へ
新着記事
New1
PHP
PHPでファイルの存在確認・削除・移動を行う方法!初心者向けにfile_exists・unlink・renameを解説
New2
Python
Pythonでネットワークスキャナーを作る方法!Scapy入門ガイド(初心者向け)
New3
ChatGPT
ChatGPTでPythonのバグを見つける方法!初心者が確認すべきチェックポイント
New4
Python
PythonでICMP(Ping)を送信する方法を徹底解説!subprocessとscapyでネットワーク確認
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.2
Java&Spring記事人気No2
ChatGPT
ChatGPTでPythonコード作成とは?初心者向けに使い方・メリット・注意点を徹底解説
No.3
Java&Spring記事人気No3
Python
PythonでAPIリクエストを送信する方法を完全解説!requestsライブラリで簡単API通信
No.4
Java&Spring記事人気No4
Python
Pythonのrequestsライブラリ完全入門!HTTPリクエストの送り方を初心者向けにやさしく解説
No.5
Java&Spring記事人気No5
Python
Pythonのtimedeltaで日付の加算・減算をしよう!初心者でもわかる時間操作の基本
No.6
Java&Spring記事人気No6
Python
Pythonの非同期HTTPリクエスト(asyncio + aiohttp)完全ガイド!初心者でもわかるネットワークプログラミング
No.7
Java&Spring記事人気No7
PHP
PHPの変数の命名規則とベストプラクティスをやさしく解説!初心者向け完全ガイド
No.8
Java&Spring記事人気No8
Python
Pythonでzip圧縮・解凍する方法を徹底解説!初心者でもわかるzipfileモジュールの使い方