Postfix 또는 exim: 자동/프로그래밍 방식 및 전달된 이메일 설정

Postfix 또는 exim: 자동/프로그래밍 방식 및 전달된 이메일 설정

현재 외부 smtp 공급자 사용을 내부 설치로 대체하려고 합니다. 다음 상황을 처리해야 합니다.

  • 특정 주소는 Gmail 주소로 전달되어야 합니다. 우리는 Gmail을 기본 이메일 인터페이스로 계속 사용하고 싶습니다.

  • 다른 주소는 pop/imap 사서함으로 사용할 수 있어야 합니다.

  • 다른 주소는 프로그래밍 방식으로 처리됩니다. 다양한 작업을 시작하고 기록하는 등의 작업을 수행합니다. 이러한 주소는 이메일 주소를 처리하는 프로세스를 시작하거나 쉽게 처리할 수 있는 형식으로 저장해야 합니다.

  • 또한 도메인 키, spf 및 이메일 전달을 허용하는 데 필요한 모든 항목을 사용하여 매우 쉽게 구성할 수 있어야 합니다.

나는 먼 과거에 sendmail을 사용했습니다. 요즘에는 postfix와 exim이 권장되는 옵션인 것 같습니다. 내 주요 질문은 주소를 Gmail로 전달하고 프로그래밍 방식으로 액세스하기 위한 최선의 선택과 설정은 무엇입니까?입니다. procmail이 여전히 좋은 방법인가요, 아니면 요즘 더 나은 옵션이 있나요?

우리는 리눅스/우분투 서버를 사용하고 있습니다.

답변1

Postfix는 견고하고 잘 지원되며 구성이 쉽습니다. 당신이 설명하는 모든 것들은 상당히 일상적입니다.

  • 전달: virtual_alias 맵 사용
  • POP/IMAP 사서함: 지역 배달, POP/IMAP 서버에 Dovecot과 같은 것을 사용하세요.
  • 프로그래밍 방식: 메일을 스크립트에 공급한다는 의미라면 /etc/aliases에서 수행됩니다. "쉽게 처리 가능"하려면 mbox 및 Maildir 형식이 있으며 모두 표준 형식입니다.
  • 도메인 키/SPF: SPF는 DNS에서 수행됩니다. 도메인 키는 밀터 또는 SMTP 프록시로 설정하기가 쉽습니다.

답변2

프로그래밍 작업의 경우 프로그램/스크립트가 어떤 UID로 실행될지 알아야 합니다.

예를 들어, postfix의 경우 /etc/aliases(또는 다른 루트 소유 별칭 파일)에서 실행되는 스크립트는 'nobody' 사용자로 실행됩니다.

postfix에는 여러 개의 별칭 파일을 가질 수 있는 기능이 있으며 별칭 파일에서 실행되는 (여기 좋은 부분이 있습니다) 프로그램은 해당 파일을 소유한 사용자로 실행됩니다(루트 제외 - 앞에서 언급한 것처럼 루트가 소유한 별칭 파일은 none으로 실행됨) ).

메일에서 루트로 스크립트를 실행해야 하는 경우 가장 쉬운 방법(sudo가 설치된 경우)은 '아무도'가 비밀번호 없이 루트로 실행할 수 있도록 sudo를 구성하고 실행되는 래퍼 스크립트에서 실행하는 것입니다. sudo로 하세요.

참고: 메일에서 스크립트를 실행할 때마다 데이터(예: 메일)가 신뢰할 수 없는 소스(인터넷)에서 온 것임을 기억해야 합니다. 따라서 본문이나 헤더의 데이터를 다음과 같이 사용하는 것은 매우 안전하지 않습니다. 스크립트에 의해 실행되는 명령에 대한 인수입니다. 이는 기본적으로 CGI 스크립트에서 사용자 제공 데이터를 신뢰하는 것과 동일한 문제입니다. 그렇게 하지 마세요. 예를 들어 사용자가 제공한 데이터가 " ... innocuousdatahere ...; rm -rf /"와 같은 경우 잘못 작성된 스크립트가 무엇을 할 수 있는지 생각해 보세요. 세미콜론과 같은 명백한 항목을 확인하고 제거하는 것이 쉬울 것이라고 생각할 수도 있지만 확인해야 할 명확하지 않은 항목도 많이 있으므로 다음을 위한 준비를 하면 됩니다. 당신이 그것들을 모두 생각하거나 잡을 가능성이 없기 때문에 실패합니다. 사용자가 제공한 데이터를 신뢰하지 않음으로써 보안 위험을 완전히 제거하는 것이 훨씬 안전합니다.

이는 스크립트가 어떤 UID로 실행되든 상관없이 중요하지만 루트로 실행되는 경우 특히 중요합니다.

마지막으로, 귀하의 직접적인 질문 중 하나에 답하기 위해 procmail은 귀하가 원하는 작업에 여전히 유용한 도구입니다. maildrop 및 기타 유사한 프로그램도 마찬가지입니다. procmail 등을 본문과 헤더를 구문 분석하여 수행할 작업을 결정하는 특수 도구로 생각하면 스크립트에 구문 분석 코드를 모두 포함할 필요가 없습니다. 작업을 수행하도록 스크립트를 작성하고 procmail을 사용하여 스크립트를 실행할 시기를 결정하세요. 예를 들어, 자체 홈 디렉토리와 .procmailrc 파일이 있는 'mailjobs'라는 새 사용자를 만들 수 있습니다. 그런 다음 해당 사용자에게 메일을 전달하는 별칭을 만듭니다. 그런 다음 mailjobs의 .procmailrc는 X-Original-To 헤더를 확인하여 실행할 스크립트를 결정합니다.

답변3

exim과 postfix 모두 필요한 작업을 수행할 수 있는 능력이 충분합니다. 가장 좋은 조언은 가장 사용하기 쉽고/또는 가장 친숙한 것을 선택하는 것입니다.

Gmail 및 스크립트로의 전달을 처리하는 가장 좋은 방법은 다음을 사용하는 것입니다.전역 별칭 ​​파일(보통 /etc/aliases 또는 /etc/mail/aliases에 보관됩니다)

관련 정보