自宅メールサーバからgmailに送信すると、迷惑メールに分類されてしまいます。
受信者に「迷惑メールではない」ボタンを押してもらうのも申し訳ない。
迷惑メールと判断されないようにするための第一ステップとして、
今回、メールサーバPostfixにSPF認証の機能を組み込んでみました。
ここでのSPFは、Sender Policy Framework(センダー・ポリシー・フレームワーク)の略です。
「SPF50の日焼け止め」とかの、Sun Protection Factor (紫外線防御指数) の略ではありません。
なりすましによる迷惑メールを排除するため、メールアドレスのドメインを見て、それが正規のサーバから送信されたものか確認し認証します。
■SPF送信側の設定
SPFレコードは、現在利用しているELDOMAINさんのDNSサーバで設定しました。
タイプとして「TXT」を選び「v=spf1 mx ~all」を設定。
ドメイン名を入力し、「私はロボットではありません」をチェックし、「Survey Domain」をクリックします。
「No SPF Record for this domain.」の表示がなければ正常です。
・・・mxをメールサーバのIPアドレスとして以下のように記述した方がDNSの処理分早いらしい。
「v=spf1 mx ip4:192.168.1.21 ~all」
ただし、SPF送信側の設定だけでは、gmailに送信しても迷惑メールに分類されてしまいました。
■SPF受信側の設定
受信側の設定方法は、Perl で動く「postfix-policyd-spf-perl」を使う方法と、Python で動く「pypolicyd-spf」を使う方法があるようですが、今回は「postfix-policyd-spf-perl」を入れてみました。
# wget https://launchpad.net/ubuntu/+archive/primary/+files/postfix-policyd-spf-perl_2.010.orig.tar.gz # tar -xvf postfix-policyd-spf-perl_2.010.orig.tar.gz # cd postfix-policyd-spf-perl-2.010 # cp postfix-policyd-spf-perl /usr/sbin/postfix-policyd-spf-perl
実は、後で気づいたのですが、サーバがCentOS6.8なのに、クライントOSがUbuntu16.04なので、勘違いで上記のパッケージを入れていました。・・・が、正常に動作しており問題はないようです。
/etc/postfix/master.cfの最後尾にでも以下の記述を追加します。
(user=の前の空白はタブではダメ。半角スペースを入れましょう。)
# for SPF policy unix - n n - 0 spawn user=nobody argv=/usr/sbin/postfix-policyd-spf-perl
/etc/postfix/main.cfの最後尾にでも以下の記述を追加します。
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service unix:private/policy, permit_atuh_destination, reject policy_time_limit = 3600
Postfixを再起動します。
起動時にエラーが無いことも確認しておきましょう。
# service postfix restart # tailf /var/log/maillog
自宅サーバ側からgmailへメールを送ってみます。
無事、迷惑フォルダではなく、受信フォルダに届いてくれましたので、成功です。
念の為、メールを閲覧表示し「メッセージのソースを表示」を実行。
「Received-SPF: pass ・・・」の表示があれば正常です。
今更ながらの覚え書きでした。