Spamassassin用に自分用キャッシュDNSサーバを立ち上げてみた | ミンキームーンネットワーク

Spamassassin用に自分用キャッシュDNSサーバを立ち上げてみた

ubuntu インターネット

自ドメイン宛のメールはspamassassinを使ってSPAMを振り落としているのだけど、以下のようにドメイン名による判別が上手くいかない内容でエラーを吐いている。

pts rule name              description
---- ---------------------- --------------------------------------------------
0.0 URIBL_BLOCKED     ADMINISTRATOR NOTICE: The query to URIBL was blocked.

ふむ。どうやらSPAM判別を行うDNSサーバ側で 8.8.8.8 やさくらインターネット提供のDNSサーバが拒否られてしまっているようだ。

仕方が無いので unbound で自分用のキャッシュDNSサーバを立ち上げてみたので設定内容の備忘録。必要最小限のリソースにしているVPSサーバなのであまりサービスは立ち上げたくなかったのだけど…

unboundのインストール(ubuntu)

# apt-get install unbound

設定系のファイルを作成

/etc/unbound/unbound.conf.d/local.conf を作成

server:

	interface: 0.0.0.0

	access-control: 0.0.0.0/0 refuse
	access-control: 127.0.0.1/8 allow

	hide-version: yes
	hide-identity: yes

	root-hints: "/etc/unbound/root.hints"

	logfile: "/var/log/unbound/unbound.log"
	use-syslog: no
	log-time-ascii: yes

remote-control:
	control-enable: yes
	control-interface: 127.0.0.1

	server-key-file: "/etc/unbound/unbound_server.key"
	server-cert-file: "/etc/unbound/unbound_server.pem"
	control-key-file: "/etc/unbound/unbound_control.key"
	control-cert-file: "/etc/unbound/unbound_control.pem"

root.hints を作成

# curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache

root DNSサーバのアドレスが変わることもままあるので、定期的にヒントファイルは更新した方が良い。サクッと/etc/cron.monthlyに上のコマンドをシェルスクリプトで放り込んで月次で更新させておこう

spamassassin の local.conf に以下の行を追加

dns_available yes

参考: https://cwiki.apache.org/confluence/display/SPAMASSASSIN/CachingNameserver

ログファイルを保存するディレクトリを掘る

# mkdir /var/log/unbound
# chown unbound:unbound /var/log/unbound

ログファイルを自動でローテートさせる

# vi /etc/logrotate.d/unbound

/var/log/unbound/*.log {
    weekly
    rotate 10
    create 644 unbound unbound
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /usr/sbin/unbound-control log_reopen > /dev/null 2>&1 || true
    endscript
}

書式にミスがないことを確認

# unbound-checkconf
unbound-checkconf: no errors in /etc/unbound/unbound.conf

ヨシ!
( /etc/unbound/unbound.confの中で /etc/unbound/unbound.conf.d.*.conf はincludeされている)

サービスとして起動 ※これは失敗します

# systemctl start unbound

Job for unbound.service failed because the control process exited with error code.
See “systemctl status unbound.service” and “journalctl -xeu unbound.service” for details.

あれ? エラーだ。原因調査しよう。

立ち上がらない原因の調査

DNSが使う53番ポートを確認

# ss -lntp | grep unbound
LISTEN           0                4096                       127.0.0.53%lo:53                             0.0.0.0:*               users:(("systemd-resolve",pid=598,fd=14)) 

あぁ、systemd-resolvが53番ポートを占拠してるからunboundが立ち上げられないのか。

53番ポートで動作している既存のsystemd-resolvedを停止

# systemctl stop systemd-resolved
# systemctl disable systemd-resolved

/etc/resolv.confを書き換え

systemd-resolved を disable したことで
resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
このシンボリックリンクが無くなっていると思われるので、

# cd /etc
# mv resolv.conf resolv.conf.old
# vi resolv.conf

で新規にファイルを作成。

nameserver 127.0.0.1
nameserver 1.1.1.1

nameserver 127.0.0.1 を追加。予備のDNSサーバはお好みで。

unboundを有効化

systemctl enable unbound
systemctl start unbound

動作確認

# dig test.uribl.com.multi.uribl.com txt +short
 "permanent testpoint"

ヨシ!
自分のサーバからDNS問い合わせが出るようになったので、相手先から拒否されなくなりました。

良い感じでSpamhaus DBLも活用できるようになってるね。

pts rule name              description
---- ---------------------- --------------------------------------------------
 10 URIBL_DBL_SPAM         Contains a spam URL listed in the Spamhaus DBL
                           blocklist
                           [URIs: ken594.com]
 14 RCVD_IN_PBL            RBL: Received via a relay in Spamhaus PBL
                           [152.32.149.134 listed in zen.spamhaus.org]
 10 RCVD_IN_SBL            RBL: Received via a relay in Spamhaus SBL
0.4 URIBL_SBL_A            Contains URL's A record listed in the Spamhaus SBL
                           blocklist
                           [URIs: ken594.com]
0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
-0.0 SPF_PASS               SPF: sender matches SPF record
1.9 URIBL_ABUSE_SURBL      Contains an URL listed in the ABUSE SURBL
                           blocklist
                           [URIs: ken594.com]

コメント