: qmail用のSPF実装 (和訳) SPF implementation for qmail

: 本家 original site is

: 要約 About

qmail用のSPF実装です. This is an SPF implementation for qmail.
SPF はドメイン名に対してそのメールを送信元を明示的に許可するための 謂わば "反転 MX(reverse MX)" システムのようなものです. このシステムの目標は送信アドレスの偽造の却下です. SPF is something like a DNS based "reverse MX" system to designate permitted senders for mails depending on the domain name. The goal is to disallow sender address forgery.
このパッチは完全に qmail 文字列及び DNS 関数を使用して記述されています. この為外部依存なしにqmailに完全に統合されます. The patch is entirely written using the qmail string and DNS functions, and thus completely integrated into qmail without external dependencies.
SMTPデーモンの中で外部から来たメールを調べ, Received-SPF の追加及び任意で 望まない転送のブロックを行うことができます. このチェックはエンベロープレベル で行われます. It can check incoming mails inside the SMTP daemon, add Received-SPF lines and optionally block undesired transfers. The check is performed at the envelope level.

: ダウンロード Download

qmail-1.03 用のパッチ: qmail-spf-rc5.patch patch against qmail-1.03: qmail-spf-rc5.patch

このパッチは安定版です. それなのにまだリリース候補のままになっているのは 最終的な SPF 草稿がでていないからです(オフィシャルなRFCになったときに それが決着したと考えます This patch is stable. It is still a release candidate because the final SPF draft isn't out yet (I consider it final when it gets an official RFC).

SPFに関するより詳しい情報はプロジェクトのウェブサイト を参照してください. For more information about SPF, please see the project web site at
qmail は D. J. Bernstein によって作られた 小さくてセキュアですなMTAです. (訳注:日本語サイト.) qmail is a small and secure MTA by D. J. Bernstein.

使ったら <> に情報を送ってください. それによってこれが稼働する様々なバージョン/プラットホーム を追跡できます. Thanks! Drop me a note <> when you use it so I can keep track of the various versions/platforms this runs on. Thanks!

: 説明 Description

: インストール: Installation:
ここではqmailのパッチあてには精通しているとして話を進めます. この頃では 生のqmailは使い勝手はよくないですし(認証やフィルタがない等). I suppose you are already familiar with qmail patching since a naked qmail is pretty useless these days (no authentication, filtering, ...).
qmail-1.03.tar.gz アーカイブを展開します:   tar xvfz /path/to/qmail-1.03.tar.gz
Unpack the qmail-1.03.tar.gz archive using something like:  tar xvfz /path/to/qmail-1.03.tar.gz
できたディレクトリの中に入ってパッチを適用します:  patch -p1 < /path/to/qmail-spf-<version>.patch
Change into the directory and apply the patch using:  patch -p1 < /path/to/qmail-spf-<version>.patch
もし他にもパッチを当てているのならリジェクトも起きるでしょう. 特に Makefile 等で. 申し訳ないが多くの変更を施しています. リジェクトされた変更点は手で適用しなければならないでしょう(もしくは 私に尋ねてみてください). If you already had patches applied there will most likely be rejects, especially in the Makefile. I'm sorry I had to make so many changes. You'll have to apply them rejected changes by hand (or ask me).
その後は普通の手順を進みます: After that you can go on with the usual procedure:
conf-* の調整, make, make test, make setup, その他したいことを何かしら. Adjust conf-*, make, make test, make setup, whatever you want.
重要: 先に qmail-bigdns パッチを適用していることを 確認してください, そうでないとランダムなルックアップの失敗を引き起こします. Important: Please make sure that you also apply the qmail-bigdns patch or you will get random lookup failues.

このパッチにはスタンドアロンな SPF 問い合わせツール spfquery が 同梱されています. spfquery <sender-ip> <sender-helo/ehlo> <envelope-from> [<local rules>] [<guess rules>] The patch also includes a standalone SPF query tool called spfquery:
spfquery <sender-ip> <sender-helo/ehlo> <envelope-from> [<local rules>] [<guess rules>]

: 設定: Configuration:
qmail にパッチを当てた後は, control.9qmail-smtpd.8 がqmailでSPFを使う設定のヒントになるでしょう. After patching qmail the man pages control.9 and qmail-smtpd.8 will give you a hint on how to configure qmail to use SPF.

コントロールディレクトリ(通常は /var/qmail/control になります)に 設定ファイルを4つ作ります. You can create four configuration files in your control directory (usually /var/qmail/control):

: spfbehavior
SPF チェックを有効にします. デフォルト値は 0 (使用しない)です. Use this to turn on SPF checking. The default value is 0 (off).
0 から 6 までの値を指定します: You can specify a value between 0 and 6:
  • 0: SPF ルックアップを行いません, Received-SPF ヘッダも作りません Never do SPF lookups, don't create Received-SPF headers
  • 1: Received-SPF ヘッダの生成だけ行います, ブロックはしません Only create Received-SPF headers, never block
  • 2: DNS ルックアップで問題があるとテンポラリエラーを返します Use temporary errors when you have DNS lookup problems
  • 3: SPF の評価結果が fail (deny) であるメールをリジェクトする Reject mails when SPF resolves to fail (deny)
  • 4: SPF の評価結果が softfail であるメールをリジェクトする Reject mails when SPF resolves to softfail
  • 5: SPF の評価結果が neutral であるメールをリジェクトする Reject mails when SPF resolves to neutral
  • 6: SPF の評価結果が pass にならなかったメールをリジェクトする Reject mails when SPF does not resolve to pass
3 より大きい値を使うとひどく落胆するでしょう, 2 か 3 を使うことに 落ち着くと思います. Values bigger than 3 are strongly discouraged, you probably want to go with 2 or 3.
重要: この設定は環境変数 SPFBEHAVIOR を使って, 例えば tcpserver ルールなどで上書きできます. Important: This setting can be overridden using the environment variable SPFBEHAVIOR, e.g. from tcpserver rules.
補足: RELAYCLIENT が指定されている時は SPF チェックは一切 行われません. Note: If RELAYCLIENT is set, SPF checks won't run at all.
(これは SMTP-AUTH や類似のパッチでもいえることです) (This also includes SMTP-AUTH and similar patches)
: spfrules
ローカルルール行を指定できます. You can specify a line with local rules.
ローカルルールとは: ドメインに対する実際の SPF ルールが失敗(fail, softfail, neutral)になる前に実行されるルールです. Local rules means: Rules that are executed before the real SPF rules for a domain would fail (fail, softfail, neutral).
SPF エントリを提供していないドメインに対しても実行されます. They are also executed for domains that don't publish SPF entries.
次のコードを入れておくことを提案しておきます. I suggest adding
バックアップ MX 等の知っているメールサーバを信頼(trust)するメカニズムを 追加することもできます. といってもそれはせめてtcprulesを使って(SPFBEHAVIORを変更するなどで)行うべきことと思われます. You can also add mechanisms to trust known mail servers like backup MX servers, though I suggest that you should at least also use tcprules (to modify SPFBEHAVIOR).
: spfguess
guess ルール行を指定できます. You can specify a line with guess rules.
guess ルールとは: SPF ルールを提供していないドメインに対して適用されるルールです. Guess rules means: Rules that are used if the domain doesn't publish SPF rules.
ローカル spfrule は常にこの後に実行されます. The local spfrules are always executed afterwards.
次のコードを入れておくことを提案しておきます. a/24 mx/24 ptr. I suggest adding  a/24 mx/24 ptr.
これは必要というわけではありませんが一般的によい結果を得られるでしょう. (スパムフィルタが Received-SPF 行を評価するために.) This isn't needed but generally gives good results (for spam filters scoring Received-SPF lines).
: spfexp
もし望むのであればデフォルトの SPF 説明を上書きすることができます. You can override the default SPF explanation if you want.
説明とはメールがSMTPレベルでリジェクトされた時にSMTP送信者に返される 行です. マクロ展開を扱うこともできます. The explanation is the line returned to the SMTP sender when a mail is rejected at the SMTP level. You can use macro expansion.
ドメインが自分の説明を指定しているのならそれが替わりに使われます. If a domain specifies its own explanation it is going to be used instead.
メールをリジェクトしたときのSMTP回答は次のようになります: The SMTP answer when rejecting mails will look like:
550 展開された SPF 説明 (#5.7.1) 550 the expanded SPF explanation (#5.7.1)
マクロ展開を使いたいときは SPF ドラフトを参照してください. If you want the macro expansion explained look at the SPF draft.

: 古いバージョン Other Versions

古いバージョンのパッチもおいておきます: These are the older versions of my patch:


ここに, 皆さんから送られてきたパッチ もおいておきます. (他のパッチとつなげるためのパッチや, 他のパッチに対して 適用させるパッチ等です.) here you can find some other patches people sent me (that combine the patch with other available patches or apply on top of other patches).

Thanks to the PySPF author for the web site template and to Meng for SPF. :)

: 和訳 Translate to Japanese

山科 氷魚 (YAMASHINA Hio) <hio at hio dot jp> YAMASHINA Hio <hio at hio dot jp>

翻訳日: 2005-04-08 (金). translate at: Fri, Apr 08 2005.

Valid XHTML 1.0! Valid CSS!