imap command 잘 아시는 초 고수분 ㅡㅡ;

maindb의 이미지

지금 2일째 RFC 문서등을 보고 있는데...
제대로 설명이 없네요 ㅡㅡ;;

telnet localhost 143

뭔지 대충 아시는 분들은 아실 겁니다.

a00 login 아이디 패스워드

뭐 이런 command 입니다.

문제는... 여기서

a00 SELECT "INBOX"

와 같이 명령어를 내렸을때 나오는...

* OK [UIDVALIDITY 1080400620] UID validity status
* OK [UIDNEXT 1080479657] Predicted next UID

위 두 문장 입니다.

1080479657 가 next UID 라면 현재 UID 는 1080479656 이란
이야기 인지...

그리고... 여기서 메일을 부를때 헤더만 출력할때

a00 UID FETCH 1:3,7 (FLAGS UID RFC822.SIZE BODY.PEEK[HEADER.FIELDS (Date To Cc From Subject X-Priority Content-Type)])

뭐.. 위와 같이 부르는데...
UID FETCH 다음에 나오는 숫자가 좀 이해가 안갑니다.
start num:end num 아닌가요?

최근에 도착한 메일 하나만 부르고 싶은데 이렇게 저렇게 바꿔봐도
계숙 줄줄이 다 나오네요.

위 명령어들에 대한 고수분 계시면 조언좀 부탁드립니다.
아니면 참고할 만한 곳이라도 알고 계시면 좀 가르쳐 주세요 ^^

serialx의 이미지

IMAP 잘 알지도 못하지만.. 아는 한계까지..

그리고 확실하지는 않은 부분도.. 나름대로 정리해서 답변 드리겠습니다.

Quote:
* OK [UIDVALIDITY 1080400620] UID validity status
* OK [UIDNEXT 1080479657] Predicted next UID

위 두 문장 입니다.

1080479657 가 next UID 라면 현재 UID 는 1080479656 이란
이야기 인지...

UIDNEXT 1080479657 일때는 현재 UID 는 UIDNEXT 보다 작다는것만 알수 있을뿐 UIDNEXT 의 -1 이라고 꼭 정해지지는 않았습니다.

RFC 에 그렇게 나와있던걸로 기억납니다.

rfc3501 wrote:
Unique identifiers
are assigned in a strictly ascending fashion in the mailbox; as each
message is added to the mailbox it is assigned a higher UID than the
message(s) which were added previously. Unlike message sequence
numbers, unique identifiers are not necessarily contiguous.

rfc3501 wrote:
The next unique identifier value is the predicted value that will be
assigned to a new message in the mailbox. Unless the unique
identifier validity also changes (see below), the next unique
identifier value MUST have the following two characteristics. First,
the next unique identifier value MUST NOT change unless new messages
are added to the mailbox; and second, the next unique identifier
value MUST change whenever new messages are added to the mailbox,
even if those new messages are subsequently expunged.

Note: The next unique identifier value is intended to
provide a means for a client to determine whether any
messages have been delivered to the mailbox since the
previous time it checked this value. It is not intended to
provide any guarantee that any message will have this
unique identifier. A client can only assume, at the time
that it obtains the next unique identifier value, that
messages arriving after that time will have a UID greater
than or equal to that value.

즉 항상 다음에 오는 UID 는 크기만 하면 장땡이란 말이죠..

Quote:
그리고... 여기서 메일을 부를때 헤더만 출력할때

a00 UID FETCH 1:3,7 (FLAGS UID RFC822.SIZE BODY.PEEK[HEADER.FIELDS (Date To Cc From Subject X-Priority Content-Type)])

뭐.. 위와 같이 부르는데...
UID FETCH 다음에 나오는 숫자가 좀 이해가 안갑니다.
start num:end num 아닌가요?

이부분은 i,j:k,l... 뭐 이런 구조일때.. * 은 현제 UID.. 로 치환되구.. (UIDNEXT였나..)

1,4:* 이면.. 1,4,5,6,7....끝까지.. 겠구..

2,5:7,9 면.. 2,5,6,7,9 일라나.. 암튼 기억이 잘 안나는데, 이런 형식입니다.

RFC 에 보면..

rfc3501 wrote:
sequence-set = (seq-number / seq-range) *("," sequence-set)
; set of seq-number values, regardless of order.
; Servers MAY coalesce overlaps and/or execute the
; sequence in any order.
; Example: a message sequence number set of
; 2,4:7,9,12:* for a mailbox with 15 messages is
; equivalent to 2,4,5,6,7,9,12,13,14,15
; Example: a message sequence number set of *:4,5:7
; for a mailbox with 10 messages is equivalent to
; 10,9,8,7,6,5,4,5,6,7 and MAY be reordered and
; overlap coalesced to be 4,5,6,7,8,9,10.

뭐 이런거군요..

코딩하기가 좀 까다로운데..

저는 그냥 TODO 써버리고 딴데 시간 투자했습니다만..

..

여담으로 IMAP 제대로 구현할려면 힘들겠더군요...

ps. 혹시 옛날버전의 IMAP 보신다면.. rfc3501 IMAP4 rev1 을 보시는게 좋을듯 합니다.

처음에는 엄청 설명이 없는듯 하다가.. 나중에 가면 너무 많아서 미치거든요....

(IMAP 구현 반도 제대로 못하고 대충 outlook 에서만 작동 되게 하고 관뒀습니다....)

maindb의 이미지

조언 감사드립니다 ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.