본문 바로가기

James Server v3/IMAP

RENAME command > Subscription 문제 - outlook 2013 에서 메일 박스 RENAME 시 subscription 파일이 업데이트 되지 않아 기존 mailbox path 가 존재 하게 된다. - 이미 RENAME 되어 서버에 존재하지 않은 mailbox 에 다시 RENAME 을 할 경우 문제가 발생함. outlook이 구독 취소를 해야 command 보내는데 사용자가 그것까지 신경쓰는건 아닌 것 같고 그 과정에서 문제가 발생할 소지가 주어진다. public void renameMailbox(final MailboxPath from, final MailboxPath to, final MailboxSession session) throws MailboxException { ... final MailboxMapper mapper = m.. 더보기
James distributed event system ㅁ James 이중화 시 발견되는 버그 - 메일 수신 시 EXIST, Expunge Response 가 되지 않음. ㅁ 문제 - 이중화 환경에서 메일 수신 / 삭제 등의 이벤트가 발생하는 경우 이벤트가 발생한 서버외의 분산 서버들은 이벤트를 클라이언트에게 전달하지 못한다. ㅁ RFC 2177-IMAP4 IDLE command 1. James #1 에 메일 수신 시 James #2 는 알 수 없음. SMTP -> LocalDelivery -> IMAP APPEND 2. James Event system. 3. To-be ㅁ Hazelcast manager log. 1) James #1 Started , James #2 Start up. 2) James #2 started. 3) James #2 stop. .. 더보기
IMAP console command IMAP COMMOND 정리 1. 접속 telnet XXX.XXX.XXX.XXX 143 2. 로그인 확인할 사용자 확인 a LOGIN [사용자] 0000 3. 박스 선택하기 a SELECT INBOX 4. 리스트 보기 a FETCH 0:[최대UID|*] (UID RFC822.SIZE FLAGS BODY[HEADER.FIELDS (FROM TO SUBJECT DATE MESSAGE-ID)]) 5. 메시지 가져오기 a UID FETCH [해당 UID] BODY.PEEK[] 유용한 COMMAND 1. 전체 메시지의 X-MMS-MESSAGE-ID 출력 a fetch 0:* (BODY[HEADER.FIELDS (X-MMS-MESSAGE-ID)]) 2. 특정 X-MMS-MESSAGE-ID를 가진 UID 검색 a s.. 더보기
명령어 무한루프 패턴 Client -> C IMAP Server-> E 1. C -> E : UID 가 100 번인 메시지의 보낸 편지함으로 이동시켜라. 2. E -> C : 완료 3. C -> E : 받은 편지함의 UID 가 100번인 메시지의 전체 메시지를 보내줘 4. E -> C : 없는데? 이미 보낸 편지함으로 이동했자나... 0 건으로 리턴. -- 반복 구간 -- 3. C -> E : 받은 편지함의 UID 가 100번인 메시지의 전체 메시지를 보내줘 4. E -> C : 없는데? 이미 보낸 편지함으로 이동했자나... 0 건으로 리턴. 3. C -> E : 받은 편지함의 UID 가 100번인 메시지의 전체 메시지를 보내줘 4. E -> C : 없는데? 이미 보낸 편지함으로 이동했자나... 0 건으로 리턴. ... 무한.. 더보기
SEARCH <sequence-set> is not handled correctly IMAP-292 SEARCH is not handled correctly 더보기
[IMAP] 선택된 상태에서 사용 가능한 명령어 1.7 ○ 선택된 상태에서 사용 가능한 명령어 l 선택된 상태에서 사용 가능한 명령어 명령어 인자 설명 응답 STORE 메시지 집합, 메시지 데이터 항목 이름, 메시지 데이터 항목을 위한 값 현재의 메시지 데이터 항목을 주어진 값으로 변경한다. 태그가 없는 응답 : FETCH EXPUNGE 없음 우편함에 있는 메시지를 삭제하는 데 사용된다. 특히 이 명령어는 \Deleted 플래그로 설정된 선택된 우편함에 있는 모든 메시지를 영구히 삭제한다. 태그가 없는 응답 : EXPUNGE SEARCH 문자 집합 정의(선택), 검색 기준 검색 기준에 일치하는 메시지를 위해 현재 선택된 우편함을 검색한다. 태그가 필요한 응답 : SEARCH FETCH 메시지 집합과 메시지 데이터 항목 이름 메시지와 관련된 요청된 데이.. 더보기
[IMAP] 인증된 상태에서 사용 가능한 명령어 1.6 ○ 인증된 상태에서 사용 가능한 명령어 l 사용 가능 명령어 명령어 인자 설명 응답 SELECT 우편함 이름 우편함을 선택하고, 우편함에 있는 메시지에 액세스한다. 태그가 없는 필요한 응답 : FLAGS, EXISTS, RECENT. 선택적인 OK 태그가 있는 응답 : UNSEEN, PERMANENTFLAGS EXAMINE 우편함 이름 SELECT 명령어처럼 우편함을 선택하지만, 읽기 전용이다. 태그가 없는 필요한 응답 : FLAGS, EXISTS, RECENT. 선택적인 OK 태그가 있는 응답 : UNSEEN, PERMANENTFLAGS CREATE 우편함 이름 지정한 이름으로 새로운 우편함을 작성한다. 없음 DELETE 우편함 이름 지정한 우편함을 삭제한다. 없음 RENAME 기존 우편함 이름.. 더보기
[IMAP] 인증되지 않은 상태에서 사용 가능한 명령어 1.5 ○ 인증되지 않은 상태에서 사용 가능한 명령어 명령어 인자 설명 응답 AUTHENTICATE 인증 메커니즘 이름 클라이언트는 이 명령어를 사용해서 지정된 메커니즘을 사용하는 인증을 요청한다. 만일 서버가 메커니즘을 지원하면, 인증 프로토콜 교환이 뒤따른다. 계속적인 데이터가 요청된다. LOGIN 사용자명과 비밀번호 이 명령어는 사용자를 서버에게 인증하는 가장 단순한 인증 수단을 사용한다. 없음 a03 LOGIN id password a03 OK [CAPABILITY IMAP4REV1 LITERAL+ IDLE NAMESPACE MAILBOX-REFERRALS BINARY UNSELECT SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND] .. 더보기
[IMAP] 모든 상태에서 사용 가능한 명령어 1.4 ○ 모든 상태에서 사용 가능한 명령어 명령어 인자 설명 응답 CAPABILITY 없음 서버로부터 프로토콜과 인증 메커니즘에 대한 목록을 요청한다. 요청된 태그가 없는 응답 : CAPABILITY NOOP 없음 행위가 없음. 서버 시간 초과를 리셋하기 위해 사용할 수 있다. 없음 LOGOUT 없음 서버에게 클라이언트는 네트워크 접속을 종료하기를 원하고 있다고 알려준다. 요청된 태그가 없는 응답 : BYE a00 CAPABILITY * CAPABILITY IMAP4REV1 LITERAL+ IDLE NAMESPACE MAILBOX-REFERRALS BINARY UNSELECT SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND LOGIN-REF.. 더보기
IMAP4rev1 서버 접속 1.3 ○ IMAP4rev1 서버 접속 일반 접속 : telnet xxx.xxx.xxx.xxx 143 SSL 보안 접속 : telnet xxx.xxx.xxx.xxx 993 48 asadal[/dblab/gimgs0/upload/labdoc ]telnet imap.dreamwiz.com 143 Trying 211.39.128.210... Connected to pop.dreamwiz.com. Escape character is '^]'. * OK [CAPABILITY IMAP4REV1 LITERAL+ LOGIN-REFERRALS STARTTLS] [211.39.128.210] IMAP4rev1 2004.357 at Wed, 4 Jun 2008 23:28:59 +0900 (KST) 더보기