情弱エンジニアのなかのblog

一人前のエンジニアになる為のブログです

SPF設定について

メールの送信でSPF設定というものがあるのですが、これが結構ややこしいので 一度記事にまとめたいと思います。

1.SPF設定とは

一般財団法人 インターネット協会SPF設定の概要がこちらになります

Sender Policy Framework(SPF)は、SMTPを利用したインターネット電子メールの送受信に
おいて送信者のドメインの偽称を防ぎ、正当性を検証する仕組みのひとつとして
元Pobox社のMeng Wong氏により提唱された送信ドメイン認証方式である。

迷惑メールは、一般的に送信元アドレスを偽称して送信してくることが多い。
送信元を偽ることで、受信者が迷惑メールの送信者を突き止めることを困難にするためである。
インターネット上では、一般にSMTP(またはESMTP)で電子メールの配送を行う。
SMTP通信による電子メールの配送では、送信者メールアドレスが2種類与えられる。
電子メールのFrom:ヘッダー上に示される送信者アドレスと、
SMTP通信でのMAIL FROM:コマンドの引数として与えられるメールアドレスである。
SMTPでは、この2つが同じでなくてはいけないという規則はなく、
また、一般に任意のアドレスを指定可能であるため送信者の偽称が非常に簡単に行える。

とあります。。かなりくだいて説明しますと

SPF設定とはメールを送信した際にそのメールが迷惑メールとして扱われないための設定になります。

そもそもなぜ迷惑メールと間違われる可能性があるかといいますと メールは悪意のある第三者が送信元のメールアドレスを自由に設定することが可能です 受信者は送られてきたメールが正しい送信者なのか悪意のある第三者なのか判断できずにメールを迷惑メールとしてゴミ箱に入れてしまう可能性があります。

せっかく送信したメールが迷惑メールとして扱われて受信者に見られなくては意味がないです これを解決するのがSPF設定になります。 メールアドレスにSPF設定をすることで「このメールは正しい送信者からおくられてますよ」 ということになり受信者は安心してメールを受け取ることができます。

2.SPF設定方法

ではどうしたらSPF設定ができるのか DNSサーバのゾーンファイルのDNSレコードにドメイン名を記載すればオッケーです。

、、、だからどういうことだよといいますと まずメールアドレスというのはそのドメインを取得しているサービスがあります ドメインとはaaa@bbb.comなどの@以降の部分になります サービスはいくつかあります。例えば

など、ほかにもあります ドメインを取得する際に利用したサービスで設定が可能です。 ちなみにドメインの管理するサービスを途中で変えたら変更先のサービスで設定する必要があります。 設定方法はサービスによって違うので調べて下さいとしか言えませんが おそらく「TXTレコードの設定について~」などがあるはずなので そちらに設定を記載します。記載方法は用途によって分かれるので下記サイトを ご参考にしてください。

SPF(Sender Policy Framework) : 迷惑メール対策委員会

DNSのTXTレコードのSPF設定の要点 - Qiita

3.SPFレコードの記載を依頼する場合

特殊なケースですが他社ドメインにTXTレコードを追記してもらう場合は 先程のTXTレコードの記載設定の部分にレコードを追記してもらう必要があります。 その際追記の注意点として以下のようなものがあります。

SPFレコードを複数行に記載しない

例えば

aaa.jp.   IN TXT "v=spf1 +ip4:192.168.100.0/24 ~all"
                     "v=spf1 +ip4:10.0.0.0/24 ~all"

のように複数行に記述してはいけません 正しくは

aaa.jp.   IN TXT "v=spf1 +ip4:192.168.100.0/24 +ip4:10.0.0.0/24 ~all"

のように記載してもらう必要があります。

・必要な空白文字を入れる

例えば

aaa.jp.   IN TXT "v=spf1 +ip4:192.168.100.0/24" "+ip4:10.0.0.0/24 ~all"

のように記述すると

aaa.jp.   IN TXT "v=spf1 +ip4:192.168.100.0/24+ip4:10.0.0.0/24 ~all"

と解釈されます。何がいけないかといいますと+の前にスペースが必要になります なので

aaa.jp.   IN TXT "v=spf1 +ip4:192.168.100.0/24 " "+ip4:10.0.0.0/24 ~all"

もしくは

aaa.jp.   IN TXT "v=spf1 +ip4:192.168.100.0/24" " +ip4:10.0.0.0/24 ~all"

と記載する必要があります。

細かいことですが記述方法はしっかり確認しましょう また正しくspf設定が記述されているかは 以下のサイトで確認できます。

SPF Query Tool

Sender Policy Framework (SPF) Record Lookup - SPF Check - MxToolBox

ということでSPFの概要に関して記載いたしました。 今回の記事を書くにあたり以下のサイトを参考にさせて頂きました。

インターネット用語1分解説~SPFとは~ - JPNIC

http://wa3.i-3-i.info/word12304.html

ドメインのSPFレコードの設定 – さくらのサポート情報

DNS サーバ構築その6

前回に引き続いてまずはエラーの対処をしていきます。

f:id:nonaka-katuma-hal:20180409230056j:plain

「/etc/named.rfc1912.zones」でエラーが出ている部分をコメントアウトにします。

f:id:nonaka-katuma-hal:20180409230125j:plain

1つエラーが消えました、続いて他のエラー部分もコメントアウトしていきます。

f:id:nonaka-katuma-hal:20180409230132j:plain

さてこれで再度BINDの起動をします!

f:id:nonaka-katuma-hal:20180409230416j:plain

まだ駄目なようです。。

今回はここまでになります

DNS サーバ構築その5

前回

named-checkconf

で見つかったエラーを取り除いていきます。

まず「when using 'view' statements, all zones must be in views 」というエラーが出ていたので named.confの中の記述でzone設定はすべてViewの中に書き込んでくださいというものだったので zone設定をViewの中に記載して完了

つづいて「zone 'localhost.localdomain' : already exists previous definition : /etc/named.2.zones:13」というエラーが発生。 こちらlocal hostに対する設定を2回書き込んでいるというエラーだったので該当行を削除して解決

f:id:nonaka-katuma-hal:20180408131723j:plain

うーんまだまだエラー原因があるので対応していきます。

今回はここまでになります。

DNS サーバ構築その4

では前回の続きから記載していきます。

zoneファイル

zoneファイルの記載をしていきます。 初めのzone項目はホスト名からIPアドレスを求める「正引き」についての設定ファイルを指定します。 2つめのzone項目はIPアドレスからホスト名を求める「逆引き」についての設定ファイルを指定します。

f:id:nonaka-katuma-hal:20180401134205j:plain

正引きファイル

正引きファイルの作成を行います。

vim /var/named/kzserver.mydns.jp.db

f:id:nonaka-katuma-hal:20180401134633j:plain

逆引き

逆引きファイルの作成を行います。

vim /var/named/1.168.192.in-addr.arpa.db

f:id:nonaka-katuma-hal:20180401134808j:plain

namedサービスを有効にする

BINDを再起動します。がうまく動きません。

f:id:nonaka-katuma-hal:20180401134911j:plain

f:id:nonaka-katuma-hal:20180401135000j:plain

前に行った

named-checkconf

を行います。

f:id:nonaka-katuma-hal:20180401135038j:plain

named.confの設定で問題があるようです。。

今回はここまでになります。

DNS サーバ構築その3

さてDNSサーバ構築を進めている訳ですが、ネットで調べるだけでは限界を感じて、専用書籍を購入してみました。 そこで再度named.confの設定に追記をしていきたいと思います。

vim /etc/named.conf

options の変更

どのネットワークからのリクエストを受け付けるかの設定変更をします LANのサブネットを設定します。

f:id:nonaka-katuma-hal:20180325180330j:plain

自宅のLAN内にあるパソコンからリクエストを受けるようにします、こちらもサブネットを記載します。

f:id:nonaka-katuma-hal:20180325181608j:plain

zoneファイルの指定

LANからの問い合わせの設定になります。

f:id:nonaka-katuma-hal:20180325182241j:plain

実際にzoneファイルを読み込む設定を書きます。

f:id:nonaka-katuma-hal:20180325182419j:plain

zoneファイルの設定

zoneファイルに正引き設定等を記載していきます。

vim /var/named/named.kzserver.mydns.jp.zones

といったところで今回は終わりになります。

DNS サーバ構築その2

さて前回設定がうまくいかないところで中断していましたが続きから書いていきます

前回の記事

nonaka-katuma-hal.hatenablog.com

まずはnamed.confの設定が間違っていないか

named-checkconf

というコマンドで調べてみます。

f:id:nonaka-katuma-hal:20180318165926j:plain

named.confの43行目で色々とエラーが出ていると表示されたので確認すると「;」が抜けていたりしていまして、、 修正を行ってから

service named start

をしてから状況を確認する

service named status

をすると

f:id:nonaka-katuma-hal:20180318170515j:plain

成功しているようです。

それではドメインから IPアドレスを確認していきたいと思います。

rndc.confの設定

rndcは、ローカル上またはリモート上にあるBIND9を制御するツールで 設定の再読み込み、namedサービスの停止(起動はできない)、統計情報の表示、キャッシュのクリアなどのために使用します。

まずはrndc の確認をします

rndc status

f:id:nonaka-katuma-hal:20180318193256j:plain

どうやら設定が間違っているということで

/etc/rndc.conf

の設定を行います

今回はここまでになります。

以下のサイトを参考にしました

CentOS 7: bindをインストールして内部ネットワーク向けにDNSサーバを立ち上げる - Narrow Escape

DNS サーバ構築その1

LINUXDNSサーバ構築に関して試してみたので手順などを記載します。

DNSは名前解決ができるサーバーになります。 名前解決はドメイン名からIPアドレスまたその逆のIPアドレスからドメイン名を返すことになります。

まずはBINDのインストールになります。

BIND - Wikipedia

yumを使ってインストールしていきます。

f:id:nonaka-katuma-hal:20180311231305j:plain

chroot

ルートディレクトリを変更するコマンドで今回はBINDでchroot機能を指定したのでサブディレクトリがルートディレクトリとして扱われます。

BINDの起動の前に設定が必要なので以下コマンドを実行する

f:id:nonaka-katuma-hal:20180311233430j:plain

これでBINDの起動を行います

f:id:nonaka-katuma-hal:20180312001131j:plain

起動しない、、

f:id:nonaka-katuma-hal:20180312001225j:plain

原因を調べてるために以下実行しました。

f:id:nonaka-katuma-hal:20180312001642j:plain

ゾーンファイルの設定が間違っているのか、、ちなみにゾーンファイルについては以下サイトを参考にしてください。

http://wa3.i-3-i.info/word12283.html

原因の調査をしていきたいのですが今回はここまでで続きは次回記載します。

以下のサイトを参考にしました。

DNSサーバー構築と設定。初心者でもできた6つの手順(CentOS)