sendmail – 수신되는 메일 DKIM/SPF/DMARC 검증

By | 2024년 7월 18일
Table of Contents

sendmail – 수신되는 메일 DKIM/SPF/DMARC 검증

스팸 및 피싱 메일을 막기 위해 SPF, DKIM, DMARC 검사를 설정합니다.

DNS 설정 (발송자 도메인 측에서 해야 함)

수신 서버가 메일을 검사할 수 있도록, 발송자 도메인에는 반드시 아래와 같은 레코드가 등록되어 있어야 합니다.

; SPF
@ IN TXT "v=spf1 mx a include:mail.yourdomain.com ~all"

; DKIM
default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqh…"

; DMARC
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@yourdomain.com"

SPF 검사 설정

sudo apt update
sudo apt install build-essential sendmail libmilter-dev libspf2-2 libspf2-dev
wget https://www.acme.com/software/spfmilter/spfmilter-2.2.tar.gz
tar zxvf spfmilter-2.2.tar.gz
cd spfmilter-2.2
./configure
make
sudo make install
sudo su -
spfmilter unix:/var/run/spfmilter.sock
sudo vi /etc/mail/sendmail.mc
----------------------
INPUT_MAIL_FILTER(`spfmilter', `S=local:/var/run/spfmilter.sock, T=S:4m;R:4m;E:4m')dnl
----------------------
sudo make -C /etc/mail
sudo systemctl restart sendmail
sudo systemctl status sendmail

외부에서 메일을 발송하여 SPF 헤더가 첨가되는 것을 확인합니다.

sudo tail -200 /var/spool/mail/root
......
Received-SPF: pass (plus-ai.co.kr: domain of skyer9@gmail.com designates 209.85.219.181 as permitted sender) receiver=plus-ai.co.kr; client-ip=209.85.219.181; helo=mail-yb1-f181.google.com; envelope-from=skyer9@gmail.com; x-software=spfmilter 2.2 http://www.acme.com/software/spfmilter/ with libspf2-1.2.10;
......

성공하면 아래와 같이 서버 부팅시 spfmilter 가 실행되도록 설정해 줍니다.

sudo vi /etc/systemd/system/spfmilter.service
----------------------
[Unit]
Description=SPF Milter
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/sbin/spfmilter unix:/var/run/spfmilter.sock
User=root

[Install]
WantedBy=multi-user.target
----------------------
sudo systemctl daemon-reload
sudo systemctl enable spfmilter
sudo systemctl start spfmilter

DKIM 설정

여기 에서 설정됩니다.

Mode sv 이 부분에서 s 는 send, v 는 verify 입니다.

DMARC 검사

sudo apt install opendmarc
sudo vi /etc/opendmarc.conf
----------------------
AuthservID          yourmailserver.example.com
TrustedAuthservIDs  yourmailserver.example.com
Socket              inet:12303@localhost
Syslog              true
----------------------
sudo vi /etc/mail/sendmail.mc
----------------------
INPUT_MAIL_FILTER(`opendmarc', `S=inet:12303@localhost')
----------------------
sudo systemctl restart opendmarc
sudo make -C /etc/mail
sudo systemctl restart sendmail

rspamd : Authentication-Results 통합

sudo apt install rspamd
sudo vi /etc/rspamd/local.d/milter_headers.conf
----------------------
use = ["authentication-results"];
----------------------
sudo vi /etc/mail/sendmail.mc
----------------------
INPUT_MAIL_FILTER(`rspamd', `S=inet:11332@localhost')dnl
----------------------
sudo systemctl enable rspamd
sudo systemctl restart spfmilter opendmarc opendkim rspamd
sudo make -C /etc/mail
sudo systemctl restart sendmail
sudo tail -200 /var/spool/mail/root
......
Authentication-Results: MTA;
        dkim=pass header.d=gmail.com header.s=20230601 header.b="TKdk+AZ/";
        spf=pass (MTA: domain of skyer9@gmail.com designates 209.85.219.180 as permitted sender) smtp.mailfrom=skyer9@gmail.com;
        dmarc=pass (policy=none) header.from=gmail.com
......

rspamd 버전업

너무 낮은 버전의 rspamd 는 오작동을 할 수 있다.

rspamd --version
Rspamd daemon version 1.9.4
wget -O- https://rspamd.com/apt-stable/gpg.key | sudo apt-key add -
echo "deb [arch=amd64] http://rspamd.com/apt-stable/ focal main" | sudo tee /etc/apt/sources.list.d/rspamd.list
sudo apt update
apt policy rspamd
sudo apt install rspamd
sudo cp -r /etc/rspamd /etc/rspamd.backup.$(date +%Y%m%d)
sudo systemctl restart rspamd
rspamd --version
Rspamd daemon version 3.12.1

답글 남기기