본문 바로가기

James Server v3

protocols-pop3 ㅁ SMTP , POP, IMAP 중에 pop 이 그나마 만만해보여서 먼저~ @PostConstruct public void init() throws Exception { servers = createServers(log, config); for (AbstractConfigurableAsyncServer server: servers) { server.init(); } } @PostConstruct public final void init() throws Exception { if (isEnabled()) { buildSSLContext(); preInit(); executionHandler = createExecutionHander(); bind(); mbeanServer = ManagementFacto.. 더보기
protocols-api - org.apache.james.protocols.api.Protocol ㅁ ObjectAid Class Diagram eclipse plug-in - 다 맘에 드는데 자동으로 Layout 을 잡으면 OTL... ㅁ pom.xml org.apache.james.protocols protocols-api ㅁ 기본적인 protocols-api 모듈의 디자인 ㅁ protocols-api + protocols-pop3 ㅁ apache-james-protocols-smtp, apache-james-protocols-pop 에서 apache-james-protocols-impl 을 상속받아 사용하는 구조. 기본적으로 SMTP , POP, IMAP 이 제공이 된다. (LMTP 는 SMTP 로 사용하니 제외) ㅁ james architecher 를 보면 IMAP 은 protocols-imp.. 더보기
1. build james project ㅁ james-server project 로 구성하여 시작하여 몇개의 EML 로 각 protocol test 는 잘 되겠지만 실제 EML 은 착하지 않기에 기본으로 아래 프로젝트를 모두 debug 해야함. ㅁ 실 서비스를 하면 상대 메일 서버가 X같이 보내줘도 파징해줘야 하는게 유지보수의 대부분이였던 듯 함. ㅁ james 2.x , james V3-M3 이 후 beta5 를 해보려니 구조가 많이 바뀌였고, mailbox zoo-seq-provider 는 고성능 분산 시퀀스를 제공 하기 위해 zookeeper 를 사용하는 모습을 보여준다. 추후 queue 도 kafka 로 바뀌지 않을까 기대해도 되려나. ㅁ 오픈 소스하면 좋을 듯 하지만 실상은 버그도 있고 성격 or 업무 때문에 수정하는 일이 빈번해짐... 더보기
[Maildir support for Windows] 파일명에 콜론 사용 * James Version : beta 5 * apache-james-mailbox-0.6-SNAPSHOT * Test OS : Windows 7 ㅁ 예전엔 repository 가 sql , maildir 두개 정도 였는데 현재는 5 개로 늘었네. maildir ㅁ JPA는 아직은 기본으로 테스트를 하니 오류는 없는데 maildir 을 사용하니 오류가 빡! try { FileUtils.moveFile(messageFile, newMessageFile); } catch (IOException e) { // TODO: Try copy and delete throw new MailboxException("Failure while save Message " + message + " in Mailbox " + .. 더보기
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] .. 더보기