컨테이너 내부에서 실행될 Postfix 인스턴스에 대한 특정 Postfix 구성을 생성하는 방법을 파악하는 데 어려움을 겪고 있습니다.
이것은 내 요구 사항입니다.
- 보낸 사람이 작은 IP 주소 집합 중 하나에서 왔거나 보낸 사람이 로컬 프로그램이 아닌 한 중계는 금지됩니다(비록 컨테이너 외부의 프로그램이 컨테이너에서 실행되는 Postfix에 대한 메일을 대기열에 추가하도록 허용하는 방법은 흥미로운 퍼즐입니다).
- 작은 검사 세트를 통해 릴레이가 아닌 IP 주소에서 들어오는 각 메시지를 실행하고, 모두 통과하지 못할 경우 전달을 거부합니다.
- 보낸 사람 IP가 지정된 RBL에 있으면 거부합니다.
- 수신 IP를 그레이리스팅하는 중 이전에 메일을 받은 적이 없습니다.
- 대상 주소의 사용자 부분이 작은 정규식 집합과 일치하지 않으면 이를 거부합니다.
- 메시지가 Spamassassin의 간단하고 빠른 검사를 통과하지 못하면 거부하세요.
- 모든 지역 배송의 경우 최종 처리를 결정하는 절차를 따르십시오. 이 프로그램은 네 가지 결과 중 하나를 생성합니다.
- 다른 로컬 주소로 배송합니다(배달 대상은 루프 보호를 제공하도록 업데이트되고 로컬 배송 프로그램은 다시 실행됩니다).
- 원격 주소(예: Gmail 계정 또는 기타 주소)로 전달합니다.
- 특정 사용자(현재는 항상 동일한 사용자)가 소유한 로컬 Maildir 디렉터리로 전송합니다.
하나의 도메인으로 보낸 메일만 처리하면 됩니다. 언젠가는 모든 메일이 Mailman에 의해 처리되는 새 도메인을 추가하고 싶지만, 배달 전에 존재하지 않는 목록 주소에서 보낸 메일을 거부하는 것도 좋을 것입니다.
이러한 목표 중 하나 이상을 달성하는 방법을 지정하는 문서에 대한 포인터가 있습니까? 지역 및 운송용 Postfix 매뉴얼은 너무 모호해서 실제로 도움이 되지 않습니다. 시스템의 메일 흐름과 다양한 지점에서 이를 변경하는 방법을 자세히 설명하는 문서가 있으면 좋을 것입니다.
또한 Maildir 메일박스로 보내는 프로그램을 직접 작성할 수는 있지만 정확히 올바르게 수행하는 것은 매우 까다로우며 가능하면 이를 피하고 Postfix의 일부가 이미 이를 처리하는 방법을 알고 있도록 하고 싶습니다.
Postfix는 컨테이너에서 실행됩니다. queue 디렉터리와 Maildir 디렉터리는 컨테이너 내부에 마운트된 영구 파일 시스템입니다. 나는 앞서 이야기한 것(postgrey, spamassassin, 로컬 메일 처리 방법을 결정하는 것)을 구현하는 데 필요한 모든 프로그램도 동일한 컨테이너에서 실행될 것이라고 생각합니다. postgrey 및 spamassassin이 유지 관리하는 상태가 컨테이너 호출 전반에 걸쳐 지속되도록 준비해야 할 수도 있습니다.
메일을 읽으려면 mutt를 사용하겠습니다. 현재는 로컬에서 메일을 배달하는 유일한 사람이 될 것입니다. 하지만 메일을 배달할 여러 다른 Maildir 디렉토리가 있을 것입니다. 이 작업을 수행하려면 아마도 동일한 시스템(아마도 다른 컨테이너에 컨테이너화됨)에서 Dovecot을 실행할 것입니다.
또한 로컬 수신자 주소가 수백 개 있는데 대부분을 동일한 방식으로 처리하고 싶습니다. 그것들은 모두 패턴에 부합하지만 패턴에 맞는 일부 사람들은 다른 사람들과 다르게 대우받아야 합니다. 이메일의 내용을 참조하지 않고도 어떤 내용이 포함되어 있는지 미리 알 수 있어 해당 내용에 대해 보다 구체적인 패턴을 만들 수 있습니다.
답변1
smtpd_client_restrictions
다음 섹션에서는 많은 프로젝트를 다룰 수 있습니다.접미사 구성 매개변수
내 클라이언트 한도는 다음과 같습니다.
smtpd_client_restrictions = permit_mynetworks
permit_sasl_authenticated
check_helo_access
hash:/etc/postfix/helo_access
check_client_access
hash:/etc/postfix/client_checks
reject_unauth_destination
check_policy_service unix:private/policy-spf
reject_rbl_client cbl.abuseat.org
reject_rbl_client pbl.spamhaus.org
reject_rbl_client sbl.spamhaus.org
reject_rbl_client bl.blocklist.de
reject_unknown_client
이 구성은 들어오는 스팸의 약 99%를 제거합니다. 목록은 정렬된 목록입니다. 각 검사는 다음 검사까지 무시됩니다. 실패할 경우 메시지가 거부됩니다. 나는 client_checks
db 파일 에 포함된 규칙에 몇 가지 예외를 생성해야 한다는 것을 발견했습니다 .
예외 파일은 다음과 같습니다.
cat /etc/postfix/client_checks
ip.address.123.456 OK
ip.address.789.123 REJECT
postmap
일반 텍스트 컬럼형 파일을 만든 후 해당 파일이 데이터베이스 파일로 출력되도록 명령을 실행해야 합니다 .
postmap /etc/postfix/client_checks
수신자가 한 명 또는 두 명인 시스템의 경우 별칭을 통해 전달 규칙을 설정하는 것은 매우 쉽습니다.
man aliases
man postaliases
파일 형식과 프로세스는 거의 동일합니다. 별칭 이름을 한 줄씩 입력하고 명령을 실행하여 postaliases
데이터베이스를 생성합니다.
보다 복잡한 별칭의 경우 정규식을 별칭 테이블에 포함할 수 있습니다.
man regexp_table
...
EXAMPLE SMTPD ACCESS MAP
# Disallow sender-specified routing. This is a must if you relay mail
# for other domains.
/[%!@].*[%!@]/ 550 Sender-specified routing rejected
# Postmaster is OK, that way they can talk to us about how to fix
# their problem.
/^postmaster@/ OK
# Protect your outgoing majordomo exploders
if !/^owner-/
/^(.*)-outgoing@(.*)$/ 550 Use ${1}@${2} instead
endif