[server] 접미사에서 반송 메일을 수집하는 방법

이것은이 질문과 관련이 있습니다 :

linux-뉴스 레터 애플리케이션에 대한 반송 보고서를 얻는 방법은 무엇입니까? -서버 장애

반송 메일을 식별하고 내 뉴스 레터에서 수신 거부 할 수 있도록 뉴스 레터를 발송할 때 이와 같은 이메일 주소를 생성한다고 가정합니다. bounce-123456789@example.com

리턴 경로에서 이것을 사용한다고 가정합니까?

그런 다음 접두사에서 “bounce-“접두사가 붙은 모든 주소를 하나의 사서함에 수집하도록 어떻게 설정합니까?

마지막으로 사람들이 소프트 바운스와 하드 바운스를 언급하는 것을 들었습니다. 전자 메일 뉴스 레터에서 누군가를 영구적으로 제거 할시기를 알기 위해 다른 사람과 다른 사람을 어떻게 계산해야하는지 설명 할 수 있습니까?



답변

질문에 대한 정확한 답변 ( bounce-xxx@example.com주소 처리 )은 서버가 메일을 받도록 구성된 방식에 따라 다릅니다. 경우 example.com당신이 할 수있는 최선은 수집의 메시지입니다 가상 도메인입니다 bounce@example.com사서함 (가정 recipient_delimiter = -).

example.com서버에서 로컬로 전달 된 도메인 인 경우 (메일이 실제 시스템 계정으로 전달됨) 사용자 .forward의 홈 디렉토리에 파일을 추가 할 수 있습니다.이 파일 bounce은 바운스 정보를 구문 분석하여 데이터베이스 또는 파일에 기록하는 프로그램으로 전달됩니다. . 형식 및 프로그램 제공 방법 man local에 대한 자세한 내용 을 참조하십시오 .forward.

많은 도메인에 메시지를 전송하기 bounces.example.com때문에 VERP 도메인으로 사용 합니다. 이 도메인은에 추가해야 relay_domains합니다. /etc/postfix/transport_maps이 컨텐츠로 작성하십시오 .

bounces.example.com             bulkbounce:

그런 다음과 비슷한 줄을 추가하십시오 /etc/postfix/master.cf.

대량 바운스 유닉스-nn--파이프
  user = nobody argv = / usr / local / bin / bounce_handler.py $ {recipient}

bounce_handler.py스크립트의 명령 줄 옵션으로 VERP 주소를 받아이를 분석하고 바운스를 기록하는 데 필요한 데이터베이스 업데이트를합니다.


답변

실제로 여러 다른 도메인을 지원하려는 경우 Instyle의 답변을 구현하기가 매우 어렵고 다음과 같은 이유로 잘못되었습니다.

a)의 예 transport_maps에서 해당 도메인으로 전송 된 모든 이메일은 이메일이 반송 이메일인지 여부에 관계없이 해당 특정 서비스로 전송됩니다. 특정 도메인 이름을 사용하기 때문에 실제로는 반송 이메일이어야합니다. 그러나 그렇게 보장 할 수는 없습니다.

b) 스크립트로 전송 된 데이터는 바운스 메시지가 아니라 이메일 자체입니다. 다시 말해, 코드에서 이메일이 반송 된 이유를 모를 수도 있습니다 (예 : 로컬 반송이 원본 이메일 만 발송 함).


postfix에서 해당 설정을 수행하는 올바른 방법은 반송 알림 클래스를 사용하는 것입니다.

1) /etc/postfix/main.cf에서

notify_classes = bounce
bounce_notice_recipient = bounces@example.com
transport_maps = hash:/etc/postfix/transport_maps

2) / etc / postfix / transport_maps에서

# when you make changes to this file, run:
#   sudo postmap /etc/postfix/transport_maps
bounces@example.com bulkbounce:

보시다시피, 이제 bounces@example.com이메일이 반송 될 때마다 postfix에 사용하도록 지시합니다 . 그런 다음 전송 맵에서의 bulkbounce모든 이메일 주소를 처리하는 서비스로 사용하십시오 bounces@example.com.

마지막으로 bulkbounce스크립트를 사용하여 정의 할 수 있습니다 .

3) /etc/postfix/master.cf에서

bulkbounce unix -       n       n       -       -       pipe
  flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}

이 스크립트에는 사용자가 있어야합니다. nobody좋은 선택입니다. 특정 사용자를 원하면 다음을 사용하여 만들 수 있습니다.

useradd bounce

에 스크립트가 없으면 master.cf이메일이 대량 반송 계정으로 전송됩니다. 따라서 파일에서 전자 메일을 구문 분석하는 스크립트가 있으면 transport_mapsmaster.cf변경 없이 작동합니다 .


아래 의견에서 :

fyi-re : 이중 바운스 … 반송
주소 (와 같은 VERP 주소)를 수정하는 경우 스크립트에서 바운스 를 구문 분석하는 데 관심이있는 경우, user+id@fromdomain.commain.cf대한 행을 주석 처리하려고합니다 .bounce_notice_recipient+id


답변

대부분의 최신 메일 링리스트 소프트웨어는 MTA가 메일 링리스트 소프트웨어로 다시 전달하도록 VERP 메시지를 처리하는 방법을 이미 알고 있습니다. GNU Mailman 의 경우, “-delimiter (Postfix recipient_delimiter)와 함께 VERP를 어떻게 사용합니까?”라는 FAQ 페이지를 확인해야합니다 .

이를 처리하기 위해 사용자 정의 뉴스 레터 소프트웨어를 만드는 경우 이미 간단하고 쉽게 작업을 처리 할 수있는 기존 응용 프로그램을 사용하는 대신 휠을 재발 명하는 이유를 스스로에게 문의해야합니다.


답변