【WordPress】Contact Form7 と WP Mail SMTP で問い合わせフォームと自動返信機構を実装する

こんにちは

 

今回は表題の通りWordPressで Contact Form7 と WP Mail SMTP で問い合わせフォームと自動返信機構を実装してみました

また、実際に自動返信されたメッセージがgmailに届くかどうかも確認してみます

※テストサイトなので、サイト自体はすでに削除済みとなります

 

■構成

OS:Almalinux9

CMS:WordPress

MTA:Postfix

ミドルウェア:Apache、PHP-FPM、MySQL

 

■概要

WordPressが乗っているサーバーのlocalhostをSMTPサーバーとして指定します

そのうえで、ブラウザ上の問い合わせページからお問い合わせがあると、お問い合わせページに記載したメールアドレス宛にメールを自動返信します

加えて、gmailへもメールを送信するために、DKIMの設定とSPFレコードの登録も実施します

 

■手順

1. Contact Form7 の設定

まずはWordPressにContact Form 7 のプラグインをインストールし、有効化します

 

次にWordPress上に問い合わせフォームを作成します

プラグイン > インストール済みプラグイン > Contact Form 7 > 設定 へ移動すると、デフォルトで コンタクトフォーム1 が作成されています

 

中身を確認すると下記のようになっていました

今回はテストなので特に編集せずにこのまま利用します

なお、メールタブやメッセージタブ内に色々と細かい設定ができるようです

 

それでは、固定ページに問い合わせフォームを設置します

「コンタクトフォーム1」のショートコードをコピーします

[contact-form-7 id="9dac11f" title="コンタクトフォーム 1"]

 

そして、下記画像のようにショーコードを貼り付けます

 

最終的には下記ように最低限のお問い合わせページができたのでOKですね

ただ、現状だとメールの送信はできないので、他の設定を進めましょう

 

2. Postfix の設定

次にpostfixでローカルからのみメールを送信できるように設定します

vi /etc/postfix/main.cf
myhostname = {$hostname}
mydomain = {$domainname}
myorigin = $myhostname
inet_interfaces = localhost
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8

→ {$hostname} と {$domainname} は適宜変更してください

 

再起動します

systemctl restart postfix
systemctl status postfix

→ active (running) になっていればOKです

 

3. DKIMのインストールと設定

こちらの記事を参考にして、opendkimを利用して、DKIMの設定を進めていきます

 

まずは、epelレポジトリをインストールします

dnf install epel-release

 

OpenDKIMをインストールします

dnf install opendkim opendkim-tools

 

※もし下記のようなエラーが出た場合はcrbを有効化して、再度インストールします

Last metadata expiration check: 0:40:46 ago on Mon 10 Aug 2026 05:08:42 PM JST.
Error:
 Problem 1: conflicting requests
  - nothing provides libmilter.so.1.0()(64bit) needed by opendkim-2.11.0-0.36.el9.x86_64 from epel
  - nothing provides libmemcached.so.11()(64bit) needed by opendkim-2.11.0-0.36.el9.x86_64 from epel
 Problem 2: conflicting requests
  - nothing provides libmemcached.so.11()(64bit) needed by opendkim-tools-2.11.0-0.36.el9.x86_64 from epel
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

 

crbの有効化

dnf config-manager --set-enabled crb

 

再度インストール

dnf install opendkim opendkim-tools

→ y を押下してインストールします

 

インストールが完了したら下記秘密鍵の作成などを進めていきます

opendkim-genkey -v -b 1024 -D /etc/opendkim/keys/ -d example.com -s 20260810
opendkim-genkey: generating private key
opendkim-genkey: private key written to 20260810.private
opendkim-genkey: extracting public key
opendkim-genkey: DNS TXT record written to 20260810.txt

→ 上記が出力されればOKです

 

権限の変更

chown opendkim:opendkim /etc/opendkim/keys/20260810.private
chown opendkim:opendkim /etc/opendkim/keys/20260810.txt
/etc/opendkim/keys/

→ 所有者とグループが opendkim になっていればOKです

 

/etc/opendkim.conf ファイルで下記を設定します

vi /etc/opendkim.conf
Mode s
Socket local:/run/opendkim/opendkim.sock

→ 後述のpostfixのmain.cfと合わせます

 

KeyTable と SigningTable を有効化しなければ、DKIM認証自体が実行されないので注意してください

#KeyFile        /etc/opendkim/keys/default.private ★コメントアウトします
KeyTable /etc/opendkim/KeyTable ★コメントインします
SigningTable refile:/etc/opendkim/SigningTable ★コメントインします
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts ★コメントインします
InternalHosts refile:/etc/opendkim/TrustedHosts ★コメントインします

 

/etc/opendkim/TrustedHosts へ localhost とドメイン名を記載し、自サーバーのみ信頼できるホストとして指定します

vi /etc/opendkim/TrustedHosts
# OPENDKIM TRUSTED HOSTS
# To use this file, uncomment the #ExternalIgnoreList and/or the #InternalHosts
# option in /etc/opendkim.conf then restart OpenDKIM. Additional hosts
# may be added on separate lines (IP addresses, hostnames, or CIDR ranges).
# The localhost IP (127.0.0.1) should always be the first entry in this file.
127.0.0.1
::1
localhost
${domainname}
#host.example.com
#192.168.1.0/24

 

/etc/opendkim/KeyTable に下記を記載し、署名に使う秘密鍵を指定します

<セレクタ名>._domainkey.<ドメイン名> <ドメイン名>:<セレクタ名>:<秘密鍵ファイルのフルパス>
20260810._domainkey.example.com example.com:20260329:/etc/opendkim/keys/20260810.private

 

/etc/opendkim/SigningTable に下記を記載し、署名を行うドメイン名を指定します

*@<ドメイン名> <セレクタ名>._domainkey.<ドメイン名>
*@example.com 20260810._domainkey.example.com

 

OpenDKIMを起動します

systemctl start opendkim
systemctl enable opendkim
systemctl status opendkim

 

最後に Postfixと OpenDKIM の接続するためにDKIM認証を実施するように設定します

vi /etc/postfix/main.cf
smtpd_milters = unix:/run/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

→ smtpd_milters は /etc/opendkim.conf のSocket で記載したものと合わせます

 

postfixを再起動します

systemctl restart postfix
systemctl status postfix

→ active (running) になっていればOKです

 

3. DNS上で SPF と DKIM レコードの設定

DNS上でSPFレコードとこれまでに作成したDKIMレコードを登録します

 

SPF (TXTレコード)

レコード名:{$メール送信元のドメイン名}

値:”v=spf1 ip4:{$WordPressサーバーのGIP} -all”

 

DKIM (TXTレコード)

/etc/opendkim/keys/20260810.txt の中身を貼り付ける

 

4.  WP Mail SMTP のインストールと設定

WordPressに WP Mail SMTP のプラグインをインストールし、有効化します

 

インストールが完了したら、セットアップウィザードに従って設定を進めていきます

SMTP メーラー:その他の SMTP

SMTP ホスト:127.0.0.1

暗号化:なし

SMTP ポート:25

TLS 自動化:無効(チェックなし)

認証:無効(チェックなし)

送信者名:info (なんでもOK)

送信元メールアドレス:info@example.com (ユーザー名はなんでもOKですが、ドメイン名はメール送信に利用するものを設定してください)

有効にするメール機能を選択してください:メールの到達性の向上、メールエラー追跡

 

設定が完了したら、メール送信テストしてみます

WP mail SMTP > ツール からメールを送信してみます

 

下記のように表示されればOKです(dmarcは設定していないので成功していません)

 

gmail側で下記のようにテストメールを受信できていればOKです

 

もしメールの送信ができなかった場合、ファイアウォールのインバウンド通信で25番ポートが制限されている可能性があるので、送信元を127.0.0.1 として開放してください

 

5. 問い合わせページから動作確認

それでは、最後にWordPress上のお問い合わせページからお問い合わせを実施し、返信メールが受信できていることを確認してみます

 

gmail側を確認すると下記メールが受信できていることを確認しました

 

念のため本文を確認すると、SPF と DKIM がPASSしていることを確認できたので、問題なく動作してそうですね

 

■最後に

いかがでしたでしょうか

正直 メール送信のみの機能であれば、外部のSendgridやAWS SESを利用したほうが、メールサーバーの運用から離れることができるのでかなり楽かなと思います

ただ、今回利用したプラグインのみで簡単にお問合せ機能を実装できたので、そこまでITに詳しくない方でもプラグインのみでそれなりに関単に設定できるのはいいなと思いました

また、久しぶりにDKIMの設定なども触ったので良い復習にもなりました

それではまた

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA