質問
spamassassinがLinuxシステムのDNSサーバーをバイパスしてDNSBLにクエリを実行できるようにする方法はありますか?
背景情報
サーバーがメールを受信すると、spamassassinによってチェックされます。このチェックの1つは、DNSブラックリストで関連するメールサーバーを検索します。残念ながら、私のプロバイダーのDNSは、これらのBLを照会することを許可されていません。これは、私が受信するすべての電子メールのspamassassinのヘッダー情報URIBL_BLOCKEDによって示されます。私もこれを手動でテストしました:
root@net:# Dig 2.0.0.127.multi.uribl.com txt +short
"127.0.0.1 -> Query Refused. See http://uribl.com/refused.shtml for more information [Your DNS IP: 123.123.123.123]"
(123.123.123.123
は私の/etc/resolv.conf
でDNSとして構成されています。)
プロバイダーのリカーサーを使用せずに、ネームサーバーの1つを手動でクエリすると直接(@ cc.uribl.comを参照)、私は答えを得る:
root@net:# Dig 2.0.0.127.multi.uribl.com txt @cc.uribl.com. +short
permanent testpoint
(これは、この結果を与えることになっているそのBLのテストクエリであることに注意してください)
概要
では、このシステムにdns recursorをインストールする以外に、spamassassinがdnsblクエリにシステムのデフォルトのdnsを使用しないようにする方法はありますか?
[〜#〜] update [〜#〜]
わかりました。実際には、ローカルのDNSリカーサーをインストールしても問題はありません。軽量でセットアップが簡単で、BLの問題はもうありません。
Spamassassin( Mail :: SpamAssassin :: DnsResolver )は Net :: DNS :: Resolver Perlモジュールを使用します。
spamassassinが使用するネームサーバーを RES_NAMESERVERS
環境変数。
古いバージョンの Spamassassinのドキュメント から「DNSBLクエリの転送を無効にする」に従って、ラップトップにBINDNamedを設定しました。 /etc/resolv.conf
が127.0.0.1を指す必要があります。
しかし、私はこれを置くことによってのみ機能させることができました
static domain_name_servers=127.0.0.1
/etc/dhcpcd.conf
の終わりに。次に、/etc/resolv.conf
の通常である値を/etc/named.conf
(forwarders { 192.168.1.1; }
)にコピーする必要がありました。これは、ラップトップを別の場所に持っていくまではうまく機能しました。新しいDHCPサーバーに接続した後、Namedを古いローカルアドレスにポイントしていたため、DNSが機能していないことに驚かされました。
私の意見では、ローカルのNamedを使用してonlySpamassassinを使用することで、この問題を回避する方がはるかに優れています。そこで、元のdhcpcd.conf
を復元し、Spamassassinを127.0.0.1にポイントしました。これは、次の2つの方法のいずれかで実行できます。
AnFiの回答に従って、環境を変更できます。サービスファイル内/etc/systemd/system/spamassassin.service
:
[Service]
Environment="RES_NAMESERVERS=127.0.0.1"
...
ただし、上記のドキュメントによると、これはSpamassassinの構成ファイルlocal.cf
で構成することもできます。これはおそらくもっとエレガントです:
dns_server 127.0.0.1