상황 : IMAP 전용 액세스 권한이있는 메일 서버. 문제 : 메일을 필터링 할 수 있기를 원합니다 (일부 메일을 다양한 폴더에 넣고 읽은 것으로 표시).
대부분의 새 전자 메일 클라이언트에는이 기능이 있지만 다양한 전자 메일 클라이언트를 사용하여이 서버에 연결해야하므로 독립형 필터링 프로그램이 필요합니다.
일반적으로 procmail과 비슷하지만 IMAP에서 작동합니다.
소프트웨어는 Linux 또는 Solaris에서 실행됩니다.
상황 : IMAP 전용 액세스 권한이있는 메일 서버. 문제 : 메일을 필터링 할 수 있기를 원합니다 (일부 메일을 다양한 폴더에 넣고 읽은 것으로 표시).
대부분의 새 전자 메일 클라이언트에는이 기능이 있지만 다양한 전자 메일 클라이언트를 사용하여이 서버에 연결해야하므로 독립형 필터링 프로그램이 필요합니다.
일반적으로 procmail과 비슷하지만 IMAP에서 작동합니다.
소프트웨어는 Linux 또는 Solaris에서 실행됩니다.
답변:
빠른 구글은 당신이 원하는 것처럼 보이는 IMAPFilter 를 던집니다 :
- 다음과 같은 IMAP 프로토콜에서 사용 가능한 많은 기준을 사용하여 메시지 검색 :
- 메시지의 상태 (최근, 읽지 않은 등)
- 메시지의 크기
- 메시지의 나이.
- 헤더 또는 메시지 본문에서 문자열 또는 정규식 패턴 일치
- 메시지를 검색하는 동안 논리 연산자를 사용할 수 있습니다.
- 메시지 처리에 사용할 수있는 다양한 기능 :
- 메시지 삭제
- 동일하거나 다른 서버의 사서함으로 메시지 이동
- 동일하거나 다른 서버의 사서함으로 메시지 복사
- 메시지 표시 또는 메시지 플래그 변경
- 사용 가능한 및 / 또는 가입 된 사서함 및 IMAP CHILDREN 확장에 대한 지원 목록.
- 사서함 만들기, 삭제, 이름 바꾸기, 가입 또는 가입 취소
- 국제화 (I18N) 지원
- IMAP NAMESPACE 확장을 사용한 서버 네임 스페이스 지원
- SSL (Secure Socket Layer) 또는 TLS (Transport Layer Security) 암호화 된 imap (포트 993) 연결.
- IMAP STARTTLS 확장을 사용하여 암호화 된 연결.
- CRAM (Challenge-Response Authentication Mechanism), 특히 CRAM-MD5를 사용한 사용자 인증
- PCRE (Perl Compatible Regular Expressions) 지원
이미 언급했듯이 procmail이 올바른 방법이므로 이메일 제공 업체에 문의하여 도움을 줄 수 있습니다.
그렇지 않으면 가장 쉬운 방법은 정렬 등을 수행하는 전자 메일 클라이언트를 항상 여는 것입니다. 동일한 IMAP 사서함에 액세스하는 여러 클라이언트에서 잠금 문제가 있었지만 몇 년 동안 보지 못했습니다.
또 다른 방법은 루비 젬 imap-filter를 사용하는 것입니다.
https://github.com/flajann2/imap-filter/blob/master/README.org
DSL의 예는
https://github.com/flajann2/imap-filter/blob/master/examples/default.imap
DSL은 루비 기반이지만 루비를 많이 사용하지 않아도됩니다. 저자는 가까운 시일 내에 더 많은 예제를 제공 할 것을 약속하며, 기능 요청 및 풀 요청에 개방적입니다.
Linux 및 Unix 운영 체제에서 fetchmail
IMAP 이메일 계정을 폴링하고 새 메시지를 (으)로 전달하는 데 사용할 수 procmail
있습니다. 수신 된 메시지에서 정규식 패턴 일치를 기반으로 스크립트를 실행하도록 procmail을 구성 할 수 있습니다.
이를 위해서는 fetchmail 및 procmail 패키지를 설치해야합니다. 다음 구성을 통해 모든 새 전자 메일 메시지가 전자 메일 계정으로 수신 될 때마다 스크립트를 실행할 수있었습니다. 우분투 12.04 LTS를 사용했습니다.
에서 ~/.fetchmailrc
:
# .fetchmailrc checks my e-mail account for new messages, sends them to procmail
set logfile /home/myusername/fetchmail.log
poll mail.domain.com protocol IMAP
user "emailaccountname"
password 'emailpassword'
folder 'INBOX'
keep
ssl
mda "/usr/bin/procmail -f %F"
keep
메시지가 검색된 후 IMAP 서버에서 메시지가 제거되지 않도록 하려면 위 의 지시문을 참고하십시오 .
에서 ~/.procmailrc
:
# .procmailrc received e-mails from fetchmail and runs a script
PATH=/usr/bin:/usr/local/bin
LOGFILE=/home/username/procmail.log
SHELL=/bin/sh
# This rule triggers for every e-mail message:
:0
| `/home/username/myscript.sh`
fetchmail과 procmail에 대한 많은 온라인 자습서와이 두 가지를 통합하는 방법에 대한 자습서도 있습니다 (위에서 설명한 방법).
이제 새 메시지마다 스크립트 를 한 번 실행 fetchmail
하거나 실행합니다. cron에서 fetchmail을 실행하거나 지시문을 사용하여 데몬으로 실행되도록 fetchmail을 구성 할 수 있습니다 (여기서 600은 폴링 간격 (초)입니다).fetchmail -v
/home/username/myscript.sh
set daemon 600
.fetchmailrc