さくらのVPS(Rocky Linux)でSPFレコードを設定してPowerCMS X からメールを送信する
※ 最初に独自ドメインで運用する必要があるので、PowerCMS X に独自ドメインでアクセスする の設定をしてください。
Postfix の設定
Postfix で独自ドメインになっているか確認します。
main.cf を開きます。
sudo vi /etc/postfix/main.cf
下記箇所のホスト名を独自ドメインに書き換えます。
mydomain = ホスト名
最後に postfix を restart します。
sudo systemctl restart postfix
DNSレコード作成
私は お名前.com でドメインを取得して、TXT レコードを作成しました。
「111.222.33.444」の部分は自身のサーバーIPを入れてください。
spf の値の前後にダブルコーテーションがある場合は削除して大丈夫です。
v=spf1 ip4:111.222.33.444 ~all
レコードの反映確認は以下の画面より、オプションプルダウンを「TXT」にして「dig実行」で確認できます。
nslookup(dig)テスト【DNSサーバ接続確認】
こちらのサイトもDNS確認ができます。
DNSチェック
SPF設定
以下の2つをインスールします。
sudo dnf install pypolicyd-spf
main.cfを修正します。
// main.cfファイルをバックアップ
sudo cp -p /etc/postfix/main.cf /etc/postfix/main.cf.$(date +%Y%m%d)
// main.cfファイルを確認
ll /etc/postfix/
// main.cfファイルを修正
sudo vi /etc/postfix/main.cf
// 最終行に以下を追加
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service unix:private/policy-spf
master.cfを修正します。
// master.cfファイルをバックアップ
sudo cp -p /etc/postfix/master.cf /etc/postfix/master.cf.$(date +%Y%m%d)
// master.cfファイルを確認
ll /etc/postfix/
// master.cfファイルを修正
sudo vi /etc/postfix/master.cf
// 最終行か適切な箇所に以下を追加
policy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/policyd-spf -c /etc/python-policyd-spf/policyd-spf.conf
policyd-spf.confを修正します。
// policyd-spf.confファイルをバックアップ
sudo cp -p /etc/python-policyd-spf/policyd-spf.conf /etc/python-policyd-spf/policyd-spf.conf.$(date +%Y%m%d)
// policyd-spf.confファイルを確認
ll /etc/python-policyd-spf/
// policyd-spf.confファイルを修正
sudo vi /etc/python-policyd-spf/policyd-spf.conf
// 最終行に以下を追加
debugLevel = 1
defaultSeedOnly = 1
HELO_reject = SPF_Not_Pass
Mail_From_reject = Fail
PermError_reject = 1
TempError_Defer = 1
Postfixを再起動します。
sudo systemctl restart postfix
以下のコマンドからメールを送信できます。
下記コードの <送信元メールアドレス> の所に no-reply@sample.com のように設定してください。必ず自身のドメインを記述してください。
<送信先メールアドレス> は Gmail など、受信できるメールアドレスを記述してください。
Gmail はセキュリティに厳しいので送信先としてベストです。このサンプルは件名を設定していませんがメール送信はできます。
sudo echo "テストメールです" | sendmail -t -f <送信元メールアドレス> <送信先メールアドレス>
例
sudo echo "テストメールです" | sendmail -t -f no-reply@sample.com hoge@gmail.com
Gmail のメッセージソースを見ると SPF が NONE から PASS になっていると思います。
PowerCMS X は管理画面の右上のスパナアイコンから設定画面に入れるので、「システムのメール」の入力欄右にある「テストメール」をクリックして、Gmail 宛に送信してみてください。
Gmailにメール送信はできましたが、DKIM、DMARC の設定も必要です。