2009-11-22 1 views
5

사용자의 내부 전자 메일 주소로 전자 메일 메시지를 받아야 관리자가 해당 메시지를 승인 한 다음 해당 사용자의 외부 사서함으로 전달해야하는 웹 응용 프로그램을 작성하고 있습니다.후위 메시지 수신 후크

메시지 수신 작업을위한 접미사를 설치하고 구성했습니다. 가상 전자 메일 주소와 사용자 전자 메일 주소가 저장된 기존 데이터베이스를 사용합니다. 로컬 전자 메일 저장소는 maildir이고 postfix의 가상 MDA를 사용합니다.

기본적으로 새 메시지가 수신 될 때마다 스크립트를 실행하고 어떤 사용자 (maildir 메시지 ID도 매우 유용 할 것입니다)를 원합니다. 그럼 난 파이썬 코드에서 메시지를 읽을 수 (파이썬은 maildir messageboxes 모듈을 가지고) 데이터베이스에 삽입. 나는 3이 작업을 수행하는 방법을 생각 할 수 있습니다

  • 으로 반복 사용자 maildirs 및 새 메시지가있는 경우 을 확인하지만, 많은 사용자 수에 대한 효과가있을 것이다.
  • dbmail을 사용하고 데이터베이스에 새 메시지가 있는지 확인하십시오 (이 작업은 더 빠를 수 있지만 모든 것을 처음부터 구성해야합니다). 또한 기존 사용자 데이터 테이블을 사용할 수 없습니다.
  • maildrop/virtual 주위에 래퍼를 작성하여 db와 maildir에도 메시지를 저장하지만,받은 메시지가 유효한지 확인한 후 실제 MDA로 저장하는 방법이 필요합니다.

감사합니다.

답변

5

내 자신의 질문에 대한 응답으로 파이프에 X 플래그가 설정된 postfix content_filter를 사용하여 주소와 메시지를 수동으로 수신했습니다. maildir에서 메일에 액세스 할 필요가 없으므로이 접근법은 저에게 효과적입니다.

8

/etc/aliases 파일에는 사용자가 메일을 수신 할 때마다 실행되는 프로그램을 지정할 수 있습니다. 이 프로그램은 stdin에서 메일을 가져옵니다. 따라서 설문 조사를하지 않아도 프로그램이 즉시 실행됩니다.

+0

이것은 좋은 접근 방법이지만 가상 계전 메커니즘을 사용하고 있습니다. – fest