썬더버드에서 메일가져오기 실패...

Mozilla 제품들에 대한 Bug 리포트를 보고하고 확인하는 페이지입니다.
Post Reply
sushizang
서포터즈
서포터즈
Posts: 193
Joined: 2005 03 18 16:52 41
Contact:

썬더버드에서 메일가져오기 실패...

Post by sushizang »

viewtopic.php?t=3986

요전에 올린 글입니다.

그런데 이게 매일같이 반복되니 썬더버드를 계속 써야할지 고민이 생깁니다.

혹시 이쪽으로 이슈 리포트하시는 분들께 알아봐 주십사 부탁드립니다.

아웃룩 익스도 가져오지는 못하지만 나머지는 일단 다 가져오는데

썬더버드는 에러 발생지점에서 그냥 멈춰서네요.

그나마 가져온 메일도 완전히 처리되지 않아 서버에 그대로 남아있고요.

그래서 같은 메일을 두번씩 확인하게 하는군요.

원만히 해결되었으면 좋겠습니다.

혹 다른 방안을 알고 있으신 분들의 조언도 부탁드립니다.

좋은 하루 되시고요...
소프트원트

Re: 썬더버드에서 메일가져오기 실패...

Post by 소프트원트 »

sushizang wrote:viewtopic.php?t=3986

요전에 올린 글입니다.

그런데 이게 매일같이 반복되니 썬더버드를 계속 써야할지 고민이 생깁니다.

혹시 이쪽으로 이슈 리포트하시는 분들께 알아봐 주십사 부탁드립니다.

아웃룩 익스도 가져오지는 못하지만 나머지는 일단 다 가져오는데

썬더버드는 에러 발생지점에서 그냥 멈춰서네요.

그나마 가져온 메일도 완전히 처리되지 않아 서버에 그대로 남아있고요.

그래서 같은 메일을 두번씩 확인하게 하는군요.

원만히 해결되었으면 좋겠습니다.

혹 다른 방안을 알고 있으신 분들의 조언도 부탁드립니다.

좋은 하루 되시고요...
불편을 감수하면서, 어떤 프로그램을 사용할 이유는 없습니다. 문제는 다른 프로그램과 비교해서 자신에게 편리하고 유용한 기능성을 제공하는 것을 사용하는 것이니까요.

내용으로는 지적처럼 스팸메일 때문이라고 나와있다는 것에 주목하는 것이 올바르다고 생각하며, 메일서버 단위에서 적절히 필터링하지 못하는 게 문제가 아닐까 합니다.

클라이언트 프로그램도 어느 정도 문제가 있겠지만, 삭제 큐나 수신 큐에 대해 메일서버에서 적절히 반응하지 않기 때문에, 서버 관리자에게 보안패치나 설정을 점검해볼 것을 요청했으면 합니다.

그리고 메일서버와 교신이 정상적인 클라이언트 프로그램에서 복사본 저장을 하지않는다면, 해당 문제의 스팸메일을 제거하겠죠.

이와 같은 메일 문제가 동일 도메인-회사내라면-에서 그렇고 다른 사용자들도 그런가하는 것입니다. 다른 사용자는 문제가 없다면, 메일 계정을 새로 만들어, 스팸메일 공격대상 메일을 휴면 계정으로 만드는 게 나아보입니다.
빛알갱이
해커
해커
Posts: 1146
Joined: 2004 01 15 20:06 36

Post by 빛알갱이 »

문제가 되는 메시지를 '원문 그대로' 집어 올 방법이 있는지요? 메일 써버로 어떤 것이 쓰이는지 아시나요? MS Exchanger, UW-IMAP(+POP), Cyrus, Dovecot 등등......
또, 메일 써버에 접근하는 프로토콜은 무엇인지요? POP3 혹은 IMAP4?

RETR 명령이 POP3에 있는 IMAP4에 있는지 확인해 보면 알 수 있겠지만....

어쨌든, 문제는 상황을 재현해야 해결을 할 수 있을텐데....

참, 혹시 그런 경우를 다시 만나시면 다음과 같이 로그 파일을 만들어서 올려 주시면 좋겠습니다.

http://www.mozilla.org/quality/mailnews ... shoot.html

에 보면 로그 파일 만드는 법이 나와 있습니다.

IMAP4를 쓰신다면 <protocol>이라고 쓰인 자리에 IMAP을 넣으시고, POP3를 쓰신다면 <protocol> 자리에 POP3를 넣으십시오.

명령창(이른바 도스창)을 여십시오. 거기에서 다음을 차례로 치십시오.


copy con runtb.bat
set NSPR_LOG_MODULES=<protocol>:5
set NSPR_LOG_FILE=%TEMP%\tblog.txt
start 여기서 할 일은 설명을 보세요
여기서는 CTRL-Z를 누르세요


위에서 '여기서 할 일은 설명을 보세요' 부분에서는 천둥새 아이콘 (바탕 화면 혹은 Start 메뉴 등에 있는)을 끌어다가 도스창에 넣으세요. 그러면 자동으로 천둥새 경로가 그 자리에 삽입된다고 하네요. (저도 안 해 보았습니다 :-))

이렇게 만든 batch 파일(runtb.bat)을 icon 등으로 만드셔서 실행하신 후에 TEMP(환경 변수 TEMP가 가리키는 경로) 파일 아래에 생긴 tblog.txt를 올려 주세요.
빛알갱이
해커
해커
Posts: 1146
Joined: 2004 01 15 20:06 36

Post by 빛알갱이 »

빛알갱이 wrote: 명령창(이른바 도스창)을 여십시오. 거기에서 다음을 차례로 치십시오.


copy con runtb.bat
set NSPR_LOG_MODULES=<protocol>:5
set NSPR_LOG_FILE=%TEMP%\tblog.txt
start 여기서 할 일은 설명을 보세요
여기서는 CTRL-Z를 누르세요
위의 설명은 편집기 등을 못 쓰는 진짜 컴퓨터 초보자를 위한 것이고요. 그냥 아무 텍스트 편집기(노트패드 등)를 여시고, 다음 내용의 파일을 만드셔서 runtb.bat란 이름으로 데스크탑 등에 저장하시고 그 파일을 클릭해서 실행시키시면 됩니다. (start 다음에는 실제 TB가 설치된 곳의 경로를 적어 주시면 되고요. TB의 단축 아이콘의 '속성'을 보면 알 수 있겠지요)

set NSPR_LOG_MODULES=POP3:5
set NSPR_LOG_FILE=%TEMP%\tblog.txt
start "C:\Program Files\Mozilla Thunderbird\thunderbird.exe"

로그 파일은 "Document and Settings\<사용자 이름>\Local Settings\Temp" 밑에 tblog.txt로 저장됩니다. 이 폴더는 폴더 보기 옵션에서 '숨은 파일 보기' 옵션을 켜 주어야 보입니다.
jeongkyu
서포터즈
서포터즈
Posts: 85
Joined: 2004 11 25 08:07 31
Contact:

Post by jeongkyu »

sushizang 님이 올린 글을 보니 RETR 명령이 실패 했을 때 다음 메시지로 넘어가지 않는 것은 선더버드의 문제점으로 보입니다. 현실적으로 특정 메시지에 대한 RETR 명령이 실패하는 경우는 거의 없겠지만, 재현이 가능하다면 버그는 버그겠죠? 특정 메시지에 대해서 RETR 에러를 발생시킬 수 있는 쉬운 방법이 있을까요? :roll: 아니면 간단한 POP 서버 소스를 변경해서 메시지 열개 중에 다섯번째는 항상 에러를 리턴하게 해놓고 테스트 해볼 수는 있겠습니다.

그리고 가져온 메일이 서버에 남아 있다는 것은 선더버드가 메시지 삭제를 배치로 처리한다는 것을 말해주는 것 같네요 (+ 서버에 메일 남겨놓기 옵션을 선택하지 않으면 메시지 아이디로 중복 체크를 안한다?). 메시지 삭제를 배치로 처리하는 것의 특별한 장점이 없다면 가져오고 나서 바로 삭제해도 좋을 것 같은데...

심심할 때 서버쪽에서 임의로 에러를 리턴하는 방법을 한 번 찾아보죠. :-)
김정규
한국 오픈오피스 커뮤니티 운영자
http://openoffice.or.kr
jeongkyu
서포터즈
서포터즈
Posts: 85
Joined: 2004 11 25 08:07 31
Contact:

Post by jeongkyu »

Apache James ( http://james.apache.org/ ) 소스를 변경해서 제목에 특정한 문자열이 있으면 RETR 에러를 발생하도록 해봤습니다. 테스트 결과, 에러가 발생하면 남아있는 메일을 가져오지 않고 작업을 마칩니다. (받은 메일을 또 받지는 않는군요. :roll:) 소스 코드를 살펴보니 POP3 로 메일을 읽어오는 중간에 에러가 발생하면 전체 작업이 빠져 나오도록 구현되어 있습니다. 코드 분석한 결과를 살짝 적어보면...

전반적인 프로토콜의 명령과 응답 상태의 처리는 ProcessProtocolState() 함수가 담당합니다. 내용을 보면 while loop 를 돌면서 case 로 현재 상태에 따른 처리를 한다는 것을 알 수 있습니다.
http://lxr.mozilla.org/seamonkey/source ... l.cpp#3530

이 중에서 RETR 명령의 결과를 읽는 부분은 POP3_RETR_RESPONSE 상태, 즉 RetrResponse() 함수입니다.
http://lxr.mozilla.org/seamonkey/source ... l.cpp#3071

RetrResponse() 에서는 먼저 RETR 명령의 결과를 확인하고 에러가 발생했으면 Error() 함수를 호출합니다.

Code: Select all

3091         if(!m_pop3ConData->command_succeeded)
3092             return Error(POP3_RETR_FAILURE);
Error() 함수에서는 대화 상자에 에러를 표시하고 상태를 POP3_ERROR_DONE 으로 지정합니다. 그러면 앞서 말씀드린 ProcessProtocolState() 에서 다음 메시지를 처리하는 대신 전체 작업을 정리하고 빠져나오게 되는 것이죠.
http://lxr.mozilla.org/seamonkey/source ... l.cpp#1048

테스트 삼아 Error() 함수의 마지막에 아래 코드를 추가했더니 남은 메시지를 제대로 가져오지만, 아직 코드를 자세히 본 것이 아니라 좋은 방법인지는 모르겠습니다. :-)

Code: Select all

if( err_code == POP3_RETR_FAILURE)
{
    m_pop3ConData->last_accessed_msg++;
    m_pop3ConData->next_state = POP3_GET_MSG;
    return (1);
}
그리고, POP3_DELE_FAILURE 도 비슷한 문제가 있는데 함께 수정할 수 있으면 좋겠네요. 지금은 특정 메일이 삭제되지 않으면 나머지 메일을 읽을 수가 없겠죠?

다음은 버그질라에서 찾은 비슷한 버그입니다.

https://bugzilla.mozilla.org/show_bug.cgi?id=225360
https://bugzilla.mozilla.org/show_bug.cgi?id=227665
https://bugzilla.mozilla.org/show_bug.cgi?id=246335

나이 꽤 먹은 버그들인데 뚜렷한 해결책은 안올라와 있네요. 227665 번이 해결을 요청하기에 좋아 보입니다.
김정규
한국 오픈오피스 커뮤니티 운영자
http://openoffice.or.kr
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest