メールの送受信はできましたが受信側のログにspfに関する記述が見当たらない
ChatGPT: SPF検証がPostfixで有効になっていないか、あるいはpolicyd-spf(またはそれに相当するSPFチェック機構)が正しく動作していない可能性があります。以下の手順でチェック・修正していきましょう。
✅ チェックポイント一覧 チェック項目 内容 ① SPFポリシーデーモン導入済か? postfix-policyd-spf-python など ② Postfix設定にポリシーサービスが記述されているか? main.cf / master.cf ③ SPFポリシーサービスが起動しているか? systemctl or ps aux ④ SPFチェックログが /var/log/maillog に出力されているか? ない場合、ログレベルなどを確認
🔍 ステップバイステップ確認 ① SPF用のポリシーサービスがインストールされているか? 以下を実行:
bash コピーする 編集する rpm -qa | grep policyd-spf 出力例:
text コピーする 編集する postfix-policyd-spf-python-2.0.2-4.el8.noarch インストールされていなければ:
bash コピーする 編集する sudo dnf install epel-release -y sudo dnf install postfix-policyd-spf-python -y ② Postfixの設定確認 /etc/postfix/master.cf 末尾に次があるか確認:
ini コピーする 編集する policyd-spf unix - n n - 0 spawn user=nobody argv=/usr/bin/policyd-spf /etc/postfix/main.cf check_policy_service の記述が smtpd_recipient_restrictions に含まれているか確認:
ini コピーする 編集する smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service unix:private/policyd-spf ❗ 注意点
check_policy_service は permit_〜 のあとに記述してください。
smtpd_recipient_restrictions の記述が複数箇所にあると、後者が上書きされるので注意。
③ Postfix 再起動(設定変更後) bash コピーする 編集する sudo systemctl restart postfix 念のためポリシーサービスが動いているか確認:
bash コピーする 編集する ps aux | grep policyd-spf もしくは Postfix のプロセスの中に spawn されているか確認。
④ ログの確認方法 ログファイル:
bash コピーする 編集する sudo tail -f /var/log/maillog 送信後に “spf” や “policyd-spf” を含む行が表示されるか確認:
bash コピーする 編集する grep spf /var/log/maillog 表示されない場合:
ログレベルを上げる(試験的に) /etc/postfix/main.cf に以下を追加(または編集)してログ出力を強化:
ini コピーする 編集する policyd-spf_time_limit = 3600 debug_peer_list = 127.0.0.1 ✅ 動作確認メールをもう一度送信 送信側で以下を実行:
bash コピーする 編集する echo “SPFチェック” | mail -s “SPFテスト” user@mydomain.local 再度 /var/log/maillog に SPF関連のログが出るか確認してください。
🛠 トラブル時の対処(出ない場合) /usr/bin/policyd-spf が存在するか確認
spawn で起動できているか、/var/log/maillog にエラーが出ていないか確認
/etc/postfix/master.cf や /etc/postfix/main.cf の改行やインデントの不備をチェック
Postfix の smtpd_recipient_restrictions が正しく有効な順序で記述されているか
🧪 オプション:ポリシーサービスを明示的にテスト 次のようなスクリプトで、policyd-spf が応答しているかをテストできます:
bash コピーする 編集する echo -e “policy-request\nclient_address=192.168.1.100\nsender=from@mydomain.local\n\n” | nc localhost 25 ご希望があれば SPF評価をsyslogに強調表示
Postfixの受信拒否ポリシーの強化例
テストスクリプトの作成(送信 → SPF → ログ確認まで自動化)
も対応可能です。お気軽にどうぞ。
あなた: /etc/postfix/master.cfへの設定の記述の際です。 項目間はすべてタブ区切りですか?また、spawnの直後は改行ですか?
ChatGPT: はい、ご質問ありがとうございます。 /etc/postfix/master.cf の記述にはフォーマット上の厳格なルールがあり、以下の点に注意が必要です:
✅ 各フィールド間の区切りは スペース or タブ(どちらでもOK) 複数のスペースやタブで区切るのがPostfixの標準仕様です。
Tabで統一する必要はありませんが、混在しない方が見やすく、誤解が起きにくいです。
通常、Postfixはスペースとタブを等しく扱います(isspace()文字扱い)。
✅ spawn の行の次は 改行して引き続き設定 例:policyd-spf の正しい書き方(改行あり) ini コピーする 編集する policyd-spf unix - n n - 0 spawn user=nobody argv=/usr/bin/policyd-spf spawn で終わる行の 次の行にインデントをつけて続けます(スペースでもタブでもOK)
この インデントがないとPostfixが次の行を別プロセスとして誤解します
❌ 間違った例(NG) ini コピーする 編集する policyd-spf unix - n n - 0 spawn user=nobody argv=/usr/bin/policyd-spf → この書き方は1行に詰め込んでおり、Postfixが正しく処理できません。
✅ 補足:Postfixのフィールド定義 php-template コピーする 編集する