{"id":3250,"date":"2025-08-02T18:22:13","date_gmt":"2025-08-02T10:22:13","guid":{"rendered":"https:\/\/jir.idv.tw\/wordpress\/?p=3250"},"modified":"2025-08-02T18:22:13","modified_gmt":"2025-08-02T10:22:13","slug":"razor2-razor2-check-failed-permission-denied-razor2-cant-read-conf-file-etc-spamassassin-razor-razor-agent-conf","status":"publish","type":"post","link":"https:\/\/jir.idv.tw\/wordpress\/?p=3250","title":{"rendered":"razor2: razor2 check failed: Permission denied razor2: Can&#8217;t read conf file: \/etc\/spamassassin\/razor\/razor-agent.conf"},"content":{"rendered":"<p>\u5347\u7d1a\u7cfb\u7d71\u5f8c\u53c8\u9047\u5230\u4e00\u6a23\u7684\u554f\u984c\uff0c\u7d66AI\u6559\u4e86\u4e00\u500b\u7c21\u55ae\u7684\u6aa2\u67e5\u65b9\u5f0f\u548c\u4fee\u6b63\u3002<br \/>\n<strong>\u00a08\u6708 02 18:08:26  spamd[301829]: razor2: razor2 check failed: Permission denied razor2: Can&#8217;t read conf file: \/etc\/spamassassin\/razor\/razor-agent.conf at \/usr\/share\/perl5\/Mail\/SpamAssassin\/Plugin\/Razor2.pm line 350.<\/strong><br \/>\n<code>#nano -l\u00a0\/usr\/share\/perl5\/Mail\/SpamAssassin\/Plugin\/Razor2.pm\u00a0<br \/>\n339<br \/>\n340\u00a0 \u00a0if ($err) {<br \/>\n341\u00a0 \u00a0 \u00a0chomp $err;<br \/>\n342\u00a0 \u00a0 \u00a0if ($err =~ \/(?:could not connect|network is unreachable)\/) {<br \/>\n343\u00a0 \u00a0 \u00a0 \u00a0# make this a dbg(); SpamAssassin will still continue,<br \/>\n344\u00a0 \u00a0 \u00a0 \u00a0# but without Razor checking.\u00a0 otherwise there may be<br \/>\n345\u00a0 \u00a0 \u00a0 \u00a0# DSNs and errors in syslog etc., yuck<br \/>\n346\u00a0 \u00a0 \u00a0 \u00a0dbg(\"$debug: razor2 $type could not connect to any servers\");<br \/>\n347\u00a0 \u00a0 \u00a0} elsif ($err =~ \/timeout\/i) {<br \/>\n348\u00a0 \u00a0 \u00a0 \u00a0dbg(\"$debug: razor2 $type timed out connecting to servers\");<br \/>\n349\u00a0 \u00a0 \u00a0} else {<br \/>\n350\u00a0 \u00a0 \u00a0 \u00a0warn(\"$debug: razor2 $type failed: $! $err\");<br \/>\n351\u00a0 \u00a0 \u00a0}<br \/>\n352\u00a0 \u00a0}<br \/>\n353<br \/>\n354\u00a0 \u00a0# razor also debugs to stdout. argh. fix it to stderr...<br \/>\n355\u00a0 \u00a0if (would_log('dbg', $debug)) {<br \/>\n356\u00a0 \u00a0 \u00a0open(STDOUT, \">&OLDOUT\");<br \/>\n357\u00a0 \u00a0 \u00a0close OLDOUT;<br \/>\n358\u00a0 \u00a0}<\/code><\/p>\n<p>\u6aa2\u67e5\u9019\u88e1\uff1a<br \/>\n# ps aux | grep spamd<br \/>\nroot\u00a0 \u00a0 \u00a0 301824\u00a0 1.5\u00a0 0.9 197716 148708 ?\u00a0 \u00a0 \u00a0 \u00a0Ss\u00a0 \u00a018:08\u00a0 \u00a00:01 \/usr\/bin\/perl -T -w \/usr\/sbin\/spamd &#8211;pidfile=\/run\/spamd.pid &#8211;create-prefs &#8211;max-children 5 &#8211;helper-home-dir<br \/>\nroot\u00a0 \u00a0 \u00a0 301843\u00a0 0.0\u00a0 0.8 197716 136216 ?\u00a0 \u00a0 \u00a0 \u00a0S\u00a0 \u00a0 18:08\u00a0 \u00a00:00 spamd child<br \/>\nroot\u00a0 \u00a0 \u00a0 301844\u00a0 0.0\u00a0 0.8 197716 136216 ?\u00a0 \u00a0 \u00a0 \u00a0S\u00a0 \u00a0 18:08\u00a0 \u00a00:00 spamd child<br \/>\n# ls -l \/etc\/spamassassin\/razor\/razor-agent.conf<br \/>\n-rw-r&#8212;&#8211; 1 root root 706\u00a0 2\u6708 17 20:33 \/etc\/spamassassin\/razor\/razor-agent.conf<\/p>\n<p>spamd \u662f\u7531 root \u4f7f\u7528\u8005\u555f\u52d5\uff0croot \u7406\u8ad6\u4e0a\u64c1\u6709\u5c0d\u6240\u6709\u6a94\u6848\u7684\u6700\u9ad8\u6b0a\u9650\uff0c\u4f46\u9019\u901a\u5e38\u662f\u555f\u52d5\u7a0b\u5e8f\u7684\u65b9\u5f0f\u3002SpamAssassin \u670d\u52d9\u70ba\u4e86\u5b89\u5168\u8003\u91cf\uff0c\u5728\u555f\u52d5\u5f8c\u6703\u81ea\u52d5\u964d\u7d1a\u5230\u4e00\u500b\u8f03\u4f4e\u6b0a\u9650\u7684\u4f7f\u7528\u8005\u4f86\u57f7\u884c\u5b50\u7a0b\u5e8f\uff08spamd child\uff09\u3002<br \/>\n\u9019\u500b\u4f7f\u7528\u8005\u53ef\u80fd\u53eb\u505a spamd\u3001debian-spamd \u6216\u5176\u4ed6\u540d\u7a31\u3002\u5728\u60a8\u7684\u65e5\u8a8c\u4e2d\uff0c\u932f\u8aa4\u8a0a\u606f\u4f86\u81ea\u65bc\u5b50\u7a0b\u5e8f\uff0c\u9019\u8868\u793a\u5b50\u7a0b\u5e8f\u5617\u8a66\u8b80\u53d6\u8a2d\u5b9a\u6a94\u6642\u88ab\u62d2\u7d55\u4e86(\u6a94\u6848\u662f706\u72c0\u614b)\u3002<\/p>\n<p># \u8b93\u6240\u6709\u4f7f\u7528\u8005\u90fd\u53ef\u4ee5\u9032\u5165\u9019\u500b\u76ee\u9304<br \/>\nsudo chmod 755 \/etc\/spamassassin\/razor\/<\/p>\n<p># \u8b93\u6240\u6709\u4f7f\u7528\u8005\u90fd\u53ef\u4ee5\u8b80\u53d6 razor-agent.conf \u6a94\u6848<br \/>\nsudo chmod 644 \/etc\/spamassassin\/razor\/razor-agent.conf<\/p>\n<p>#\u8b93 spamd \u670d\u52d9\u91cd\u65b0\u8f09\u5165\u8a2d\u5b9a\u3002<br \/>\nsudo systemctl restart spamd.service<\/p>\n<p>#\u91cd\u65b0\u555f\u52d5\u5f8c\uff0c\u518d\u6aa2\u67e5\u65e5\u8a8c\u3002\u9019\u6b21\u61c9\u8a72\u5c31\u4e0d\u6703\u518d\u770b\u5230 Permission denied \u7684\u932f\u8aa4\u8a0a\u606f\u4e86\u3002<br \/>\nsudo journalctl -u spamd.service &#8211;since &#8220;1 minute ago&#8221;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5347\u7d1a\u7cfb\u7d71\u5f8c\u53c8\u9047\u5230\u4e00\u6a23\u7684\u554f\u984c\uff0c\u7d66AI\u6559\u4e86\u4e00\u500b\u7c21\u55ae\u7684\u6aa2\u67e5\u65b9\u5f0f\u548c\u4fee\u6b63\u3002 \u00a08\u6708 02 18:08:26 spamd[301829]: razor2: razor2 check failed: Permission denied razor2: Can&#8217;t read conf file: \/etc\/spamassassin\/razor\/razor-agent.conf at \/usr\/share\/perl5\/Mail\/SpamAssassin\/Plugin\/Razor2.pm line 350. #nano -l\u00a0\/usr\/share\/perl5\/Mail\/SpamAssassin\/Plugin\/Razor2.pm\u00a0 339 340\u00a0 \u00a0if ($err) { 341\u00a0 \u00a0 \u00a0chomp $err; 342\u00a0 \u00a0 \u00a0if ($err =~ \/(?:could not connect|network is unreachable)\/) { 343\u00a0 \u00a0 \u00a0 \u00a0# make this a dbg(); SpamAssassin will still continue, 344\u00a0 \u00a0 \u00a0&#8230; <a href=\"https:\/\/jir.idv.tw\/wordpress\/?p=3250\" class=\"readmore\">Read more (\u5b8c\u6574\u6587\u7ae0\u5167\u5bb9)<span class=\"screen-reader-text\">razor2: razor2 check failed: Permission denied razor2: Can&#8217;t read conf file: \/etc\/spamassassin\/razor\/razor-agent.conf<\/span><span class=\"fa fa-angle-double-right\" aria-hidden=\"true\"><\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-3250","post","type-post","status-publish","format-standard","hentry","category-4","content-layout-excerpt-thumb"],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3250"}],"version-history":[{"count":1,"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3250\/revisions"}],"predecessor-version":[{"id":3251,"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3250\/revisions\/3251"}],"wp:attachment":[{"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}