自ドメイン宛のメールは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]
コメント