{"id":3252,"date":"2025-08-05T10:24:31","date_gmt":"2025-08-05T02:24:31","guid":{"rendered":"https:\/\/jir.idv.tw\/wordpress\/?p=3252"},"modified":"2025-08-05T19:45:39","modified_gmt":"2025-08-05T11:45:39","slug":"ubuntu%e7%b3%bb%e7%b5%b1%e5%8d%87%e7%b4%9a%e5%be%8c%ef%bc%8cpostfix%e9%83%b5%e4%bb%b6%e4%bc%ba%e6%9c%8d%e5%99%a8%e9%85%8dmailscanner%e3%80%81opendikm%e3%80%81opendmarc%e5%8f%af%e8%83%bd%e6%9c%83","status":"publish","type":"post","link":"https:\/\/jir.idv.tw\/wordpress\/?p=3252","title":{"rendered":"UBUNTU\u7cfb\u7d71\u5347\u7d1a\u5f8c\uff0cPostfix\u90f5\u4ef6\u4f3a\u670d\u5668\u914dmailscanner\u3001opendikm\u3001opendmarc\u53ef\u80fd\u6703\u904b\u4f5c\u4e0d\u6b63\u5e38\u7684\u7d00\u9304"},"content":{"rendered":"<p>\u53bb\u5e74\u597d\u4e0d\u5bb9\u6613\u6478\u7d22\u641e\u5b9a\u7684\u90f5\u4ef6\u4f3a\u670d\u5668\uff0c\u4eca\u5e74Q3\u53c8\u518d\u5ea6\u767c\u751f\u5de5\u4f5c\u4e0d\u6b63\u5e38\u7684\u554f\u984c\u3002<br \/>\n<a href=\"https:\/\/jir.idv.tw\/wordpress\/?p=3124\" target=\"_blank\">MAIL\u4f3a\u670d\u5668Dovecot + Postfix + Mailscanner\u5b89\u88dd\uff0c\u7d00\u9304&#038;\u66f4\u65b0 https:\/\/jir.idv.tw\/wordpress\/?p=3124<\/a><br \/>\n<a href=\"https:\/\/jir.idv.tw\/wordpress\/?p=3146\" target=\"_blank\">POSTFIX\u90f5\u4ef6\u4f3a\u670d\u5668\uff0c\u67b6\u8a2dMailscanner\u53ef\u80fd\u6703\u9047\u5230OpenDKIM\u885d\u7a81\u7684\u89e3\u6c7a\u65b9\u6cd5 https:\/\/jir.idv.tw\/wordpress\/?p=3146<\/a><br \/>\n\u56e0\u70ba\u90f5\u4ef6\u4e3b\u6a5f\u914d\u5408UBUNTU\u7cfb\u7d71\u5347\u7d1a\uff0c\u4f46\u662f\u9678\u9678\u7e8c\u7e8c\u767c\u73fe\u529f\u80fd\u670d\u52d9\u6709\u554f\u984c\uff0c\u4e5f\u9023\u5e36\u767c\u73fe\u5347\u7d1a\u5f8c\uff0c\u958b\u59cb\u4e00\u76f4\u6536\u5230YAHOO\u8ca0\u8cac\u4efb\u7684\u62d2\u6536\u4fe1\u4ef6\u3002<br \/>\n\u4eca\u5e74\u958b\u59cb\u5927\u91cf\u5229\u7528AI\u4e92\u52d5\u4f86\u89e3\u6c7a\u6211\u4e00\u77e5\u534a\u89e3\u3001\u6216\u662f\u4e0d\u719f\u7a14\u7684\u6307\u4ee4\u548c\u529f\u80fd\u8ffd\u52a0\u3002<br \/>\n\u9019\u6b21\u7d93\u9a57\u4e5f\u771f\u7684\u8981\u518d\u4f86\u611f\u5606AI\u3001\u8b9a\u5606AI\u4e86&#8230;\u3002<\/p>\n<p>\/etc\/postfix\/master.cf\u9019\u500b\u6a94\u6848\u3002<br \/>\n\u76ee\u524d\u904b\u4f5c\u65b9\u5f0f\u662f\u9019\u6a23\uff1a<br \/>\n<code><br \/>\n#1.\u8dd1OpenDKIM\u7684PORT: 8891<br \/>\n#2.\u8dd1OpenDMARC\u7684.sock<br \/>\n#3.\u8dd1MailScanner\u7684PORT: 33333<br \/>\nsmtpd_milters = inet:localhost:8891, local:opendmarc\/opendmarc.sock, inet:127.0.0.1:33333<br \/>\nnon_smtpd_milters = $smtpd_milters<\/code><\/p>\n<p><strong>#1.\u8dd1OpenDKIM\u7684PORT: 8891<\/strong><br \/>\n\u6307\u4ee4\u53ef\u4ee5\u9019\u6a23\u78ba\u8a8d\uff0c\u53ea\u662f\u4ee4\u4eba\u751f\u6c23\u7684\u670d\u52d9\u72c0\u614b\u56de\u994b\u6839\u672c\u770b\u4e0d\u51fa\u662f\u6709\u7121\u7570\u5e38(\u7121\u4efb\u4f55\u6545\u969c\u8a0a\u606f)\u3002<br \/>\n<code>sudo netstat -tlnp | grep 8891<br \/>\n(\u7a7a\u503c)<br \/>\nsudo systemctl status opendkim.service<\/p>\n<p>\u25cf opendkim.service - LSB: Start the OpenDKIM service<br \/>\n\u00a0 \u00a0 \u00a0Loaded: loaded (\/etc\/init.d\/opendkim; generated)<br \/>\n\u00a0 \u00a0 \u00a0Active: active (exited) since Tue 2025-08-05 08:36:19 CST; 28min ago<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0Docs: man:systemd-sysv-generator(8)<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 CPU: 5ms<br \/>\n\u00a08\u6708 05 08:36:19 linux systemd[1]: Starting opendkim.service - LSB: Start the OpenDKIM service...<br \/>\n\u00a08\u6708 05 08:36:19 linux systemd[1]: Started opendkim.service - LSB: Start the OpenDKIM service.<\/code><br \/>\n\u7de8\u8f2fOpenDKIM\u8a2d\u5b9a\u6a94\u6848\uff0c\u78ba\u5b9a8891\u7684PORT\u771f\u7684\u6709\u8ddfpostfix\u4e00\u6a23\u5b9a\u7fa9\u548c\u4f7f\u7528\u3002<br \/>\n<code>sudo nano \/etc\/default\/opendkim<\/p>\n<p># default:<br \/>\n# SOCKET=local:$RUNDIR\/opendkim.sock<br \/>\n# listen on loopback on port 12345:<br \/>\nSOCKET=inet:8891@localhost<\/code><br \/>\n\u6211\u7684\u8a2d\u5b9a\u6a94\u672c\u4f86\u662f\u4f7f\u7528.SOCK\uff0c\u70ba\u4e86\u914d\u5408\/etc\/postfix\/master.cf\uff0c\u4fee\u6539\u5c0d\u61c9\u7528\u6cd5\u548c\u4e5f\u8b93\u672a\u4f86\u700f\u89bd\u67e5\u4fee\u5bb9\u6613\u8fa8\u8b58\u3002<br \/>\n\u4fee\u6539\u6210\u547c\u53eb8891\u57e0\u5f8c\uff0c\u8981\u8a18\u5f97\u91cd\u555f\u670d\u52d9sudo systemctl restart opendkim.service\u3002<br \/>\n\u9019\u6642\u5019\u5728\u6aa2\u67e5\u72c0\u614b\uff0c\u5c31\u6703\u770b\u5230\u6709\u76f8\u95dc\u7684\u958b\u555fPORT\u80fd\u7528\u4e86\u3002<br \/>\n<code>netstat -tlnp | grep 8891<\/p>\n<p>tcp 0 0 127.0.0.1:8891 LISTEN 274850\/opendkim<\/code><\/p>\n<p><strong>#2.\u8dd1OpenDMARC\u7684.sock<\/strong><br \/>\n\u96d6\u7136\u6709\u57f7\u884c\u904e\u5df2\u7d93\u6709\u7684\u72c0\u614b\uff0c\u555f\u52d5\u670d\u52d9\u770b\u8d77\u4f86\u6c92\u6709\u89f8\u767c\u4efb\u4f55\u53cd\u61c9\u548c\u6a94\u6848\u3002<br \/>\nsudo mkdir -p \/var\/spool\/postfix\/opendmarc<br \/>\nsudo chown opendmarc:opendmarc \/var\/spool\/postfix\/opendmarc<br \/>\nsudo chmod 755 \/var\/spool\/postfix\/opendmarc<br \/>\n\u6aa2\u67e5\u5c31\u6703\u767c\u73feOpenDMARC\u7684\u670d\u52d9\u5c31\u662f\u6c92\u6b63\u5e38\u555f\u52d5\uff0c\u6307\u4ee4ps -ef | grep opendmarc\u4e5f\u4e0d\u6703\u5217\u51fa\u4efb\u4f55\u72c0\u614b\u3002<br \/>\n\u6240\u4ee5\u5b9a\u7fa9\u6a94\u7684.PID\u6a94\u6848\u4e5f\u5c31\u6c92\u6709\u5b58\u5728\uff0cls \/var\/run\/opendmarc\/opendmarc.pid\u3002<br \/>\n\u8a66\u8457\u6aa2\u67e5sudo grep opendmarc \/var\/log\/mail.log\u6703\u770b\u5230\u5927\u91cf\u985e\u4f3c\u9019\u6a23\u7684\u932f\u8aa4\u8a0a\u606f\uff1a<br \/>\n&#8230;<br \/>\n2025-08-03T10:01:06.446707+08:00 linux postfix\/smtpd[413815]: warning: connect to Milter service local:opendmarc\/opendmarc.sock: No such file or directory<br \/>\n2025-08-03T10:09:18.402542+08:00 linux postfix\/smtpd[414791]: warning: connect to Milter service local:opendmarc\/opendmarc.sock: No such file or directory<br \/>\n&#8230;<\/p>\n<p>\u78ba\u5b9a\u4e00\u4e0b\u5347\u7d1a\u5f8c\uff0c\u662f\u4e0d\u662f\u6709\u4ecd\u5b89\u88dd\u9019\u500b\u8edf\u9ad4\uff0csudo apt-get install opendmarc\u3002<br \/>\n\u56e0\u70ba\u670d\u52d9\u555f\u52d5\u5f8c\uff0c\u9084\u662f\u6c92\u627e\u5230\u5c0d\u61c9\u7684\u6a94\u6848\uff0c\u6240\u4ee5\u8a66\u8457\u770b\u670d\u52d9\u89f8\u767c\u7684\u6a5f\u5236\u3002<br \/>\n\u767c\u73fe\u4ed6\u4e0d\u662f\u8b80\u8a2d\u5b9a\u6a94\u548c\u4f7f\u7528.sock\u6a94\u6848\uff0c\u6240\u4ee5\u8981\u4fee\u6539[Service]\u7684\u5167\u5bb9\u4f5c\u914d\u5408\u3002<br \/>\n<code>sudo nano \/lib\/systemd\/system\/opendmarc.service\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/p>\n<p>[Unit]<br \/>\nDescription=OpenDMARC Milter<br \/>\nDocumentation=man:opendmarc(8) man:opendmarc.conf(5)<br \/>\nAfter=network-online.target nss-lookup.target<br \/>\nWants=network-online.target<br \/>\n[Service]<br \/>\nType=forking<br \/>\nPIDFile=\/run\/opendmarc\/opendmarc.pid<br \/>\n#ExecStart=\/usr\/sbin\/opendmarc<br \/>\nExecStart=\/usr\/sbin\/opendmarc -c \/etc\/opendmarc.conf -p local:\/var\/spool\/postfix\/opendmarc\/opendmarc.sock<br \/>\nExecReload=\/bin\/kill -USR1 $MAINPID<br \/>\nRestart=on-failure<br \/>\nUser=opendmarc<br \/>\n[Install]<br \/>\nWantedBy=multi-user.target<\/code><br \/>\n\u5b58\u6a94\u4fee\u6539\u5f8c\uff0c\u91cd\u65b0\u8b80\u6a94\u6848\u548c\u91cd\u65b0\u555f\u52d5\u670d\u52d9\uff0c\u53bb\u770b\u66f4\u6539\u5f8c\u7684\u72c0\u614b\u3002<br \/>\nsudo systemctl daemon-reload<br \/>\nsudo systemctl restart opendmarc.service<br \/>\nsudo systemctl status opendmarc.service<br \/>\nsudo ls -l \/var\/spool\/postfix\/opendmarc\/opendmarc.sock<br \/>\n\u61c9\u8a72\u5c31\u6703\u6aa2\u67e5\u5230\u6062\u5fa9\u6b63\u5e38\u904b\u4f5c\u4e86\u3002<br \/>\n<code>sudo ls -l \/var\/spool\/postfix\/opendmarc\/opendmarc.sock<\/p>\n<p>srwxrwxr-x 1 opendmarc opendmarc 0\u00a0 8\u6708\u00a0 5 09:02 \/var\/spool\/postfix\/opendmarc\/opendmarc.sock<\/code><\/p>\n<p>\u800cMailScanner\u672c\u4f86\u5c31\u6536\u4fe1\u767c\u4fe1\u90fd\u6b63\u5e38\uff0c\u5c31\u7576\u4f5c33333\u57e0\u662f\u53ef\u4ee5\u904b\u4f5c\u7684\u3002<br \/>\n\u6216\u8005\u53ef\u4ee5\u4e0bnetstat -tlnp | grep 33333\u4f86\u78ba\u5b9a\u72c0\u614b\u3002<\/p>\n<p>\u6700\u5f8c\uff0c\/etc\/postfix\/main.cf \u4e2d\uff0csmtpd_milters \u548c non_smtpd_milters \u8abf\u6574\u914d\u5408\u5f8c\u7684\u8a2d\u5b9a\u5982\u4e0b\uff1a<br \/>\n<code>#1.\u8dd1OpenDKIM\u7684PORT: 8891<br \/>\n#2.\u8dd1OpenDMARC\u7684.sock<br \/>\n#3.\u8dd1MailScanner\u7684PORT: 33333<br \/>\nsmtpd_milters = inet:localhost:8891, local:opendmarc\/opendmarc.sock, inet:127.0.0.1:33333<br \/>\n# \u5982\u679cMailScanner\u4ecd\u662f\u4f7f\u7528HOLD\u65b9\u5f0f\u88ab\u52d5\u5f0f\u53bb\u6383\u4fe1\u4ef6\uff0c\u90a3\u8981\u6539\u6210\u9019\u6a23\uff1a<br \/>\n#smtpd_milters = inet:localhost:8891, local:opendmarc\/opendmarc.sock<br \/>\nnon_smtpd_milters = $smtpd_milters<\/code><br \/>\n\u628a\u9019\u5e7e\u500b\u670d\u52d9\u91cd\u555f\uff0c\u8a18\u5f97\u770b\u4e00\u4e0bstatus\u72c0\u614b\u3002<br \/>\nsudo systemctl restart opendkim.service<br \/>\nsudo systemctl restart opendmarc.service<br \/>\nsudo systemctl restart mailscanner.service<br \/>\nsudo systemctl restart postfix.service<\/p>\n<p>\u9019\u5e7e\u500b\u76f8\u95dc\u7684\u670d\u52d9\u91cd\u555f\u5f8c\uff0c\u5c31\u53ef\u4ee5\u518d\u53bb<a href=\"https:\/\/dkimvalidator.com\" target=\"_blank\" rel=\"noopener\">dkimvalidator.com<\/a>\u53bb\u6e2c\u8a66\u9a57\u8b49\u4fe1\u4ef6\u662f\u4e0d\u662f\u6709\u6b63\u78ba\u7684\u5c01\u88dd\u5ba3\u544a\u9032\u53bb\u3002<br \/>\n\u50cf\u6211\u9019\u6b21\u7b2c\u4e03\u6b21\u4fee\u6539\u7684\u6aa2\u67e5\uff0c\u7d42\u65bc\u770b\u5230DKIM\u7684\u90a3\u884c\u6700\u91cd\u8981\u7684\u5b57\u4e32\uff0c\u6709\u7522\u751f\u5728\u4fe1\u4ef6\u5c01\u5305\u88e1\u9762\u3002\u9019\u6a23\u61c9\u8a72\u5c31\u4e0d\u6703\u518d\u88ab\u5176\u4ed6\u4fe1\u7bb1\u670d\u52d9\u5224\u65b7\u7570\u5e38\u548c\u9000\u4fe1\u4e86\u3002<br \/>\nReceived: from &#8230;(&#8230; [000])<br \/>\nby relay-4.us-west-2.tx-prod (Postfix) with ESMTPS id &#8230;<br \/>\nfor <000@dkimvalidator.com>; Tue, 5 Aug 2025 01:21:19 +0000 (UTC)<br \/>\nX-Spam-Status: No<br \/>\nX-yoursite-MailScanner-From: &#8230;<br \/>\nX-yoursite-MailScanner: Found to be clean<br \/>\nX-yoursite-MailScanner-ID: &#8230;<br \/>\nX-yoursite-MailScanner-Information: Please contact the ISP for more information<br \/>\n<strong>DKIM-Signature: v=1; a=rsa-sha256; c=relaxed\/simple; d=jir.idv.tw; s=2025;<br \/>\nt=&#8230;; bh=&#8230;=;<\/strong><br \/>\nh=Date:From:To:Subject:In-Reply-To:References:From;<br \/>\nb=&#8230;=<br \/>\nReceived: from linux (000)<br \/>\nby linux (Postfix) with ESMTPSA id &#8230;<br \/>\nfor <000@dkimvalidator.com>; Tue, 5 Aug 2025 09:17:21 +0800 (CST)<br \/>\nMIME-Version: 1.0<br \/>\nDate: Tue, 05 Aug 2025 09:17:21 +0800<br \/>\nFrom: &#8230; <...><br \/>\nTo: 000@dkimvalidator.com<br \/>\nSubject: =?UTF-8?Q?Fwd=&#8230;=<br \/>\nIn-Reply-To: <...><br \/>\nReferences: <...><br \/>\nMessage-ID: <...><br \/>\nX-Sender:<br \/>\nContent-Type: text\/plain; charset=UTF-8;<br \/>\nformat=flowed<br \/>\nContent-Transfer-Encoding: 8bit<\/p>\n<p>8\/05 -7TH\u9664\u932f\u4fe1\u4ef6\u6e2c\u8a66\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u53bb\u5e74\u597d\u4e0d\u5bb9\u6613\u6478\u7d22\u641e\u5b9a\u7684\u90f5\u4ef6\u4f3a\u670d\u5668\uff0c\u4eca\u5e74Q3\u53c8\u518d\u5ea6\u767c\u751f\u5de5\u4f5c\u4e0d\u6b63\u5e38\u7684\u554f\u984c\u3002 MAIL\u4f3a\u670d\u5668Dovecot + Postfix + Mailscanner\u5b89\u88dd\uff0c\u7d00\u9304&#038;\u66f4\u65b0 https:\/\/jir.idv.tw\/wordpress\/?p=3124 POSTFIX\u90f5\u4ef6\u4f3a\u670d\u5668\uff0c\u67b6\u8a2dMailscanner\u53ef\u80fd\u6703\u9047\u5230OpenDKIM\u885d\u7a81\u7684\u89e3\u6c7a\u65b9\u6cd5 https:\/\/jir.idv.tw\/wordpress\/?p=3146 \u56e0\u70ba\u90f5\u4ef6\u4e3b\u6a5f\u914d\u5408UBUNTU\u7cfb\u7d71\u5347\u7d1a\uff0c\u4f46\u662f\u9678\u9678\u7e8c\u7e8c\u767c\u73fe\u529f\u80fd\u670d\u52d9\u6709\u554f\u984c\uff0c\u4e5f\u9023\u5e36\u767c\u73fe\u5347\u7d1a\u5f8c\uff0c\u958b\u59cb\u4e00\u76f4\u6536\u5230YAHOO\u8ca0\u8cac\u4efb\u7684\u62d2\u6536\u4fe1\u4ef6\u3002 \u4eca\u5e74\u958b\u59cb\u5927\u91cf\u5229\u7528AI\u4e92\u52d5\u4f86\u89e3\u6c7a\u6211\u4e00\u77e5\u534a\u89e3\u3001\u6216\u662f\u4e0d\u719f\u7a14\u7684\u6307\u4ee4\u548c\u529f\u80fd\u8ffd\u52a0\u3002 \u9019\u6b21\u7d93\u9a57\u4e5f\u771f\u7684\u8981\u518d\u4f86\u611f\u5606AI\u3001\u8b9a\u5606AI\u4e86&#8230;\u3002 \/etc\/postfix\/master.cf\u9019\u500b\u6a94\u6848\u3002 \u76ee\u524d\u904b\u4f5c\u65b9\u5f0f\u662f\u9019\u6a23\uff1a #1.\u8dd1OpenDKIM\u7684PORT: 8891 #2.\u8dd1OpenDMARC\u7684.sock #3.\u8dd1MailScanner\u7684PORT: 33333 smtpd_milters = inet:localhost:8891, local:opendma&#8230; <a href=\"https:\/\/jir.idv.tw\/wordpress\/?p=3252\" class=\"readmore\">Read more (\u5b8c\u6574\u6587\u7ae0\u5167\u5bb9)<span class=\"screen-reader-text\">UBUNTU\u7cfb\u7d71\u5347\u7d1a\u5f8c\uff0cPostfix\u90f5\u4ef6\u4f3a\u670d\u5668\u914dmailscanner\u3001opendikm\u3001opendmarc\u53ef\u80fd\u6703\u904b\u4f5c\u4e0d\u6b63\u5e38\u7684\u7d00\u9304<\/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-3252","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\/3252","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=3252"}],"version-history":[{"count":3,"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3252\/revisions"}],"predecessor-version":[{"id":3255,"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3252\/revisions\/3255"}],"wp:attachment":[{"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3252"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3252"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jir.idv.tw\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3252"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}