{"id":472,"date":"2020-04-05T00:22:17","date_gmt":"2020-04-04T15:22:17","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=472"},"modified":"2025-08-20T13:25:35","modified_gmt":"2025-08-20T04:25:35","slug":"sendmail-with-dkim-spf-dmarc-for-sending","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=472","title":{"rendered":"sendmail (2\/4) &#8211; sendmail with DKIM + SPF + DMARC (for sending)"},"content":{"rendered":"<h1>sendmail (2\/4) &#8211; sendmail with DKIM + SPF + DMARC (for sending)<\/h1>\n<p>EC2 \uc778\uc2a4\ud134\uc2a4\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \uc544\uc6c3\ubc14\uc6b4\ub4dc 25\ubc88 \ud3ec\ud2b8\uac00 \ub9c9\ud600\uc788\ub2e4.<\/p>\n<p><a href=\"\/wordpress\/?p=584\">\uc5ec\uae30<\/a> \ub97c \ucc38\uc870\ud574\uc11c \uba3c\uc800 AWS \uc774\uba54\uc77c\ubc1c\uc1a1 \uc81c\ud55c\uc744 \ud574\uc81c\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<h2>DKIM(DomainKeys Identified Mail)<\/h2>\n<p>DKIM \uc11c\ube44\uc2a4\ub97c \uc0ac\uc6a9\ud558\uba74 \ub098\uac00\ub294 \uba54\uc77c \ud5e4\ub354\uc5d0 DKIM-Signature\ub97c \ucd94\uac00\ud574\uc11c \ubc1c\uc1a1\ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<p>\uc218\uc2e0\uce21 \uba54\uc77c \uc11c\ubc84\uc5d0\uc11c DKIM\uc11c\uba85\uc774 \ud3ec\ud568\ub41c \uba54\uc77c\uc744 \ubc1b\uc73c\uba74 DNS\uc11c\ubc84\uc5d0\uc11c \uc11c\uba85\uc744 \ud574\ub3c5\ud560 \uacf5\uac1c\ud0a4\ub97c \ud655\uc778\ud558\uc5ec \ubc1b\uc740 \uba54\uc77c\uc774 \ud574\ub2f9 \ub3c4\uba54\uc778\uc5d0\uc11c \ubc1c\uc1a1\ub41c \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc124\uce58\ud558\uae30<\/h2>\n<p>dkim \ud328\ud0a4\uc9c0\ub97c \uc124\uce58\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install opendkim opendkim-tools<\/code><\/pre>\n<p>\uc544\ub798\uc640 \uac19\uc774 \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo vi \/etc\/opendkim.conf\n\nAutoRestart             Yes\nAutoRestartRate         10\/1h\nUMask                   002\nSyslog                  yes\nSyslogSuccess           Yes\nLogWhy                  Yes\n\nCanonicalization        relaxed\/relaxed\n\nExternalIgnoreList      refile:\/etc\/opendkim\/TrustedHosts\nInternalHosts           refile:\/etc\/opendkim\/TrustedHosts\nKeyTable                refile:\/etc\/opendkim\/KeyTable\nSigningTable            refile:\/etc\/opendkim\/SigningTable\n\nMode                    sv\nPidFile                 \/var\/run\/opendkim\/opendkim.pid\nSignatureAlgorithm      rsa-sha256\n\nUserID                  opendkim:opendkim\n\nSocket                  inet:12301@localhost<\/code><\/pre>\n<p><code>SOCKET<\/code> \uc744 \uc544\ub798 \ub0b4\uc6a9\uc73c\ub85c \ubcc0\uacbd\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo vi \/etc\/default\/opendkim\n\n......\nSOCKET=&quot;inet:12301@localhost&quot; # listen on loopback on port 12301<\/code><\/pre>\n<p>sendmail \uc124\uc815\uc744 \uc218\uc815\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo vi \/etc\/mail\/sendmail.mc\n\n......\nINPUT_MAIL_FILTER(`opendkim&#039;, `S=inet:12301@localhost&#039;)dnl<\/code><\/pre>\n<pre><code class=\"language-bash\">sudo make -C \/etc\/mail<\/code><\/pre>\n<p>\uc778\uc99d\ud0a4\ub97c \ub4f1\ub85d\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo mkdir \/etc\/opendkim\nsudo mkdir \/etc\/opendkim\/keys<\/code><\/pre>\n<pre><code class=\"language-bash\">sudo vi \/etc\/opendkim\/TrustedHosts\n\n127.0.0.1\nlocalhost\n192.168.0.1\/24\n\n*.skyer9.pe.kr<\/code><\/pre>\n<pre><code class=\"language-bash\">sudo vi \/etc\/opendkim\/KeyTable\n\nmail._domainkey.skyer9.pe.kr skyer9.pe.kr:mail:\/etc\/opendkim\/keys\/skyer9.pe.kr\/mail.private\n# mail._domainkey.example.net example.net:mail:\/etc\/opendkim\/keys\/example.net\/mail.private\n# mail._domainkey.example.org example.org:mail:\/etc\/opendkim\/keys\/example.org\/mail.private<\/code><\/pre>\n<pre><code class=\"language-bash\">sudo vi \/etc\/opendkim\/SigningTable\n\n*@skyer9.pe.kr mail._domainkey.skyer9.pe.kr\n# *@example.net mail._domainkey.example.net\n# *@example.org mail._domainkey.example.org<\/code><\/pre>\n<p>\uc778\uc99d\ud0a4\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">cd \/etc\/opendkim\/keys\nsudo mkdir skyer9.pe.kr\ncd skyer9.pe.kr\nsudo opendkim-genkey -s mail -d skyer9.pe.kr\nsudo chown opendkim:opendkim mail.private<\/code><\/pre>\n<p>DNS \uc5d0 \uc544\ub798 \ub0b4\uc6a9\uc744 \ub4f1\ub85d\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo vi mail.txt<\/code><\/pre>\n<p>\uc5ec\ub7ec\uc904\ub85c \ubd84\ud560\ub418\uc5b4 \uc788\uc73c\uba74 \ud55c\uc904\ub85c \ud569\uce69\ub2c8\ub2e4. \ub2e8 \uc8fc\uc758\ud560 \uac83\uc740 <code>&quot;<\/code> \ub97c \uc81c\uac70\ud558\uc9c0 \ub9d0\uc544\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">&quot;v=DKIM1; k=rsa;....&quot; &quot;p=MIGfMA0GCSqG.....&quot; &quot;4GNADCBiQKBgQC.....&quot;<\/code><\/pre>\n<p>\uc704 \ub0b4\uc6a9\uc744 DNS \uc5d0 \ucd94\uac00\ud574 \uc90d\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">Name: mail._domainkey.skyer9.pe.kr.\n\nText: &quot;v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB&quot;<\/code><\/pre>\n<p>opendkim \ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo service opendkim start<\/code><\/pre>\n<p>hosts \ud30c\uc77c\uc5d0 \ub3c4\uba54\uc778\uc744 \uac00\uc7a5 \uba3c\uc800 \ub4f1\ub85d\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud568\uc73c\ub85c \ud574\uc11c \ud604\uc7ac\uc758 \uc11c\ubc84 \ub3c4\uba54\uc778\uc774 <code>skyer9.pe.kr<\/code> \ub85c \uc778\uc2dd\ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo vi \/etc\/hosts\n\n127.0.0.1 skyer9.pe.kr\n127.0.0.1 localhost localhost.localdomain skyer9.pe.kr<\/code><\/pre>\n<p>sendmail \uc744 \uc7ac\uc2dc\uc791\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo service sendmail restart<\/code><\/pre>\n<p>\uc790\uccb4 \uc11c\ubc84\uc5d0 \uba54\uc77c\uc744 \ubc1c\uc1a1\ud574\ub3c4 \uc778\uc99d\ud0a4\uac00 \ud5e4\ub354\uc5d0 \ud3ec\ud568\ub418\ubbc0\ub85c, \uc815\uc0c1\uc801\uc73c\ub85c \uc778\uc99d\ud0a4\uac00 \ubc1c\uae09\ub418\uc5b4 \uc788\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo apt  install mutt\nmkdir ~\/.mutt\nvi ~\/.mutt\/muttrc\n\nset from=&quot;ubuntu@skyer9.pe.kr&quot;\nset realname=&quot;ubuntu&quot;\nset editor=&quot;vim&quot;<\/code><\/pre>\n<pre><code class=\"language-bash\">echo &quot;\uba54\uc77c \ub0b4\uc6a9&quot; | mutt -s &quot;\uc81c\ubaa9&quot; root@skyer9.pe.kr\nsudo tail -100 \/var\/spool\/mail\/root<\/code><\/pre>\n<h2>SPF(Sender Policy Framework)<\/h2>\n<p>\ub124\uc784\uc11c\ubc84\uc5d0 \ub4f1\ub85d\ub41c \uc544\uc774\ud53c \uae30\ubc18\uc73c\ub85c \uc774\uba54\uc77c\uc744 \ud544\ud130\ub9c1\ud569\ub2c8\ub2e4.<\/p>\n<h3>SPF \ub4f1\ub85d\ud558\uae30<\/h3>\n<p>\ub124\uc784\uc11c\ubc84\uc5d0 \uc544\ub798 \ub0b4\uc6a9\uc744 \ub4f1\ub85d\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-configuration\">\ub3c4\uba54\uc778         \uc720\ud615    \uac12\nskyer9.pe.kr  TXT     &quot;v=spf1 mx ip4:&lt;\uba54\uc77c\uc11c\ubc84 \uc544\uc774\ud53c&gt; ~all&quot;<\/code><\/pre>\n<h3>SPF \uc0c1\ud0dc\ud655\uc778\ud558\uae30<\/h3>\n<p><code>https:\/\/mxtoolbox.com\/spf.aspx<\/code> \uc5d0 \uc811\uc18d\ud574\uc11c \uc815\uc0c1\uc801\uc73c\ub85c \ub4f1\ub85d\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>DMARC(Domain-based Message Authentication, Reporting &amp; Conformance)<\/h2>\n<p>\uba3c\uc800 <code>SPF<\/code> \uc640 <code>DKIM<\/code> \uc744 \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n<p>DNS \uc5d0 \uc544\ub798 \ub0b4\uc6a9\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.<br \/>\n\uc774\uba54\uc77c\uc744 \uc218\uc2e0\ud558\ub294 \uc11c\ubc84\uc5d0 \uc81c\uc548\ud558\ub294 \uc815\ucc45\uc785\ub2c8\ub2e4.<br \/>\n\ud14c\uc2a4\ud2b8 \ubaa8\ub4dc\ub294 \uc815\ucc45\uc774 \uc2e4\ud328\ud574\ub3c4 \uadf8\ub300\ub85c \uc774\uba54\uc77c\uc740 \uc218\uc2e0\ud558\ub77c\ub294 \uc81c\uc548\uc774\uace0, \uac70\ubd80\ub294 \uc774\uba54\uc77c\uc744 \uac70\ubd80\ud574\ub3c4 \ub41c\ub2e4\ub294 \uc758\ubbf8\uc785\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">DNS Record Type : TXT\nName : _dmarc\n# \ud14c\uc2a4\ud2b8 \ubaa8\ub4dc\nValue : v=DMARC1; p=none; pct=100; rua=mailto:dmarc-reports@skyer9.pe.kr\n# \uac70\ubd80\nValue : v=DMARC1; p=reject; pct=100; rua=mailto:dmarc-reports@skyer9.pe.kr<\/code><\/pre>\n<p>\ub370\uc774\ud0c0\ubca0\uc774\uc2a4\ub97c \uc124\uc815\ud560\uc9c0 \ubb3c\uc5b4\ubcf4\uba74 No \ub77c\uace0 \ub2f5\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">sudo apt install opendmarc<\/code><\/pre>\n<p>\uc544\ub798 \ub450\uac1c\uc758 \ub3c4\uba54\uc778\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.<br \/>\n&quot;10&quot; \ub3c4 \uc124\uc815\uc5d0 \ucd94\uac00\ud574 \uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>mail.skyer9.pe.kr        A         &lt;\uba54\uc77c\uc11c\ubc84\uc544\uc774\ud53c&gt;<br \/>\nskyer9.pe.kr             MX        10 mail.skyer9.pe.kr<\/p>\n<p>\ucd5c\uc885\uc801\uc73c\ub85c DNS \uc124\uc815\uc740 \uc544\ub798\uc640 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.skyer9.pe.kr\/wordpress\/wp-content\/uploads\/2020\/04\/20200415-02.png\" alt=\"\" \/><\/p>\n<h2>\uc774\uba54\uc77c \ubc1c\uc1a1 \ud14c\uc2a4\ud2b8<\/h2>\n<p>\uc815\uc0c1\uc801\uc73c\ub85c \uc774\uba54\uc77c \ud615\uc2dd\uc744 \uac16\ucd94\uc9c0 \uc54a\uc73c\uba74 \uc9c0\uba54\uc77c\uc5d0\uc11c \uc2a4\ud338\ud568\uc73c\ub85c \ubd84\ub958\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">Authentication-Results: skyer9.pe.kr; dkim=permerror (bad message\/signature format)<\/code><\/pre>\n<p>\uc544\ub798\uc758 \ub0b4\uc6a9\uc73c\ub85c \ubc1c\uc1a1\ud558\uba74 \uc815\uc0c1\uc801\uc73c\ub85c \uc804\uc1a1\uc774 \ub429\ub2c8\ub2e4.<br \/>\nEC2 \uc778\uc2a4\ud134\uc2a4\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \uc544\uc6c3\ubc14\uc6b4\ub4dc 25\ubc88 \ud3ec\ud2b8\uac00 \ub9c9\ud600\uc788\ub2e4.<br \/>\n<a href=\"\/wordpress\/?p=584\">\uc5ec\uae30<\/a> \ub97c \ucc38\uc870\ud574\uc11c \uba3c\uc800 AWS \uc774\uba54\uc77c\ubc1c\uc1a1 \uc81c\ud55c\uc744 \ud574\uc81c\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">telnet localhost 25\nHELO skyer9.pe.kr\nMAIL FROM: &lt;root@skyer9.pe.kr&gt;\nRCPT TO: &lt;skyer9@gmail.com&gt;\nDATA\nFrom: root@skyer9.pe.kr\nTo: skyer9@gmail.com\nSubject: DKIM SPF DMARC Authentication Test\nDate: Mon, 18 Aug 2025 12:00:00 +0000\nMessage-ID: &lt;test-$(date +%s)@skyer9.pe.kr&gt;\nMIME-Version: 1.0\nContent-Type: text\/plain; charset=utf-8\n\nThis is a test email to verify DKIM, SPF, and DMARC authentication settings.\n\nEmail Authentication Test Details:\n- DKIM: Testing digital signature validation\n- SPF: Testing sender policy framework\n- DMARC: Testing domain-based message authentication\n\nPlease check the email headers to confirm all authentication methods pass successfully.\n\nTest timestamp: $(date)\n.\nQUIT<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>sendmail (2\/4) &#8211; sendmail with DKIM + SPF + DMARC (for sending) EC2 \uc778\uc2a4\ud134\uc2a4\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \uc544\uc6c3\ubc14\uc6b4\ub4dc 25\ubc88 \ud3ec\ud2b8\uac00 \ub9c9\ud600\uc788\ub2e4. \uc5ec\uae30 \ub97c \ucc38\uc870\ud574\uc11c \uba3c\uc800 AWS \uc774\uba54\uc77c\ubc1c\uc1a1 \uc81c\ud55c\uc744 \ud574\uc81c\ud574\uc57c \ud569\ub2c8\ub2e4. DKIM(DomainKeys Identified Mail) DKIM \uc11c\ube44\uc2a4\ub97c \uc0ac\uc6a9\ud558\uba74 \ub098\uac00\ub294 \uba54\uc77c \ud5e4\ub354\uc5d0 DKIM-Signature\ub97c \ucd94\uac00\ud574\uc11c \ubc1c\uc1a1\ud558\uac8c \ub429\ub2c8\ub2e4. \uc218\uc2e0\uce21 \uba54\uc77c \uc11c\ubc84\uc5d0\uc11c DKIM\uc11c\uba85\uc774 \ud3ec\ud568\ub41c \uba54\uc77c\uc744 \ubc1b\uc73c\uba74 DNS\uc11c\ubc84\uc5d0\uc11c \uc11c\uba85\uc744 \ud574\ub3c5\ud560 \uacf5\uac1c\ud0a4\ub97c \ud655\uc778\ud558\uc5ec \ubc1b\uc740 \uba54\uc77c\uc774\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=472\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-472","post","type-post","status-publish","format-standard","hentry","category-sendmail"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=472"}],"version-history":[{"count":34,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/472\/revisions"}],"predecessor-version":[{"id":10717,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/472\/revisions\/10717"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}