메일 보안 · 4 min read · Jan 03, 2026
Mailscanner/Exim Gateway With Communigate PRO Guide - Page 2
스팸 방지
서버에서 역 DNS가 없는 메시지를 거부하려면 acl_check_rcpt: 아래에 추가하십시오. 예외 목록이 있으며, acl이 적용되지 않아야 하는 도메인을 추가할 수 있으며, 발신자가 유효한지 확인하기 위해 발신 주소로 테스트 메시지를 전달하려고 시도합니다.
drop message = REJECTED - We don't accept messages from hosts without reverse DNS
log_message = No reverse DNS
domains = ! lsearch;/etc/exim/checks_exempt_hosts
!verify = reverse_host_lookup
!verify = sender/callout=2m,defer_ok
!condition = ${if eq{$sender_verify_failure}{} }HELO/EHLO 인사를 제공하지 않는 클라이언트의 메시지를 거부하려면 acl_check_rcpt에 다음을 추가하십시오:
drop message = REFUSED - no HELO/EHLO greeting
log_message = remote host did not present greeting
condition = ${if def:sender_helo_name {false}{true}}서버에 대한 연결 속도를 제한할 수 있으며, 이를 위해 acl_check_connect:에 다음을 추가하십시오 (사이트에 맞게 조정하려면 exim 문서를 읽어보십시오).
deny ratelimit = 250 / 15m / strict
message = You can only send $sender_rate per $sender_rate_period
log_message = RATE: $sender_rate/$sender_rate_period (max $sender_rate_limit)
accept악성 스팸 봇이 귀하의 시스템을 망치지 못하도록 하십시오.
smtp_accept_max_nonmail = 30
smtp_max_unknown_commands = 1로컬호스트에서만 파이프라인을 허용하여 나중에 mailfeeder를 사용하여 메일을 전송할 수 있도록 합니다.
pipelining_advertise_hosts = 127.0.0.1주소 확인
이것은 라우터 check_backend를 사용하여 ldap를 통해 귀하의 communigate pro 시스템과 통신하여 해당 주소에 대한 메일을 수락하기 전에 주소가 존재하는지 확인합니다.
기본 ldap 서버를 exim 구성에 추가하십시오.
ldap_default_servers = xxx.xxx.xxx.xxx확인 없이 메일을 수락하기 전에 주소가 존재하는지 확인하는 catchall 계정이 있는 도메인을 구성하십시오.
# example /etc/exim/catchall_domains
somedomain.comexim 구성에서 이를 지정하십시오.
domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domainsldap가 활성화된 CGP 도메인을 파일 /etc/exim/ldap-domains에 생성하고 추가하십시오. 첫 번째 열은 도메인 별칭 또는 도메인이고 두 번째는 ldap에 존재하는 실제 도메인입니다. CGP 도메인을 ldap에 동기화할 때 도메인 별칭도 복사되지 않습니다.
#example /etc/exim/ldap-domains
example.com: example.com
example.co.za: example.comcheck_backend 라우터를 생성하십시오. 이는 구성에서 첫 번째 라우터여야 합니다.
check_backend:
driver = redirect
domains = ! +domains_with_catchall : +relay_to_domains
allow_fail
allow_defer
forbid_file
forbid_pipe
data = ${lookup ldap{ldap:///uid=${local_part},cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?mail}{$value}{:fail: Unknown user}}
#version 5.x use this instead
#data = ${lookup ldap{ldap:///cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?uid?sub?(uid=$local_part)}{$local_part@$domain}{:fail: User Unknown}}클린 배달 Exim
이것은 mailscanner가 이미 스캔한 클린 메일을 배달하는 데 사용되는 구성입니다. 구성 파일은 /etc/exim/exim_out.conf입니다. 이를 위해 모든 검사 및 acl이 제거된 기본 구성을 사용할 수 있습니다.
정리된 메일을 실제 CGP 서버에 배달하기 위해 이 라우터를 추가해야 합니다. 클러스터를 실행 중인 경우 이 라우터는 /etc/exim/mail-routes에 구성된 서버에 배달을 분산할 수 있어 완전히 중복됩니다.
deliver_clean:
driver = manualroute
domains = +relay_to_domains
transport = remote_smtp
hosts_randomize = true
route_data = ${lookup{$domain}lsearch{/etc/exim/mail-routes}}MySQL 구성
구성 파일 /etc/my.cnf에 다음을 추가하십시오:
socket=/var/lib/mysql/mysql.sock
skip-networking이것은 mysql이 tcp가 아닌 소켓을 통해서만 통신하도록 구성하여 보안 및 성능에 더 좋습니다.
mysql을 시작하십시오. 이는 기본 데이터베이스를 초기화합니다.
service mysqld start루트 사용자 비밀번호를 설정하십시오:
mysqladmin -u root password NEWPASSWORDmailwatch 데이터베이스를 생성하고 테이블을 채우십시오:
mysql -p < /usr/local/src/mailwatch-1.0.4/create.sqlmailwatch 및 mailscanner 로깅을 위한 mysql 사용자를 생성하십시오:
mysql
mysql> GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'password';mailwatch 관리자 사용자를 생성하십시오:
mysql mailscanner -u mailwatch -p
Enter password: ******
mysql> INSERT INTO users VALUES ('',md5(' '),'','A','0','0','0','0','0'); MailScanner 구성
소개
Mailscanner에는 여러 구성 옵션이 있으며 시스템을 작동시키는 데 필요한 것들만 다룰 것입니다. 시스템을 더 사용자 정의하려면 mailscanner 문서를 읽거나 제공된 샘플 구성 파일을 참조하십시오.
기본 구성
/etc/MailScanner/MailScanner.conf에서 다음 구성 변수를 편집하십시오:
Run As User = exim
Run As Group = exim
Incoming Queue Dir = /var/spool/exim.in/input
Outgoing Queue Dir = /var/spool/exim/input
MTA = exim
Sendmail = /usr/sbin/exim -C /etc/exim/exim_out.conf
Sendmail2 = /usr/sbin/exim -C /etc/exim/exim_out.conf
Quarantine User = exim
Quarantine Group = apache
Quarantine Permissions = 0660
Quarantine Infections = yes
Quarantine Whole Message = yes
Quarantine Whole Messages As Queue Files = no
Keep Spam And MCP Archive Clean = yes
Spam Actions = store
High Scoring Spam Actions = store
Detailed Spam Report = yes
Include Scores In SpamAssassin Report = yes- 권한 설정
chown exim.exim -R /var/spool/MailScanner/incoming
mkdir -p /var/spool/exim.in/{input,msglog,scan,db}
chown exim.exim /var/spool/exim.in/{input,msglog,scan,db}안티 바이러스
두 번째 바이러스 스캐너가 있는 경우 설정하십시오.
Virus Scanning = yes
Virus Scanners = "name of virus scanner"블랙리스트 및 화이트리스트
우리는 SQL(mysql) 기반의 화이트리스트 및 블랙리스트를 사용하여 사용자가 웹 인터페이스 내에서 발신자를 화이트리스트 및 블랙리스트할 수 있도록 mailwatch 프론트 엔드와 쉽게 통합할 것입니다.
mailscanner 구성 파일을 편집하고 추가하십시오:
Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist
Ignore Spam Whitelist If Recipients Exceed = 20파일 /usr/lib/MailScanner/MailScanner/CustomFunctions/SQLBlackWhiteList.pm을 편집하십시오:
sub CreateList {
my($type, $BlackWhite) = @_;
my($dbh, $sth, $sql, $to_address, $from_address, $count);
my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'password';Mailwatch 통합
mailscanner 구성 파일을 편집하고 추가하십시오:
Always Looked Up Last = &MailWatchLogging파일 /usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pm을 편집하십시오:
my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'password';Spamassassin 구성
이 구성은 bayes 정보를 저장하기 위해 mysql 데이터베이스를 사용할 것입니다. 따라서 데이터베이스와 데이터베이스에 연결하는 데 사용될 사용자를 생성할 것입니다. 또한 추가 규칙(SARE는 Daryl C. W. O’Shea http://www.dostech.ca/에서 호스팅됨)을 사용할 것이므로 sa-update를 자동으로 다운로드하도록 구성할 것입니다.
MySQL 데이터베이스 생성
mysqladmin -p create bayes데이터베이스를 채우십시오:
mysql -p bayes < /usr/share/doc/spamassassin-3.2.3/sql/bayes_mysql.sql사용자를 생성하십시오:
mysql -p
mysql> GRANT ALL ON bayes.* TO bayes@localhost IDENTIFIED BY 'password';DB 사용하도록 구성
파일 /etc/mail/spamassassin/local.cf를 편집하고 추가하십시오:
bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn DBI:mysql:bayes:localhost
bayes_sql_override_username bayes
bayes_sql_username bayes
bayes_sql_password passwordSARE 규칙 업데이트
규칙에 서명하는 데 사용된 GPG 키를 가져옵니다:
wget http://daryl.dostech.ca/sa-update/sare/GPG.KEY sa-update --import GPG.KEY채널 파일 /etc/mail/spamassassin/sare-sa-update-channels.txt을 생성하십시오:
updates.spamassassin.org
72_sare_redirect_post3.0.0.cf.sare.sa-update.dostech.net
70_sare_evilnum0.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_html0.cf.sare.sa-update.dostech.net
70_sare_html_eng.cf.sare.sa-update.dostech.net
70_sare_header0.cf.sare.sa-update.dostech.net
70_sare_header_eng.cf.sare.sa-update.dostech.net
70_sare_specific.cf.sare.sa-update.dostech.net
70_sare_adult.cf.sare.sa-update.dostech.net
72_sare_bml_post25x.cf.sare.sa-update.dostech.net
99_sare_fraud_post25x.cf.sare.sa-update.dostech.net
70_sare_spoof.cf.sare.sa-update.dostech.net
70_sare_random.cf.sare.sa-update.dostech.net
70_sare_oem.cf.sare.sa-update.dostech.net
70_sare_genlsubj0.cf.sare.sa-update.dostech.net
70_sare_genlsubj_eng.cf.sare.sa-update.dostech.net
70_sare_unsub.cf.sare.sa-update.dostech.net
70_sare_uri0.cf.sare.sa-update.dostech.net
70_sare_obfu0.cf.sare.sa-update.dostech.net
70_sare_stocks.cf.sare.sa-update.dostech.net업데이트 스크립트 /usr/local/bin/update-sa를 생성하십시오:
#!/bin/bash
#
#
sa-update -D --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88A실행 가능하게 만들고 cron에 추가하십시오:
chmod +x /usr/local/bin/update-sa
ln -s /usr/local/bin/update-sa /etc/cron.daily/
ln -s /usr/local/bin/update-sa /etc/cron.hourly새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.