[ 참조 : https://linuking.com/ ]
Spamassassin score system
X-Spam-Status
스팸 스코어가 무슨 테스트로 인해 지정되었는지를 설명하고 있다.
아래 예는 No - 스팸 메시지가 아니다. hits=2.2 태그 레벨이 2.2로 HTMl, SPF 테스트를 수행했다는 의미를 포함하고 있다.
X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=HTML_MESSAGE,SPF_PASS
Amavisd 에서 spam filtering 수준 조절
Amavisd 를 이용해 원하는 태그, 아래와 같은 “spamminess” level 을 지정해 줄 수 있다.
$sa_tag_level_deflt= 2.0;
X-Spam-Status, X-Spam-Level 태그에 스팸 레벨을 지정한다. $sa_tag_level_deflt= undef; 로 지정하면 이 태그는 항상 추가된다.
$sa_tag2_level_deflt = 6.31;
스팸이란 판단의 경계 스코어 값이다. 이 값 이상의 스코어를 얻은 메시지는 스팸으로 인식되고 메시지 제목에 **** SPAM **** 이 추가된다. 6.31이라는 값은 너무 높은 것 같고 $sa_tag2_level_deflt = 5.0으로 사용해 보라.
$sa_kill_level_deflt = 6.31;
스팸 레벨이 이 값일 경우 Amavis에 의해 메일은 검역소로 보내지거나 특정 메일 박스로 간다. 또한 메시지의 “spamminess” level 을 정의해서 스팸 처리된 메일의 송신자는 Delivery Status Notification (DSN) 인 “your message was not delivered” 와 같은 이메일을 받을 수 있다. 단, $sa_dsn_cutoff_level value 이 스팸 레벨 이하로 설정되면 DSN 메시지는 보내지 않는다.
$sa_kill_level_deflt = 10000; 로 설정하면 스패머에게 메일 전송을 안하고 특정 메일박스에 복사하지도 않는다. 즉 사용자에게 특정한 문자가 추가된 메일을 전송하게 된다. 이 숫자는 10000을 넘지 않는게 좋겠다.
$sa_tag2_level_deflt 를 kill_level_deflt와 같은 값으로 설정하면 특정 메일박스로 가고 사용자에게 전송되지 않는다. 바로 이어서 “$spam_quarantine_to” 에 특정 이메일 주소를 명시해서 스팸으로 인식( 4개의 스팸 헤더, 제목 변경 혹은 검역소로 보내야하는)되는 메시지를 보내거나 이 값이 없다면 시스템의 검역소로 보내진다.
$sa_dsn_cutoff_level = 9;
DSN 메시지를 메일 발송자에게 전송하지 않는 스팸 레벨을 정의한다. You can leave it as it is, since we’ll not do any bouncing (see below the change from D_BOUNCE to D_DISCARD).
@bypass_virus_checks_maps = (1);
Anti-Virus 검증을 제외한다.
$sa_spam_subject_tag = '***SPAM*** ';
메일 메시지가 스팸으로 판정되면 메일 제목의 앞에 추가하는 문자열. 마지막 공백이 있음에 주의.
@local_domains_maps = ( [".$mydomain"] );
주어진 도메인을 Amavis 가 이메일을 스캔할 것을 정의. 아래와 같이 지역 도메인을 사용할 수 있다.
@local_domains_maps = ( [".$mydomain", "example2.com", "example3.com"] );
# $final_virus_destiny= D_DISCARD;
이 라인을 찾아 # 로 막았으면 제거한다. Amavis 가 검역소로 바이러스가 포함된 메시지를 전송한다 ( 특정한 이메일 박스, 시스템에 지정된 검역소 )
$final_*_destiny 의 값을 D_DISCARD 로 설정하면 메일 발송자에게 바이러스 차단에 대한 메시지를 전송하지 않는다.
$final_banned_destiny=D_DISCARD;
Amavis 가 금지된 파일을로 무엇을 할지 지정한다. D_DISCARD 로 지정하면 지정된 메일박스로 메시지를 전달할 수 이다.
기본은 D_BOUNCE.
Note: even if you leave this setting as is, i.e. commented out, double-extension files will still be blocked. This is an Amavis default.
$final_spam_destiny= D_DISCARD;
스팸 메일을 검역소로 보낸다 - $spam_quarantine_to 에 지정된 이메일 주소. 기본은 D_BOUNCE
$virus_admin= "virusalert@$mydomain";
바이러스 발견시 메시지를 전송할 관리자 이메일 postmaster 를 사용하자.
$virus_admin= "postmaster@$mydomain";
경고 등 관리자는 postmaster 를 이용하자:
$mailfrom_notify_admin= "postmaster@$mydomain";
$mailfrom_notify_recip= "postmaster@$mydomain";
$mailfrom_notify_spamadmin = "postmaster@$mydomain";
즉, FROM: postmaster@example.com 로 사용자에게 메시지가 전달된다.
$spam_admin 설정이 있지만 스팸 발견시 경고 메시지를 전송하지는 말자.
아래 명령들은 amavis 설정 파일에 기본적으로 준비되어 있지 않다. 입력을 하길 바란다.
@bypass_banned_checks_maps = (1);
특정한 확장자를 포함한 이메일은 금지한다 - 모든 이중 확장자 파일은 막는다.
금지할 확장자 들은 $banned_filename_re = new_RE 에서 정의한다.
금지 파일
$banned_filename_re = new_RE(
# qr'^UNDECIPHERABLE$',# is or contains any undecipherable components
# block certain double extensions anywhere in the base name
qr'.[^./]*[A-Za-z][^./]*.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll).?$'i,
# qr'{[0-9a-z]{4,}(-[0-9a-z]{4,}){0,7}}?'i,# Class ID extensions - CLSID
qr'^application/x-msdownload$'i,# block these MIME types
qr'^application/x-msdos-program$'i,
qr'^application/hta$'i,
# qr'^message/partial$'i,# rfc2046 MIME type
# qr'^message/external-body$'i,# rfc2046 MIME type
# [ qr'^.(Z|gz|bz2)$'=> 0 ],# allow any in Unix-compressed
[ qr'^.(rpm|cpio|tar)$'=> 0 ],# allow any in Unix-type archives
# [ qr'^.(zip|rar|arc|arj|zoo)$'=> 0 ],# allow any within such archives
qr'..(exe|vbs|pif|scr|bat|cmd|com|cpl)$'i, # banned extension - basic
# qr'..(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|grp|hlp|hta|
#inf|ins|isp|js|jse|lnk|mda|mdb|mde|mdw|mdt|mdz|msc|msi|msp|mst|
#ops|pcd|pif|prg|reg|scr|sct|shb|shs|vb|vbe|vbs|
#wmf|wsc|wsf|wsh)$'ix,# banned ext - long
# qr'..(mim|b64|bhx|hqx|xxe|uu|uue)$'i,# banned extension - WinZip vulnerab.
qr'^.(exe-ms)$',# banned file(1) types
# qr'^.(exe|lha|tnef|cab|dll)$',# banned file(1) types
);
@whitelist_sender_maps = read_hash("$MYHOME/white.lst");
white-list 파일이 있는 위치를 지정한다.기본값은 /var/amavis.
@blacklist_sender_maps = read_hash("$MYHOME/black.lst");
black-list 송신자가 있는 위치를 지정한다. 기본값은 /var/amavis.
$spam_quarantine_to = "spam@$mydomain";
$sa_kill_level_deflt 에서 지정한 스팸 레벨로 검출한 스팸 메시지를 전달한 이메일 주소. 만약 스팸으로 처리된 메시지를 사용자에게 Spam tag만 붙여 전송하고자 한다면 이 명령은 무시해도 좋다. 그렇지만 $sa_kill_level_deflt 과 $sa_tag2_level_deflt 레벨이 동일하다면 $spam_quarantine_to 설정을 해야 한다.
$virus_quarantine_to = "virus@$mydomain";
모든 바이러스 메일을 지정한 이메일로 전달한다.
$banned_quarantine_to = "spam@$mydomain";
지정한 파일 형식 ($bypass_banned_checks_maps 에서)을 금지하는 설정을 하고 해당 메일을 지정한 이메일로 전송한다.
$recipient_delimiter = '+';
or
$recipient_delimiter = '-';
Postfix 에서 이메일 주소에서 구분자를 지정했다면 둘 중 하나를 설정한다.
$hdrfrom_notify_admin = "Content Filter <postmaster@$mydomain>";
이 명령은 이메일 헤더의 FROM을 강제로 지정한 주소로 바꾸어준다.
Outgoing email 에 spam 해제
I think the easiest way to bypass spam scanning for outgoing emails is to set
@bypass_spam_checks_maps = ( ["example.com"] );
Or if you want to read your domains from a file:
read_hash(%local_domains, '/etc/amavis/local_domains');
Then you can add your domains to /etc/amavis/local_domains - one domain per line.You can use the same syntax for bypass virus/header/banned checks.