Ubuntu 14.04 서버에서 다음 시나리오를 만들고 싶습니다.
- 메일만 수신하는 메일 서버(또는 "메일 전송 에이전트"?)를 설정합니다. 이 서버에서 메일 보내기를 설정할 필요가 없습니다.
- 수신 메일에 대해 기본 필터링을 수행합니다(메일에 올바른 첨부 파일이 있는지 확인합니다(정확하게는 특정 확장자를 가진 파일).)
- 특정 폴더에만 첨부 파일을 저장하세요.
- 처리된 메시지 삭제
나는 메일 서버에 대해 전혀 알지 못하므로 시도해 보았지만 Postfix
올바르게 이해했다면 메일 필터링 및 처리를 위한 더 나은 솔루션이 있습니까? 알고 있으므로 Python
해당 PHP
언어 중 하나를 사용하여 필터링/처리를 처리할 수 있지만 아직 정확히 어디서부터 시작해야 할지 모르겠습니다.
가능하다면 일부 Python 스크립트에서 cron 작업을 실행하고 첨부 파일이 저장되자마자 처리된 메시지를 삭제하는 것보다 메시지를 받자마자 처리하는 것을 선호합니다.
이 특별한 순간에는 보안이나 스팸/바이러스 방지를 설정할 필요가 없습니다.
이 워크플로를 설정하는 방법에 대해 약간 혼란스럽기 때문에 최소한 각 단계의 시작점을 물어보고 싶었습니다. 추가 자료에 대한 링크는 매우 환영받을 것입니다! 완전한 해결책을 요구하는 것은 아니지만, 이 상황에서 도움이 될 수 있는 패키지에 대한 몇 가지 팁을 주시면 정말 감사하겠습니다.
답변1
서버에서 실행하고 싶다고 표시합니다. 컴퓨터에 특정 메일 도메인으로 전송된 메일을 처리할 수 있는 영구 IP 주소가 없는 경우 메일을 처리하는 공급자로부터 이메일을 받도록 설정해야 합니다.
처리 후 메시지를 삭제하겠다고 표시했으므로 공급자가 모든 메시지를 하나의 사용자 계정으로 수집하는 것에 신경쓰지 않아도 되므로 이를 설정해야 합니다.
fetchmail
그런 다음 로컬에서 실행 중인 프로그램과 대화 postfix
하고 로컬 연결만 수신하는 비슷한 프로그램을 사용하여 메일을 받을 수 있습니다. (서버에 고정 IP 주소가 있고 외부 stmp 연결을 처리할 수 있는 경우 이 단계를 건너뛰고 나머지만 수행할 수 있습니다.)
postfix
procmail
사서함 명령 으로 사용되도록 구성해야 합니다 ( main.cf
:
mailbox_command = procmail -a "$EXTENSION"
fetchmail
처리를 수행하는 특정 사용자에 대해서는 정기적(1분마다 공급자에게 확인) 크론 작업으로 실행되어야 합니다. 이 사용자는 ~/.procmailrc
필터링을 수행하고 다음과 같은 항목이 포함된 이메일을 스크립트에 전달하는 파일을 가지고 있어야 합니다 .
:0
$ ^Subject:.*some_text_that_has_to_be_in_the_subject_to_be_valid_for_processing
| /usr/local/bin/your_program
이제 your_program
파일 형식(헤더 다음에 본문)을 처리할 수 있어야 합니다. 나는 Python과 그 표준을 사용합니다.email
복잡한 MIME 첨부 파일을 처리하기 위한 모듈입니다.
팁: 개발 중에 your_program
들어오는 데이터(위 sys.stdin
)를 일부 파일에 완전히 저장하면 xyz
독립적으로 보고 개발할 수 있으므로(실행만 하면 됨 your_command < xyz
) 프로세스의 이 단계를 테스트하기 위해 첨부 파일이 포함된 이메일을 보낼 필요가 없습니다.