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.cfmyhostname/mydomain/mynetworks設定・TLS有効化・リレーホスト設定、③DNS にSPFレコード追加・OpenDKIMで署名鍵生成・公開鍵をDNSのTXTレコードに追加・DMARCポリシー設定、④WordPressのphpmailer_initフックでlocalhost:25に接続・メール送信テストと/var/log/mail.logで確認、⑤mail-tester.comでスパムスコア確認・メールキュー監視・バウンスメールの対処の手順で設定します。

お気軽にご相談ください

お見積りへ お問い合わせへ