아마비스

Amavis
아마비스
개발자패트릭 벤 쾨터
초기 릴리즈1997년(1997년)
안정된 릴리스
2.12.0[1] / 2019년 7월 25일; 3년 (2019년 7월 25일)
저장소
기입처
운영 체제Unix와 같은
유형메일 필터링
면허증.GPLv2, 간이 BSD 라이선스
웹 사이트www.amavis.org Edit this at Wikidata

Amavis전자 메일용 오픈 소스 콘텐츠 필터로 메일 메시지 전송, 디코딩, 일부 처리 및 확인 기능을 구현하고 외부 콘텐츠 필터와 인터페이스하여 스팸, 바이러스기타 악성 프로그램으로부터 보호합니다.메일러(MTA, 메일 전송 에이전트)와 하나 이상의 컨텐츠 [2]필터 사이의 인터페이스로 간주할 수 있습니다.

Amavis는 다음 용도로 사용할 수 있습니다.

  • 메일 메시지에서 바이러스, 스팸, 금지된 내용 유형 또는 구문 오류 탐지
  • 내용, 원본 또는 크기에 따라 메일을 차단, 태그 지정, 리디렉션(하위 주소 사용) 또는 회송
  • 메일 메시지를 파일, 편지함 또는 관계형 데이터베이스에 검역(및 릴리스)하거나 보관합니다.
  • 외부 검사기를 사용하여 전달된 메시지 삭제
  • DKIM 시그니처 생성
  • DKIM 서명 확인 및 DKIM 기반 화이트리스트 제공

주요 기능:

  • 는 300개가 넘는 변수를 가진 광범위한 MIB를 사용하여 SNMP 통계 및 상태 모니터링을 제공합니다.
  • JSON 형식으로 구성된 이벤트 로그를 제공합니다.
  • IPv6 프로토콜은 인터페이스로 지원되며 IPv6 주소는 메일 헤더 섹션에서 형성됩니다.
  • 는, 멀티 캐스트메시지에서도, 1 회만 메시지를 스캔 하면서, 1 회마다의 설정을 적절히 준수합니다.
  • 는 국제 이메일(RFC 6530, SMTPUTF8, EAI, IDN)을 지원합니다.

Amavis와의 공통 메일필터링 설치는 MTA로서의 Postfix, 스팸 분류자로서 SpamAssinClam으로 구성됩니다.AV는 바이러스 대책으로서 모두 Unix와 같은 operating system으로 동작합니다.다른 많은 바이러스스캐너(약 30개) 및 기타 스팸스캐너(CRM114, DSPAM, Bogofilter)와 기타 MTA도 지원됩니다.

인터페이스 토폴로지

MTA와의 인터페이스에는 3가지 토폴로지가 지원됩니다.그amavisd 과정은 다중 스레드 아파트의 두 인스턴스 사이 고전 after-queue[3]메일 필터링 설정 굴복 또는 amavisd SMTP프록시 필터로 before-queue[4]필터링 설정에 사용될 수 있고 혹은amavisd 과정지만 그 자체가 메일 메시지를 core에 포워드 하지 않는데 그 경우 사 메일 분류 제공하기 위해 논의하게 될 수 있을 끼달 수 있nsulting 클라이언트는 메일 전송을 담당합니다.이 마지막 접근방식은 Milter 설정(일부 제한 있음) 또는 이력 클라이언트프로그램 amavisd-submit에서 사용됩니다.

버전 2.7.0 이후로는 송신 클라이언트와의 SMTP[4] 세션 중에 메일메시지 전송을 거부할 수 있기 때문에 큐 이전 설정이 권장됩니다.애프터큐 설정 필터링은 메일메시지가 이미 MTA에 의해 수신 및 큐잉된 후에 실행됩니다.이 경우 메일 필터는 메시지를 거부하지 않고 메시지를 배달(태그 부착 가능성 있음)하거나 폐기하거나 배달되지 않은 알림을 생성할 수 있습니다.이 경우 메시지가 바운스될 경우 불필요한 백스캐터링이 발생할 수 있습니다.가짜 송신자 주소

비포큐[4] 설정의 단점은 애프터큐 설정과 달리 현재(피크) 메일 전송 속도에 비례하는 리소스(CPU, 메모리)가 필요하다는 것입니다.이러한 설정에서는 지연이 허용되며 자원 사용량이 평균 메일 전송 속도에 대응합니다.Postfix 2.7.0에서 smtpd_module=speed_adjust 옵션이 도입됨에 따라 이전 콘텐츠필터의 자원 요건이 대폭 감소했습니다.[5]

일부 countries[6]에서 입법을 이지만,before-queue 설정에,, 또한 그들을 거부하는(아마도 이어져)메시지를 전달하기의 가능성은 잎을 폐기 또는 문자 메시지의 quarantining을 가진after-queue 필터링 설정을 배제하면 그것은 다중 스레드 아파트로 받아들여지고 있메일 필터링은 메일 메시지의 폐기 방침을(SMTP대리 m를 허용치 않는다ilt에러)

인터페이스 프로토콜

Amavis는 프로토콜 패밀리 PF_INET(IPv4), PF_INET6(IPv6) 또는 PF_LOCAL(Unix 도메인 소켓)의 하나 이상의 소켓을 통해 MTA에서 SMTP, LMTP 또는 단순한 개인 프로토콜 AM을 통해 메일 메시지를 수신할 수 있습니다.PDP는 amavisd-milter[7] 등의 도우미 프로그램과 함께 사용하여 필터와 인터페이스할 수 있습니다.출력측 프로토콜에서는 SMTP 또는 LMTP를 사용하여 백엔드 MTA 인스턴스 또는 LDA에 메시지를 전달하거나 Unix 파이프를 통해 생성된 프로세스에 메시지를 전달할 수 있습니다.SMTP 또는 LMTP를 사용하는 경우 옵션으로 프로토콜에 대한 TLS STARTTLS(RFC 3207) 확장을 사용하여 세션을 암호화할 수 있습니다.SMTP 명령어 파이프라인(RFC 2920)은 클라이언트 및 서버 코드로 지원됩니다.

SpamAssin과의 인터페이스

스팸 스캔이 네이블로 되어 있는 경우 데몬 프로세스 amavisd는 개념적으로 SpamAssin 프로젝트의 스팸 프로세스와 매우 유사합니다.어느 경우든 분기된 자식 프로세스는 SpamAssin Perl 모듈을 직접 호출하므로 성능은 비슷합니다.

주요 차이점은 사용되는 프로토콜입니다.Amavis일반적으로 MTA에 표준 SMTP 프로토콜을 말하는 반면, spamc/spamd의 경우 MTA는 일반적으로 Unix 파이프를 통해 메시지를 전달하는 스팸 프로그램을 생성하고, spamc 프로세스는 개인 프로토콜을 사용하여 메시지를 스팸 데몬으로 전송하고, spamd는 SpamAssin Perl 모듈을 호출합니다.

설계의 우선 순위

Amavis-New(이후 Amavis로 불림)의 설계 우선 순위는 신뢰성, 보안, 표준 준수, 성능 및 기능입니다.

신뢰성.

I/O 장애, 자원 고갈, 예기치 않은 프로그램 종료 등의 예기치 않은 이벤트로 인해 메일 메시지가 손실되지 않도록 하기 위해 amavisd 프로그램은 모든 시스템 호출 및 I/O 작업의 완료 상태를 꼼꼼히 체크합니다.예기치 않은 이벤트는 가능하면 로그에 기록되고 여러 레이어의 이벤트 처리로 처리됩니다.Amavis는 MTA에서 떨어진 메일메시지 배달에 대한 책임을 지지 않습니다.최종 성공 상태는 메시지가 백엔드 MTA 인스턴스로 전달되고 수신이 확인된 후에만 MTA에 보고됩니다.메시지 처리 또는 전송 중에 치명적인 장애가 발생했을 경우 처리 중인 메시지는 프런트엔드 MTA 인스턴스의 큐에 남아 나중에 재시도됩니다.이 접근법에서는 예기치 않은 호스트 장애, 프로세스 또는 그 컴포넌트 중 하나의 크래시도 커버됩니다.

메모리 크기, 파일 기술자, 디스크 사용량 및 하위 프로세스 생성과 같은 프로그램 리소스 사용이 제어됩니다.대용량 메일 메시지는 메모리에 보관되지 않으므로 사용 가능한 메모리 크기는 처리할 수 있는 메일 메시지의 크기에 제한을 두지 않으며 메모리 리소스가 불필요하게 낭비되지 않습니다.

보안.

신뢰할 수 없는 소스로부터의 메일 메시지에서 잠재적으로 악의적이거나 비표준적이거나 왜곡된 데이터를 처리하는 데 필요한 보안 측면에 많은 주의가 필요합니다.

메일 메시지를 처리하는 프로세스는 전용 사용자 ID에서 줄어든 권한으로 실행됩니다.옵션으로 chroot-ed를 실행할 수 있습니다.동적 메모리 관리를 투명하게 처리하는 Perl에서 모든 프로토콜 처리 및 메일 처리를 구현함으로써 버퍼 오버플로 및 메모리 할당 버그의 위험을 대부분 피할 수 있습니다.처리된 메시지의 내용이 실수로 시스템에 전파되지 않도록 주의하십시오.Perl은 야생에서 발신된 오염된 데이터의 마킹으로 추가적인 보안 안전망을 제공합니다.Amavis는 데이터의 자동 오염을 방지하고 데이터 흐름의 늦은 전략적 지점에서만 명시적으로 오염을 제거함으로써 이 Perl 기능을 유용하게 사용할 수 있도록 주의합니다.

Amavis는 여러 외부 프로그램을 사용하여 기능을 강화할 수 있습니다.아카이브 해제, 압축 해제, 바이러스 스캐너 및 스팸 스캐너입니다.이러한 프로그램은 C나 C++와 같은 언어로 구현되는 경우가 많기 때문에 이러한 프로그램 중 하나에 전달된 메일 메시지가 오류를 일으키거나 보안 취약점을 열 수 있습니다.이러한 프로그램을 권한 없는 사용자 ID로 실행하면 위험이 제한되며 chroot-ed일 수 있습니다.단, 유지보수가 되지 않은 디아카이브와 같은 외부 프로그램은 피해야 합니다.이러한 외부 프로그램의 사용은 설정 가능하며, 선택적으로 또는 그룹(모든 디코더 또는 모든 바이러스 스캐너 등)으로 비활성화할 수 있습니다.

성능

인터프리터드 프로그래밍 언어 Perl로 구현되어 있지만 Amavis 자체는 느리지 않습니다.Amavis 자체(외부 컴포넌트에 대해서는 언급하지 않음)에 의해 구현된 기능의 양호한 성능은 불필요한 데이터 복사를 방지하고, 자주 통과하는 코드 경로를 최적화하고, 적절한 데이터 구조와 알고리즘을 사용하여 낮은 수준의 운영으로 달성된다.시간 설정.개발 중에 코드의 프로파일링과 벤치마킹에 의해 병목현상이 검출됩니다.로그의 상세한 타이밍 리포트는, 특정의 인스톨의 보틀 넥을 인식하는 데 도움이 됩니다.

SpamAssin이나 일부 명령줄 바이러스 스캐너와 같은 특정 외부 모듈이나 프로그램은 매우 느릴 수 있습니다.이러한 모듈을 사용하면 경과된 시간과 처리 자원의 대부분을 차지하기 때문에 Amavis 자체에서 사용하는 자원은 비례적으로 상당히 줄어듭니다.

외부 메일 디코더, 바이러스 스캐너, 스팸 스캐너 등의 컴포넌트는 필요 없는 경우 선택적으로 비활성화 시킬 수 있습니다.남은 것은 SMTP 또는 LMTP 프로토콜을 사용하여 MTA와의 메일 메시지 전송, 메일 헤더 섹션 유효성 검사, 금지된 메일 내용 유형 검사, DKIM 서명 확인 및 생성 등 Amavis 자체에 의해 구현되는 기능입니다.

그 결과, DKIM 서명이나 검증등의 메일 처리 태스크(다른 메일 체크가 무효가 되어 있는 경우)는 매우 고속으로 컴파일 된 언어의 [8][9][10]실장에 필적할 수 있습니다.고속 바이러스 스캐너를 사용해도 스팸 스캔이 비활성화되어 있으면 전체 검사가 놀라울 정도로 빠를 수 있습니다.

표준에 준거

프로토콜 및 메시지 구조의 구현은 RFC 5322, RFC 5321, RFC 2033, RFC 3207, RFC 2045, RFC 2046, RFC 2047, RFC 3461, RFC 3462, RFC 3463, RFC 3464, RFC 4155, RFC 5965, RFC 6376, RFC 6451 등의 적용 가능한 표준을 준수합니다.퍼블릭(CPAN) Perl 모듈이 존재하는 경우에도 일부 기능이 Amavis 코드에 재실장되었지만 표준을 준수하기 위한 세부사항이나 오류 확인 및 처리가 충분하지 않은 경우가 있습니다.

면허증.

Amavis는 GPLv2 라이선스로 라이선스됩니다.이것은, 현재의 코드와 이력 브랜치에도 적용됩니다.이에 대한 예외는 새로운 BSD 라이선스의 대상이 되는 일부 지원 프로그램(모니터링 및 통계 보고서 등)입니다.

프로젝트

이 프로젝트는 바이러스가 포함된 전자 메일 메시지를 탐지하고 차단하는 UNIX 쉘 스크립트로 1997년에 시작되었습니다.이는 Unix와 유사한 플랫폼에서 실행되는 MTA(메일 전송 에이전트) 또는 LDA(로컬 전송) 단계에서 바이러스를 차단하고 최종 사용자의 개인용 컴퓨터에서 실행되는 다른 바이러스 방지 메커니즘을 보완하기 위한 것입니다.

다음으로 이 툴은 Perl 프로그램으로 재실장되어 나중에 데몬화된 프로세스로 진화했습니다.프로젝트의 첫 5년간 12명의 개발자가 돌아가면서 공통의 목표, 프로젝트명 및 일부 개발 인프라스트럭처를 유지하면서 여러 변형을 개발했습니다.

2008년 12월(2018년 10월 9일까지) 이후 유일하게 활동 중인 브랜치는 공식적으로 Amavis-New로, 2002년 3월부터 Mark Martinec에 의해 개발 및 유지되고 있습니다.이는 당시 개발자들 간에 비공개 서신을 통해 합의된 사항이었다.크리스찬 브리카트, 라스 헤킹, 힐코 벤겐, 레이너 링크, 마크 마르티네크.프로젝트명 Amavis는 Amavis-New 지사의 이름과 대부분 호환됩니다.

스팸 및 기타 원치 않는 콘텐츠에 대한 보호 기능을 추가하는 등 오랜 기간 동안 많은 기능이 추가되어 왔습니다.신뢰성, 보안, 표준 준수 및 성능에 초점을 맞추고 있습니다.

이 프로젝트에서 사용 중인 도메인 amavis.org은 초기 개발자 중 한 명인 Christian Bricart에 의해 1998년에 등록되었으며, 그는 여전히 도메인 이름 등록을 유지하고 있습니다.도메인은 현재 유일한 활성 분기 전용입니다.프로젝트 메일링 리스트는 2011년 3월에 SourceForge에서 amavis.org으로 이전되었으며 Ralf Hildebrandt와 Patrick Ben Koetter가 호스팅하고 있습니다.프로젝트 웹 페이지와 메인 배포 사이트는 슬로베니아 류블랴나Jojef Stefan Institute(2018년 이전까지)에 위치해 있으며, 개발의 대부분은 2002년부터 2018년 사이에 이루어졌다.

프로젝트 리더 교체 발표

2018년 10월 9일 Mark Martinec는 일반 지원 및 토론 메일링 리스트에서 프로젝트에서의 은퇴를 선언하고 패트릭 벤 코터도 새로운 프로젝트 리더로 계속 활동할 것이라고 발표했습니다.

개인적으로 Ben을 알고 있습니다.그는 The Book of Postfix의 두 저자 중 한 명이고, 아마비스를 그의 직업 생활에도 활용하고 있기 때문에, 이 프로젝트는 좋은 [11]손에 넣을 수 있을 것이라고 생각합니다.

--

그 후 Patrick은[12] 소스 코드를 공개 GitLab 저장소로 이행하고 프로젝트 개발에 관한 다음 단계를 위한 계획을 통지했다.

지점 및 프로젝트 이름

프로젝트의 역사를 통해 프로젝트 또는 지사의 이름은 다소 다양했습니다.처음에 프로젝트 이름의 철자는 Christian Bricart에 의해 소개된 AMaViS(A Mail Virus Scanner)였습니다.Perl로 다시 쓰면서 프로그램의 이름은 Amavis-perl이었습니다.데몬화된 버전은 처음에는 amavisd-snapshot이라는 이름으로 배포된 후 amavisd로 배포되었습니다.Hilko Bengen의 모듈러 개서를 Amavis-ng이라고 부릅니다.

2002년 3월에 Mark Martinec에 의해 amavis-new 지사가 도입되었습니다.처음에는 amavis-snapshot-20020300에 대한 패치로서 도입되었습니다.이것은 나중에 자급자족형 프로젝트로 발전해 현재는 유일하게 살아남아 적극적으로 유지 보수되고 있습니다.현재 프로젝트 이름은 Amavis(프로그램 이름 자체는 Amavis)로 표기하는 것이 좋습니다.Amavis라는 이름은 현재 대부분 amavis-new와 교환할 수 있다.

프로젝트 이력

셸 프로그램

  • 1997년(원래 코드: Mogens Kjér - Carlsberg Laboratory,[13] 위르겐 Quade에 의해 수정됨), 정식 출시되지 않음[14][15]
  • 1998-01-17 AMaViS 0.1 (Christian Bricart) AMaViS, 첫 공식 출시
  • 1998-01-28 AMaViS 0.1.1
  • 1998-12-08 AMaViS 0.2.0-pre1
  • 1999-02-25 AMaViS 0.2.0-pre2
  • 1999-03-29 AMaViS 0.2.0-pre3
  • 1999-03-31 AMaViS 0.2.0-pre4
  • 1999-07-19 AMaViS 0.2.0-pre5
  • 1999-07-20 AMaViS 0.2.0-pre6
  • 2000-10-31 AMaViS 0.2.1[14] (Christian Bricart, Rainer Link, Chris Mason)

Perl 프로그램

  • 2000-01 Amavis-perl (Chris Mason)
  • 2000-08 Amavis-perl-8
  • 2000-12 Amavis-perl-10
  • 2001-04 Amavis-perl-11(아마비스로 분할)
  • 2003-03-07[16] Amavis-0.3.12 (Lars Hecking)

Perl 데몬: amavisd

  • 2001-01 데몬화(Geoff Winkless)
  • 2001-04 amavisd-snapshot-20010407 (Lars Hecking)
  • 2001-07 amavisd-1202-20010714
  • 2002-03 amavisd-1992-20020300(amavisd-new로 변경)
  • 2003-03-03[16] amavisd-0.1

Perl, 모듈러 리디자인

(힐코벤겐)

  • 2002-03 amavis-ng-0.1
  • 2003-03 amavis-ng-0.1.6.2

새로운

(마크 마르티네크)

  • 2002-03-30 amavis-new, 프리포킹, Net:서버
  • 2002-05-17
  • 2002-06-30 패키지, SQL 검색
  • 2002-11-16 통합 - 1 파일
  • 2002-12-27
  • 2003-03-14 LDAP 룩업
  • 2003-06-16
  • 2003-08-25 페이지5
  • 2003-11-10 p6 @*_filename
  • 2004-01-05 페이지7
  • 2004-03-09 p8
  • 2004-04-02 p9
  • 2004-06-29 p10
  • 2004-07-01 2.0 정책 뱅크, IPv6 주소 형식
  • 2004-08-15 2.1.0 amavisd-param 모니터링 유틸리티
  • 2004-09-06 2.1.2
  • 2004-11-02 2.2.0
  • 2004-12-22 2.2.1
  • 2005-04-24 2.3.0 @decoders, 패킷 단위의 규칙 금지
  • 2005-05-09 2.3.1
  • 2005-06-29 2.3.2
  • 2005-08-22 2.3.3
  • 2006-04-02 2.4.0 DSN(SMTP), %*_by_ccat
  • 2006-05-08 2.4.1
  • 2006-06-27 2.4.2 펜팔, SQL 로깅 및 검역
  • 2006-09-30 2.4.3
  • 2006-11-20 2.4.4
  • 2007-01-30 2.4.5
  • 2007-04-23 2.5.0 콘텐츠카테고리 차단, SMTP 클라이언트 변경
  • 2007-05-31 2.5.1 amavisd-requireue
  • 2007-06-27 2.5.2
  • 2007-12-12 2.5.3
  • 2008-03-12 2.5.4
  • 2008-04-23 2.6.0 DKIM, 바운스 킬러, TLS
  • 2008-06-29 2.6.1
  • 2008-12-12 Amavis는 Amavis-New입니다.
  • 2008-12-15 2.6.2
  • 2009-04-22 2.6.3 CRM114DSPAM 지원, 잘라내기
  • SNMP를 통한 2009-06-25 2.6.4 감시
  • 2010-04-25 2.7.0-pre4
  • 2011-02-03 2.7.0-pre14
  • 2011-03-07 메일링 리스트가 SourceForge에서 amavis.org으로 이동
  • 2011-04-07 2.6.5
  • 2011-05-19 2.6.6
  • 2011-06-01 2.7.0 사전 개선, 속도 향상
  • 2012-04-29 2.7.1
  • 2012-06-30 2.7.2
  • 2012-06-30 2.8.0 BDB 대신 öMQ 사용, 퍼포먼스 최적화
  • 2013-04-27 2.8.1-rc1
  • 2013-06-28 2.8.1 펜팔 스토리지에 Redis 사용 가능
  • 2013-09-04 2.8.2-rc1 (2.8.2 미발매)
  • 2014-05-09 2.9.0 구조 로그(JSON 형식), IP 주소 자동 평판
  • 2014-06-27 2.9.1
  • 2014-10-22 2.10.0 국제화 이메일(RFC 6530, SMTPUTF8, EAI, IDN)
  • 2014-10-22 2.10.1
  • 2016-04-26 2.11.0
  • GitLab 저장소로 마이그레이션하기 직전 2018-10-09 2.11.1 마이너 업데이트

「 」를 참조해 주세요.

레퍼런스

  1. ^ https://gitlab.com/amavis/amavis/-/tags/v2.12.0 를 참조해 주세요.
  2. ^ LeBlanc, Robert (2004-11-11). "Beating Spam and Viruses with amavisd-new and Maia Mailguard Linux Journal". Linux Journal. Archived from the original on 2022-04-10. Retrieved 2022-04-10.
  3. ^ Venema, Wietse (2010-01-17). "Postfix After-Queue Content Filter". Archived from the original on 2012-07-29.
  4. ^ a b c Venema, Wietse (2009-12-11). "Postfix Before-Queue Content Filter". Archived from the original on 2012-06-16.
  5. ^ Venema, Wietse (2010-02-14). "Postfix stable release 2.7.0". Archived from the original on 2012-07-19.
  6. ^ "StGB (Germany), § 206 Verletzung des Post- oder Fernmeldegeheimnisses". Bundesgesetzblattes. Archived from the original on 2012-10-19.
  7. ^ Rehor, Petr (2010-05-02). "amavisd-milter". Archived from the original on 2012-06-30.
  8. ^ Martinec, Mark (2011-06-10). "amavisd 2.7.0 and Mail::OpenDKIM". Archived from the original on 2012-07-30.
  9. ^ Martinec, Mark (2011-06-10). "amavisd 2.7.0 and Mail::OpenDKIM". Archived from the original on 2012-07-30.
  10. ^ Martinec, Mark (2011-06-10). "amavisd 2.7.0 and Mail::OpenDKIM". Archived from the original on 2012-07-30.
  11. ^ a b Martinec, Mark (2018-10-09). "ANNOUNCE: Amavis project handed over to new project leaders". The amavis-users-list Archives. The amavisd-new Project.
  12. ^ Koetter, Patrick Ben (2018-10-09). "amavis: Next Steps". The amavis-users-list Archives. The amavisd-new Project.
  13. ^ Kjaer, Mogens. "How safe is this: Automatic scanning of mails for virus (LONG)". Newsgroup: comp.mail.sendmail.
  14. ^ a b Bricart, Christian; Link, Rainer (2000-10-31). "AMaViS - A Mail Virus Scanner - Technical Information and Installation Instructions". Archived from the original on 2012-07-19.
  15. ^ Quade, Jürgen (1998). "Mausefalle - EMail-Viren-Check unter Linux". iX - Magazin für professionelle Computertechnik (in German). Heise online (2/1998): 136. Archived from the original on 2012-07-27.
  16. ^ a b "AMaViS - A Mail Virus Scanner". 2004-10-07. Archived from the original on 2012-08-27.

외부 링크