BitNotice #108 - Rspamd: Server-SPAM-Filter mit Postfix
차례:
이것은 메일 서버 설정 및 구성의 세 번째 부분입니다. 이 자습서에서는 Rspamd 스팸 필터링 시스템의 설치 및 구성과 메일 서버로의 통합을 통해 DKIM 및 DMARC DNS 레코드를 만듭니다.
Spamassassin이 아닌 Rspamd를 선택하는 이유를 물을 수 있습니다. Rspamd는 C에서보다 적극적으로 유지 관리되고 작성되며 Perl로 작성된 Spamassassin보다 훨씬 빠릅니다. 또 다른 이유는 Rspamd에 DKIM 서명 모듈이 포함되어 있기 때문에 발신 이메일에 서명하기 위해 다른 소프트웨어를 사용할 필요가 없기 때문입니다.
전제 조건
이 학습서를 계속하기 전에 sudo 권한이있는 사용자로 로그인했는지 확인하십시오.
Redis 설치
Redis는 Rspamd에서 스토리지 및 캐싱 시스템으로 사용되어 설치됩니다.
언 바운드 설치
언 바운드는 매우 안전한 유효성 검사, 재귀 및 캐싱 DNS 확인자입니다.
이 서비스를 설치하는 주요 목적은 외부 DNS 요청 수를 줄이는 것입니다. 이 단계는 선택 사항이며 건너 뛸 수 있습니다.
sudo apt update
sudo apt install unbound
기본 언 바운드 설정은 대부분의 서버에 충분해야합니다.
서버 기본 DNS 확인 자로 언 바운드를 설정하려면 다음 명령을 실행하십시오.
sudo echo "nameserver 127.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
sudo resolvconf -u
resolvconf
를 사용하지 않는 경우
/etc/resolv.conf
파일을 수동으로 편집해야합니다.
Rspamd 설치
공식 저장소에서 최신 안정 버전의 Rspamd를 설치합니다.
필요한 패키지를 설치하여 시작하십시오.
sudo apt install software-properties-common lsb-release
sudo apt install lsb-release wget
다음 wget 명령을 사용하여 저장소 GPG 키를 적절한 소스 키링에 추가하십시오.
wget -O- https://rspamd.com/apt-stable/gpg.key | sudo apt-key add -
다음을 실행하여 Rspamd 저장소를 활성화하십시오.
echo "deb http://rspamd.com/apt-stable/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/rspamd.list
리포지토리가 활성화되면 다음 명령을 사용하여 패키지 인덱스를 업데이트하고 Rspamd를 설치하십시오.
sudo apt update
sudo apt install rspamd
Rspamd 구성
스톡 구성 파일을 수정하는 대신
/etc/rspamd/local.d/local.d/
디렉토리에 기본 설정을 덮어 쓰는 새 파일을 만듭니다.
기본적으로 Rspamd의
normal worker
는 전자 메일 메시지를 검사하는 작업자가 포트 11333의 모든 인터페이스에서 수신 대기합니다. 다음 파일을 작성하여 localhost 인터페이스 만 수신하도록 Rspamd 일반 작업자를 구성하십시오.
bind_socket = "127.0.0.1:11333";
proxy worker
는 포트 11332에서 수신 대기하며 더 많은 프로토콜을 지원합니다. Postfix가 Rspamd와 통신하려면 milter 모드를 활성화해야합니다.
bind_socket = "127.0.0.1:11332"; milter = yes; timeout = 120s; upstream "local" { default = yes; self_scan = yes; }
다음으로 Rspamd 웹 인터페이스에 대한 액세스를 제공하는
controller worker
서버의 암호를 설정해야합니다. 암호화 된 비밀번호를 생성하려면 다음을 실행하십시오.
rspamadm pw --encrypt -p P4ssvv0rD
출력은 다음과 같아야합니다.
$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb
비밀번호 (
P4ssvv0rD
)를보다 안전한 것으로 변경하는 것을 잊지 마십시오.
터미널에서 비밀번호를 복사하여 구성 파일에 붙여 넣으십시오.
/etc/rspamd/local.d/worker-controller.inc
password = "$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb";
나중에 Rgind 웹 인터페이스에 액세스 할 수 있도록 Nginx를 컨트롤러 작업자 웹 서버에 대한 리버스 프록시로 구성합니다.
classifier-bayes.conf
파일에 다음 행을 추가하여 Redis를 Rspamd 통계의 백엔드로 설정하십시오.
servers = "127.0.0.1"; backend = "redis";
milter_headers.conf
파일을 열고 milter 헤더를 설정하십시오:
use =;
밀터 헤더에 대한 자세한 정보는 여기에서 찾을 수 있습니다.
마지막으로 Rspamd 서비스를 다시 시작하여 변경 사항을 적용하십시오.
Nginx 구성
이 시리즈의 첫 번째 부분에서는 PostfixAdmin 인스턴스를위한 Nginx 서버 블록을 만들었습니다.
Nginx 구성 파일을 열고 노란색으로 강조 표시된 다음 위치 지시문을 추가하십시오.
/etc/nginx/sites-enabled/mail.linuxize.com.conf
… location /rspamd { proxy_pass http://127.0.0.1:11334/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }…
변경 사항을 적용하려면 Nginx 서비스를 다시로드하십시오.
sudo systemctl reload nginx
https://mail.linuxize.com/rspamd/
로
https://mail.linuxize.com/rspamd/
하여
rspamadm pw
명령을 사용하여 이전에 생성 한 비밀번호를 입력하면 Rspamd 웹 인터페이스가 표시됩니다.
접미사 구성
Rspamd Milter를 사용하려면 Postfix를 구성해야합니다.
다음 명령을 실행하여 Postfix 기본 구성 파일을 업데이트하십시오.
sudo postconf -e "milter_protocol = 6"
sudo postconf -e "milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}"
sudo postconf -e "milter_default_action = accept"
sudo postconf -e "smtpd_milters = inet:127.0.0.1:11332"
sudo postconf -e "non_smtpd_milters = inet:127.0.0.1:11332"
sudo postconf -e "smtpd_milters = inet:127.0.0.1:11332"
sudo postconf -e "non_smtpd_milters = inet:127.0.0.1:11332"
변경 사항을 적용하려면 Postfix 서비스를 다시 시작하십시오.
sudo systemctl restart postfix
비둘기장 구성
이 시리즈의 두 번째 부분에서 Dovecot을 이미 설치 및 구성했으며 이제
sieve
필터링 모듈을 설치하고 Dovecot을 Rspamd와 통합합니다.
Dovecot 필터링 모듈을 설치하여 시작하십시오.
sudo apt install dovecot-sieve dovecot-managesieved
패키지가 설치되면 다음 파일을 열고 노란색으로 강조 표시된 줄을 편집하십시오.
/etc/dovecot/conf.d/20-lmtp.conf
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins sieve }…
/etc/dovecot/conf.d/20-imap.conf
… protocol imap {… mail_plugins = $mail_plugins imap_quota imap_sieve… }…
/etc/dovecot/conf.d/20-managesieve.conf
… service managesieve-login { inet_listener sieve { port = 4190 }… }… service managesieve { process_limit = 1024 }…
/etc/dovecot/conf.d/90-sieve.conf
plugin {… # sieve = file:~/sieve;active=~/.dovecot.sieve sieve_plugins = sieve_imapsieve sieve_extprograms sieve_before = /var/mail/vmail/sieve/global/spam-global.sieve sieve = file:/var/mail/vmail/sieve/%d/%n/scripts;active=/var/mail/vmail/sieve/%d/%n/active-script.sieve imapsieve_mailbox1_name = Spam imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_before = file:/var/mail/vmail/sieve/global/report-spam.sieve imapsieve_mailbox2_name = * imapsieve_mailbox2_from = Spam imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_before = file:/var/mail/vmail/sieve/global/report-ham.sieve sieve_pipe_bin_dir = /usr/bin sieve_global_extensions = +vnd.dovecot.pipe…. }
파일을 저장하고 닫습니다.
시브 (sieve) 스크립트 용 디렉토리를 작성하십시오.
mkdir -p /var/mail/vmail/sieve/global
스팸으로 표시된 이메일을
Spam
디렉토리로 이동하려면 글로벌 체 필터를 작성하십시오.
require; if anyof(header:contains "YES", header:contains "Yes", header:contains "*** SPAM ***") { fileinto:create "Spam"; stop; }
Spam
디렉토리 안팎으로 전자 메일을 이동할 때마다 다음 두 개의 체 스크립트가 트리거됩니다.
require; pipe:copy "rspamc";
/var/mail/vmail/sieve/global/report-ham.sieve
require; pipe:copy "rspamc";
변경 사항을 적용하려면 Dovecot 서비스를 다시 시작하십시오.
sudo systemctl restart dovecot
시브 (sieve) 스크립트를 컴파일하고 올바른 권한을 설정하십시오.
sievec /var/mail/vmail/sieve/global/spam-global.sieve
sievec /var/mail/vmail/sieve/global/report-spam.sieve
sievec /var/mail/vmail/sieve/global/report-ham.sieve
sudo chown -R vmail: /var/mail/vmail/sieve/
DKIM 키 생성
DKIM (DomainKeys Identified Mail)은 암호화 서명을 아웃 바운드 메시지 헤더에 추가하는 이메일 인증 방법입니다. 수신자는 특정 도메인에서 발생한다고 주장하는 이메일이 해당 도메인의 소유자에 의해 실제로 승인되었는지 확인할 수 있습니다. 이것의 주요 목적은 위조 된 전자 메일 메시지를 방지하는 것입니다.
모든 도메인에 대해 서로 다른 DKIM 키를 가질 수 있고 단일 도메인에 대해 여러 키를 가질 수도 있지만이 기사를 단순화하기 위해 나중에 모든 새 도메인에 사용할 수있는 단일 DKIM 키를 사용할 것입니다.
rspamadm
유틸리티를 사용하여 DKIM 키를 저장할 새 디렉토리를 만들고 새 DKIM 키 쌍을 생성하십시오.
sudo mkdir /var/lib/rspamd/dkim/
rspamadm dkim_keygen -b 2048 -s mail -k /var/lib/rspamd/dkim/mail.key | sudo tee -a /var/lib/rspamd/dkim/mail.pub
rspamadm dkim_keygen -b 2048 -s mail -k /var/lib/rspamd/dkim/mail.key | sudo tee -a /var/lib/rspamd/dkim/mail.pub
위의 예에서는
mail
을 DKIM 선택기로 사용하고 있습니다.
이제
/var/lib/rspamd/dkim/
디렉토리에 개인 키 파일 인
mail.pub
와 DKIM 공개 키를 포함하는
mail.pub
파일에 두 개의 새 파일이 있어야합니다. 나중에 DNS 영역 레코드를 업데이트 할 것입니다.
올바른 소유권과 권한을 설정하십시오.
sudo chown -R _rspamd: /var/lib/rspamd/dkim
sudo chmod 440 /var/lib/rspamd/dkim/*
이제 Rspamd에게 DKIM 키를 찾을 위치, 선택기 이름 및 마지막 줄에서 별칭 보낸 사람 주소에 대한 DKIM 서명을 활성화해야합니다. 그렇게하려면 다음 내용으로 새 파일을 작성하십시오.
/etc/rspamd/local.d/dkim_signing.conf
selector = "mail"; path = "/var/lib/rspamd/dkim/$selector.key"; allow_username_mismatch = true;
Rspamd는 또한 ARC (Authenticated Received Chain) 서명에 대한 서명을 지원합니다. ARC 사양에 대한 자세한 내용은 여기를 참조하십시오.
Rspamd는 이전 구성을 간단히 복사 할 수 있도록 ARC 서명을 처리하기 위해 DKIM 모듈을 사용하고 있습니다.
sudo cp /etc/rspamd/local.d/dkim_signing.conf /etc/rspamd/local.d/arc.conf
변경 사항을 적용하려면 Rspamd 서비스를 다시 시작하십시오.
DNS 설정
이미 DKIM 키 페어를 만들었으므로 이제 DNS 영역을 업데이트해야합니다. DKIM 공개 키는
mail.pub
파일에 저장됩니다. 파일 내용은 다음과 같아야합니다.
cat /var/lib/rspamd/dkim/mail.pub
mail._domainkey IN TXT ("v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4yl" "nVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB");
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB
또한 수신인에게 특정 발신자의 이메일 수신 여부를 알리도록 설계된
DMARC
(Domain-Based Message Authentication)를 만들 것입니다. 기본적으로 직접 도메인 스푸핑으로부터 도메인을 보호하고 도메인 평판을 향상시킵니다.
다음과 같은 DMARC 정책을 구현할 것입니다.
_dmarc IN TXT "v=DMARC1; p=none; adkim=r; aspf=r;"
위의 DMARC 레코드를 세분화하십시오.
-
v=DMARC1
이것은 DMARC 식별자입니다.p=none
-이것은 DMARC에 실패한 메시지로 무엇을해야하는지 수신자에게 알려줍니다. 이 경우 메시지가 DMARC에 실패하면 조치를 취하지 않음을 의미하는 none으로 설정됩니다. 또한 '거부'또는quarantine
adkim=r
및aspf=r
-DKIM
및SPF
정렬,r
은 완화 및s
는 엄격으로 사용할 수 있습니다.이 경우 DKIM 및 SPF 모두에 완화 정렬을 사용합니다.
자신의 바인드 DNS 서버를 실행하는 경우와 마찬가지로 레코드를 복사하여 도메인 영역 파일에 붙여 넣기 만하면되고 다른 DNS 공급자를 사용하는 경우 이름이
_dmarc
TXT 레코드를 만들고
v=DMARC1; p=none; adkim=r; aspf=r;
v=DMARC1; p=none; adkim=r; aspf=r;
가치 / 콘텐츠로.
DNS 변경 사항이 적용되는 데 시간이 걸릴 수 있습니다. dig 명령을 사용하여 레코드가 전파되었는지 여부를 확인할 수 있습니다.
dig mail._domainkey.linuxize.com TXT +short
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGa" "VuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFdepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB"
dig _dmarc.linuxize.com TXT +short
"v=DMARC1; p=none; adkim=r; aspf=r;"
도메인 현재 DMARC 정책을 검사하거나 여기에서 고유 한 DMARC 정책을 만들 수도 있습니다.
결론
이것이 튜토리얼의이 부분입니다. 이 시리즈의 다음 부분에서는 RoundCube 설치 및 구성을 계속합니다.
메일 서버 접미사 비둘기장 DNS 스팸이 게시물은 메일 서버 시리즈 설정 및 구성의 일부입니다.
이 시리즈의 다른 게시물:
• PostfixAdmin으로 메일 서버 설정 • Postfix 및 Dovecot 설치 및 구성 • Rspamd 설치 및 통합 • Roundcube 웹 메일 설치 및 구성