2026年5月22日
2026年5月22日
PostfixでSMTPサーバーを設定する方法
はじめに
WordPressからメールが送信されない・Postfixをインストールしたが設定方法がわからない・サーバーから送ったメールがスパムフォルダに入る・GmailやOutlookでメールが届かないといった問題の解決方法を解説します。
症状・原因
- PHPの
mail()関数でメールを送信しているがWordPressからメールが届かない(サーバー側のPostfix未設定) - Postfixのログに
relay access deniedが出る(リレー設定のミス) - 送信メールがスパム判定される(SPF/DKIMレコードが未設定)
Connection refusedでSMTPに接続できない(Postfixが起動していない・ファイアウォール)
解決手順
ステップ1:Postfix をインストールする
# ✅ Postfix をインストール(Ubuntu/Debian)
sudo apt install postfix mailutils -y
# → General type of mail configuration: Internet Site
# → System mail name: mail.example.com
# ✅ インストール確認
postfix status
# → postfix/master is running with pid ...
# ✅ CentOS/RHEL にインストール
sudo yum install postfix -y
sudo systemctl enable postfix
sudo systemctl start postfix
# ✅ Postfix のバージョン確認
postconf mail_version
# → mail_version = 3.x.x
ステップ2:main.cf を設定する
# ✅ main.cf の基本設定
sudo nano /etc/postfix/main.cf
# ✅ ホスト名(必ずFQDNを設定)
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
# ✅ ネットワーク設定
inet_interfaces = all
inet_protocols = ipv4
# ✅ 受信設定(自サーバーのみ受け取る)
mydestination = $myhostname, localhost.$mydomain, $mydomain
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
# ✅ リレー設定(外部への直接送信)
relayhost =
# → 空白にすると直接送信(SPF/DKIM設定が必要)
# ✅ TLS 設定(送信時に暗号化)
smtp_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtp_tls_loglevel = 1
# ✅ SASL 認証(リレーホスト使用時)
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
ステップ3:SPF・DKIM・DMARC を設定する
# ✅ SPF レコードを DNS に設定(DNSプロバイダーの管理画面で設定)
# example.com TXT "v=spf1 ip4:123.456.789.0 -all"
# 確認
dig TXT example.com | grep spf
# → "v=spf1 ip4:123.456.789.0 -all"
# ✅ OpenDKIM をインストール
sudo apt install opendkim opendkim-tools -y
# ✅ DKIM 鍵を生成
sudo mkdir -p /etc/opendkim/keys/example.com
sudo opendkim-genkey -s mail -d example.com \
-D /etc/opendkim/keys/example.com/
sudo chown -R opendkim:opendkim /etc/opendkim/keys/
# ✅ 公開鍵を DNS に追加
cat /etc/opendkim/keys/example.com/mail.txt
# → mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGf..."
# → DNS のTXTレコードに追加する
# ✅ OpenDKIM の設定
sudo nano /etc/opendkim.conf
Domain example.com
KeyFile /etc/opendkim/keys/example.com/mail.private
Selector mail
Socket local:/run/opendkim/opendkim.sock
# ✅ Postfix と OpenDKIM を連携
echo "milter_protocol = 2
milter_default_action = accept
smtpd_milters = local:/run/opendkim/opendkim.sock
non_smtpd_milters = local:/run/opendkim/opendkim.sock" | \
sudo tee -a /etc/postfix/main.cf
# ✅ 再起動
sudo systemctl restart opendkim postfix
# ✅ DMARC レコードを DNS に追加
# _dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"
ステップ4:WordPress からのメール送信を設定する
# ✅ WordPress のメール送信をテスト
wp eval 'wp_mail("test@example.com", "Test", "Hello from WordPress");' \
--path=/var/www/html/
# → メールが届いているか確認
# ✅ Postfix のログでメール送信を確認
sudo tail -f /var/log/mail.log
# → postfix/smtp: ... status=sent (250 2.0.0 OK) ← 送信成功
# → postfix/smtp: ... status=bounced ← 送信失敗
// ✅ WordPress の wp-config.php または functions.php で SMTP を設定
// WP Mail SMTP プラグインを使う(推奨)
// または PHPMailer を直接設定
add_action('phpmailer_init', function(PHPMailer\PHPMailer\PHPMailer $mailer): void {
$mailer->isSMTP();
$mailer->Host = 'localhost'; // Postfix のホスト
$mailer->SMTPAuth = false; // ローカルは認証不要
$mailer->Port = 25;
$mailer->From = 'noreply@example.com';
$mailer->FromName = 'My WordPress Site';
});
ステップ5:メール到達率を確認・改善する
# ✅ メールのヘッダーを確認(Authentication-Results)
# Gmailでメールを受信 → 「メールを表示」→「メッセージのソースを表示」
# Authentication-Results: mx.google.com;
# spf=pass
# dkim=pass
# dmarc=pass ← 全て pass なら OK
# ✅ メールのスパムスコアを確認
echo "Test mail" | mail -s "Test" test@mail-tester.com
# → mail-tester.com でスコアを確認(10/10 が理想)
# ✅ Postfix のメールキューを確認
mailq
# → Mail queue is empty ← キューが空 = 正常送信
# ✅ 詰まったキューを手動で再送信
sudo postqueue -f
# ✅ バウンスメールを確認
sudo tail -100 /var/log/mail.log | grep "bounced\|deferred"
注意事項
- VPSプロバイダー(ConoHa・さくら・AWS EC2)の多くはポート25(SMTP)をデフォルトでブロックしています。直接SMTPで送信する代わりに、SendGrid・Amazon SESなどの外部SMTPサービスを
relayhostとして使用することを検討してください - Google Workspace・Outlook.comへのメール到達率を高めるには、SPF・DKIM・DMARCの3つ全てを正しく設定する必要があります
まとめ
PostfixでのSMTP設定は①apt install postfixでインストール・FQDNのホスト名設定・起動確認、②main.cfでmyhostname/mydomain/mynetworks設定・TLS有効化・リレーホスト設定、③DNS にSPFレコード追加・OpenDKIMで署名鍵生成・公開鍵をDNSのTXTレコードに追加・DMARCポリシー設定、④WordPressのphpmailer_initフックでlocalhost:25に接続・メール送信テストと/var/log/mail.logで確認、⑤mail-tester.comでスパムスコア確認・メールキュー監視・バウンスメールの対処の手順で設定します。