We are ACORN!

プログラムやサーバーの設定など、技術的な記事を載せております。

CentOS qmail Server

【qmail】 SPFヘッダーを追加する

投稿日:2018-12-23 更新日:

迷惑メール対策としてSPFという仕組みが導入されています。
このSPFとはなんでしょうか?

財団法人インターネット協会の迷惑メール対策委員会のページによると、

送信側は、あらかじめ自ドメインの権威DNSサーバ上に自ドメインの送信者がメールを外部に向けて送出する可能性のあるメールサーバのIPアドレスの一覧を記述(公開)する。この宣言を行うDNSリソースレコード(RR)が「SPFレコード」である。受信者はメールの受信時、送信者として指定されたメールアドレスのドメイン部分に示されるドメインのSPFレコードをDNSより取得して、SMTP接続先のIPアドレスが取得したSPFレコードと一致するか確認することで、送信ドメインの認証を実施する。

つまり、自サーバに接続してきたSMTPプロトコルの発信元のIPアドレスと、メールのFromのドメイン名をDNSで調べて得たSPFレコードを突き合わせて正しい送信元か判断する、ということになります。

では、これをqmailに導入することにしましょう。
目的は、qmailでSFPのヘッダを付けて、spamassassinでスコアを減らしたいということです。

では、実際に組み込んでみましょう。

パッチをあて、インストール

SPF implementation for qmail
ここからパッチをダウンロードしてあてることになるのですが、うまくいきません。
SMTP Authのパッチと競合するようです。
それで、SPFのパッチを当ててから、他のすべてのパッチをあて、そして最後にSMTP Authのパッチをあてます。
そうすると、Makefileとqmail-smtpd.cだけ、拡張子rejのファイルが出来ますので、それの中身を見ながら手作業で適用します。
かなり面倒なので、パッチ適用済みのtarボールを置いておきます。

qmailを止め、make setup check して、完了です。

Received-SPF: pass (0: SPF record at example.jp designates 10.0.0.10 as permitted sender)

上記のようなヘッダーが埋め込まれているはずです。

2015/06/24追記
どうもスパムでもSPFをpassするものがあるなー、と思っていたら、同様のことを考えておられる方がいました。
もっと早く見ていれば良かった・・・
SPF (Sender Policy Framework) チェックをパスしてしまう迷惑 (スパム) メールが増えている

DNSのtxtレコードに

"v=spf1 ip4:10.232.64.0/19 +all"

などと書かれていて、結局全部OKじゃん!みたいな(笑)
もしかしたら設定をミスしていて、それを見つけたスパム業者が、そのドメインを使っているだけかもしれないんですけどね・・・
ともかく、このような場合は、「neutral」にしてくれるパッチを上記サイトで入手できます。

当サイトバックアップ
パッチ済みtarボール

設定

■ /var/qmail/control/spfbehaviorを作る

0: Never do SPF lookups, don’t create Received-SPF headers
1: Only create Received-SPF headers, never block
2: Use temporary errors when you have DNS lookup problems
3: Reject mails when SPF resolves to fail (deny)
4: Reject mails when SPF resolves to softfail
5: Reject mails when SPF resolves to neutral
6: Reject mails when SPF does not resolve to pass

ということなので、1のヘッダーを作るだけにします。
ただファイルに「 1 」と入れるだけです。
qmailをリスタートします。

service qmail stop; service qmail start

■ /etc/mail/spamassassin/private_prefsを作る
SPFヘッダがpassだった時スコアを下げます。ただ運用して分かったのは、RayBanの宣伝メールはSPFヘッダがpassになるものが多いということです。DKIMまで付けてくる始末です。一緒に拒否しましょう。

# SPF
header   HEADER_SPF_CHECK ALL =~ /Received-SPF: pass/
describe HEADER_SPF_CHECK header contains SPF-pass
score    HEADER_SPF_CHECK -10
# RayBan
header   HEADER_RAY_BAN ALL =~ /rayban/i
describe HEADER_RAY_BAN Header contains rayban
score    HEADER_RAY_BAN 30

SPFヘッダがpassならスコアを-10します。raybanが含まれていれば、30足します。

リスタートします。

service spamassassin restart

■ /home/vpopmail/domains/example.jp/user/.qmailに設定
spamassassinを使っている人なら、

|spamc | tomaildir ./Maildir

となっているはずです。
このままで大丈夫です。

これで、SPFヘッダーがある場合は、スパムから除外されやすくなります。
それでも、広告メールなんかは、スパムと判断されますね。
まあ、広告ですから仕方がないですね。

-CentOS, qmail, Server


comment

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

関連記事

さくらのレンタルサーバーのメールをslackに通知する

今までメールを自分で作ったスクリプトで携帯に転送していたんですが、キャリアメールをやめたのでslackにメッセージを投げることにしました。 前提として、プランがスタンダードである必要があります。 何せ …

qmail(with smtp auth) + vpopmail + ezmlm-idx + dovecot + qmailadminなサーバ構築

概要 「今時qmailかよ」っていう人もいるかもしれませんが、長年qmailサーバを組んで来て不都合を感じたことがないので、このまま定年までこれで行けるんじゃないかと思っています(笑) それで、Cen …

さくらVPSのCPU異常使用

なぜか、さくらVPSのCPU消費が、ずーっと300msec近いところで推移していた。 3コア x 1000msecが最大だそうなので、10%を消費していることになる。 topで見ても、CPUを使ってい …

Xserverにmuttを追加する

XserverにはmuttというCUIのメーラーは入っていません。 CUIでメールが確認できると、SSHでログインしてメールを確認できるので便利です。 早速インストールしてみましょう。 準備 まず、ユ …

【qmail】 SPFの不正を防御する

スパムでSPFがpassになるのが多いなあ?、と思ってググりました。 ありました(泣) SPF (Sender Policy Framework) チェックをパスしてしまう迷惑 (スパム) メールが増 …