본문 바로가기

imap

[James clustering] MailboxPathLocker 문제. § James 0.6 이하 제공되는 mailbox path locker 는 single JVM 에서 사용되는 locker. - org.apache.james.mailbox.store.JVMMailboxPathLocker extends AbstractMailboxPathLocker 여러대의 메일 엔진이 구성되는 경우 메일박스 점유에 따른 여러가지 문제가 발생한다. 1. 제일 큰 이슈는 mailbox 마다 존재하는 james-uidlist 의 File locking 이 되지 않아 uid 를 write 하다 깨지는 현상이 발생한다. - IMAP SELECT 가 되지 않아 오류가 발생하고 본문을 주지 않는다. 2. 메일의 Flag 변경과 삭제, 박스 이동 등이 동시에 발생하는 경우 - JPA 를 사용하는데 낙관.. 더보기
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 건으로 리턴. ... 무한.. 더보기
[IMAP] 인증된 상태에서 사용 가능한 명령어 1.6 ○ 인증된 상태에서 사용 가능한 명령어 l 사용 가능 명령어 명령어 인자 설명 응답 SELECT 우편함 이름 우편함을 선택하고, 우편함에 있는 메시지에 액세스한다. 태그가 없는 필요한 응답 : FLAGS, EXISTS, RECENT. 선택적인 OK 태그가 있는 응답 : UNSEEN, PERMANENTFLAGS EXAMINE 우편함 이름 SELECT 명령어처럼 우편함을 선택하지만, 읽기 전용이다. 태그가 없는 필요한 응답 : FLAGS, EXISTS, RECENT. 선택적인 OK 태그가 있는 응답 : UNSEEN, PERMANENTFLAGS CREATE 우편함 이름 지정한 이름으로 새로운 우편함을 작성한다. 없음 DELETE 우편함 이름 지정한 우편함을 삭제한다. 없음 RENAME 기존 우편함 이름.. 더보기
[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.2 ○ IMAP4rev1 서버 응답표 서버 상태 응답 태그가 있는 경우 의미 태그가 없는 경우 의미 OK 명령어의 성공적인 완료를 의미한다. 정보를 담은 메시지를 제공한다. NO 명령어가 성공적으로 완료되지 않았음을 의미한다. 경고 메시지를 제공한다. BAD 명령어에서의 프로토콜 에러를 의미한다. 태그는 에러를 발생시킨 명령어를 의미한다. 결정될 수 없는 명령어에 대한 프로토콜 에러나 혹은 서버 에러를 의미한다. PREAUTH N/A 접속이 외부 수단에 의해 인증되었다는 것을 보여준다. BYE N/A 서버가 접속을 막 종료하려 하고 있음을 알려준다. 더보기
IMAP 특징 1.1 ○ IMAP 특징 1. IMAP 메시지는 서버에 보관되고 바로 처리된다. 클라이언트는 로컬 복사본을 보관하지 않고 명령어만 서버로 전송해 서버의 메일들을 조작한다. 2. IMAP 세션은 4가지 상태로 구분된다. 1. l 인증되지 않은 상태(Nonauthenticated State) : 처음 서버에 접속 시 l 인증된 상태(Authenticated State) : 서버에 사용자 로그인 시 l 선택된 상태(Selected State) : 우편함 선택 시 l 로그아웃 상태(Logout State) : 클라이언트가 로그 아웃하거나 서버가 서비스를 거절하는 경우, 혹은 접속이 원활하지 않을 시 3. 명령어의 응답을 용이하게 처리하기 위해 클라이언트는 각 명령어에 임의적인 알파벳과 숫자 스트링을 "태그(ta.. 더보기