메일 보안 · 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.com

exim 구성에서 이를 지정하십시오.

domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domains

ldap가 활성화된 CGP 도메인을 파일 /etc/exim/ldap-domains에 생성하고 추가하십시오. 첫 번째 열은 도메인 별칭 또는 도메인이고 두 번째는 ldap에 존재하는 실제 도메인입니다. CGP 도메인을 ldap에 동기화할 때 도메인 별칭도 복사되지 않습니다.

#example  /etc/exim/ldap-domains
example.com: example.com
example.co.za: example.com

check_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 NEWPASSWORD

mailwatch 데이터베이스를 생성하고 테이블을 채우십시오:

mysql -p < /usr/local/src/mailwatch-1.0.4/create.sql

mailwatch 및 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  password

SARE 규칙 업데이트

규칙에 서명하는 데 사용된 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
Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.