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


15

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

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

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

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

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

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


"바운스"라는 단어가 포함 된 전자 메일 주소는 "yuck"... (스팸)으로 표시 될 수 있습니다. 즉, 자신 Message-Id의 헤더에 자신의 주소 를 입력 할 수 있으면 다시 보내야합니다. 누가 누군지 확인하기에 충분합니다.
Alexis Wilke

답변:


17

질문에 대한 정확한 답변 ( 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 주소를 받아이를 분석하고 바운스를 기록하는 데 필요한 데이터베이스 업데이트를합니다.


오, 수신자 수심계를 사용하여 그룹화하는 아이디어가 좋습니다. 일반적으로 +가 올바르게 사용됩니까? 나는 그것이 잘 작동한다고 생각합니다, 감사합니다!
브라이언 암스트롱

11

실제로 여러 다른 도메인을 지원하려는 경우 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


당신의 방법을 사용하여 어떻게 든 두 번 반송에서 bounce + id @ ...와 bounce @ ...로 한 번 반송을 두 번 수신합니다-사용자 바운스는 실제로 시스템에 존재하지 않습니다. 이 이메일을 '저장'하십시오.) 이메일은 반송 반송 경로 bounce + id @로 전송됩니다.
RVandersteen

@RVandersteen 왜 당신이 그것을 두 번 얻을지 잘 모르겠습니다. 와 함께 +id@어떤 종류의 봉투 가 될 수 있습니까?
Alexis Wilke

기본 '보낸 사람'주소를 사용하는 경우 반송 메일이 여전히 bounce@example.com 및 originalfrom@example.com으로 전송됩니다 (더 이상 반송 경로가 추가되지 않음)
RVandersteen

1
나중에 참조 할 수 있도록 notify_classes를 추가해도 반송 메시지를 FROM / Return Path로 보내는 MTA의 동작은 변경되지 않습니다. 그 위에 동작을 추가합니다 (notify_bounce_recipient에게도 보냅니다). 이것이 이중 메일이 들어오는 이유입니다. 위의 질문에 대한 답변
RVandersteen

1
fyi-re : double bounces. 반송 주소 ( 'user+id@fromdomain.com'과 같은 VERP 주소)를 수정하는 경우 main.cf에서 'bounce_notice_recipient'에 대한 행을 주석 처리하고, 스크립트에서만 + id 바운스를 파싱하고
싶다면

1

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

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


그래, 나만의 뉴스 레터 소프트웨어를 만들고있다. 좋은 이유가 있습니다!
브라이언 암스트롱

그런 다음 VERP를 사용하여 바운스를 올바르게 처리하는지 확인해야합니다.
Jeremy Bouse

안녕하세요 Jeremy, VERP가 여기에 표준 솔루션이라고 생각합니다. 발신자와 수신자를 식별하는 것만 유용한 것 같습니다. 이 경우 바운스를 일으킨 특정 메시지도 식별해야하므로 주소에 자체 ID를 사용하여 사용자 지정 솔루션을 수행해야한다고 생각합니다. 수신자 델리 미터를 사용하여 아래에 언급 한 솔루션을 사용하면 하나의 반송 계정으로 그룹화 할 수 있다고 생각합니다. 도움을 주셔서 감사하지만 응답 주셔서 감사합니다!
브라이언 암스트롱

Insyte의 솔루션은 수정 된 VERP입니다. 바운스 핸들러가 식별 할 수있는 고유 식별자를 충분히 제공해야합니다. 대부분의 메일 링리스트 소프트웨어에서 이메일 주소는 있지만 자신이 디자인 한 이후라면 무엇이든 될 수 있습니다.
Jeremy Bouse
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.