PHPのメール送信でSPF・DKIM認証設定を完全解説!初心者でもわかるメール認証の基本
生徒
「PHPでメールを送れるようになりましたが、迷惑メールになることがあります。」
先生
「それは、SPFやDKIMというメール認証設定ができていない可能性があります。」
生徒
「SPFやDKIMって何ですか?難しそうです。」
先生
「大丈夫です。家の表札のような仕組みだと考えるとわかりやすいですよ。順番に解説していきます。」
1. SPF・DKIMとは?メール認証の基本
PHPのメール送信で重要なのがSPF認証とDKIM認証です。これは、送信されたメールが本当にそのドメインから送られたものか確認するための仕組みです。
インターネットでは、差出人を偽装するなりすましメールが多く存在します。そのため、受信側のメールサーバーは「このメールは信用できるか」を確認します。その確認方法がSPFとDKIMです。
SPFは「このサーバーから送って良い」と宣言する仕組み、DKIMは「このメールは改ざんされていない」と証明する仕組みです。どちらも設定しておくことで、迷惑メール判定を防ぎやすくなります。
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認証の仕組みと設定方法
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認証の仕組みと設定方法
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を使う場合の設定
より確実に送信するには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確認方法
設定後は確認が重要です。mail testerなどのメール検査サービスに送信すると、SPF判定やDKIM判定を確認できます。
ヘッダー情報を確認すると次のように表示されます。
SPF: PASS
DKIM: PASS
PASSと表示されれば成功です。FAILの場合はDNS設定を見直します。
7. 迷惑メール対策と注意点
SPFとDKIMを設定しても、本文内容が広告的すぎると迷惑メール判定されることがあります。また、送信ドメインとFromアドレスを一致させることも重要です。
さらにDMARCという仕組みを追加すると、より強力ななりすまし対策になります。メール到達率を高めるためには、SPF設定、DKIM設定、SMTP利用、正しいDNS設定が重要です。
PHPメール送信、SPF認証設定、DKIM認証設定、迷惑メール対策、SMTP設定、DNSレコード設定を正しく行うことで、安全で信頼性の高いメール配信が可能になります。