Digital Acorn

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

CentOS qmail Server

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

投稿日:2015-06-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

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

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

関連記事

PHPからsyslogを書く

忘備録です。 PHPでシステム回りを作っているんですが、syslogに出力出来たらなー、と思っていました。 調べたら簡単♪ function logger($mes) { exec("/bi …

MySQL VIEWの一覧

MySQLでVIEWの一覧が欲しいなぁ・・・と思ったら、以下のSQLで可能。 SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.views …

no image

【CentOS4】 通常のディスクからSoftware RAID1に変換する

概要 昔wikiに載せていた、diskを通常ディスクからraid1に変換する記事です。 まだ役に立つかもしれないので、載せておきます。

【qmail】携帯キャリアのメールに添付を削除して転送する

qmailでメールを携帯に転送して、メール通知に使っておられる方は結構多いんじゃないでしょうか。 ただ、大きなファイルが添付されていると、エラーメールが送信元に戻ってしまいます。 つまり、クライアント …

さくらVPSのCPU異常使用

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

広告