Postfix+Cyrus Imap 사용하시는분 계신가요?
글쓴이: 비행소년 / 작성시간: 일, 2005/01/30 - 9:57오후
SuSE에서 Postfix와 Cyrus-Imap을 이용하여 이 메일 서버를 구성하고 있는데요.
제목에 인코딩 되지 않은 8bit 메시지가 있을 경우에 제목이 'X'로채워 지더군요.
그래서 이미 알려진 방법인 message.c에서 *p='X'; 부분을 주석 처리 하고 다시 컴파일을 해도 마찬가지 현상이 있더군요.
아무래도 Imap 모듈에서 제목을 X로 채우는 것이라기 보다는 다른 부분에서 그런 것 같아 시스 로그를 이용해서 메시지를 찍어 봤더니 저 부분을 호출을 하지 않더군요.
그럼 다른 모듈 부분에서 amavis나 sieve에서 제목의 문자를 바꾸는거 같다고 의심만 현재 하고 있습니다.
혹시 이것을 해결 하신 분이나, 메시지를 추적하는 방법을 아시는 분 계신가요?
Forums:
메일을 보내고 받는건.. mta 이므로.. 우선 cyrus-imap 을
메일을 보내고 받는건.. mta 이므로.. 우선 cyrus-imap 을 제껴두고 생각하면 :)
저도 postfix + dovecot 으로 설정을 해놓았고.. mail 커맨드를 이용해서 UTF8 로 된 메일을 보내보았습니다.. (UTF8 에서도 한글은 모두 최상위비트가 1입니다 ) 메일파일을 직접 열어서 확인해보니 한글이 전혀 깨지지 않고 왔더군요 :)
maildir 을 사용하신다면 ~/.maildir/cur (혹은 new일수도 있겠지요) 으로 들어가서.. 직접 메일 파일을 열어보세요.. mbox라면 /var/spool/mail/아이디 형태에 들어가있겠군요 ;)
cat + iconv 로 확인해보시는게 편할겁니다.. vi는.. 인코딩관련 세팅을 해야할 수도 있어서 =3=33
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
네. 저도 그런 의심이 들어서 mail 커맨드를 이용해서 메일을 보내 보
네. 저도 그런 의심이 들어서 mail 커맨드를 이용해서 메일을 보내 보았습니다.
그때에도 제목이나 내용은 전혀 깨지지가 않더군요.
제가 현재 쓰고 있는 방식이 smtp -> lmptd로 메일을 전달하는 형태로 하고 있습니다.
우선 몇가지가 의심이 들어서 /var/spool/mail/user/아이디 안에 있는 메일의 내용을 보았을때 제목이 모두 'X'로 표시가 되어 있더구요.
그래서 imapd에서 메일의 제목을 X로 채운다는 혐의는 씌우지 않았습니다.
어쨌든 imap/message.c 파일을 수정을 하고 lmtpd를 새로 컴파일하고 돌렸더니 정상적으로 예상대로 동작을 하더군요.
8bit 문자열을 갖는 제목을 가진 메시지는 From: =?utf-8?이나 =?euc-kr?의 인코딩 정보를 가지고 있더군요. 이런 상황에서는 메시지가 깨지지 않는 다는 것을 확인 했습니다.
다만. 문자열의 첫머리에 이런 인코딩 정보가 없을때가 문제의 여지가 있더군요. 아웃룩에서는 자동으로 eucKR로 인코디을 시켜 주지만 썬더 버드는 ?로 칸을 채워 버리는 버그 아닌 버그가 있습니다.
하여간에 온갖 삽질 끝에 해결은 했지만, 어떻게 해결 한건지 다시 좀 복기를 해봐야 겠습니다. :D
중간에 인코딩 정보가 없을 경우에 인코딩을 넣는 방법도 함께 연구를 해야 할듯 합니다.
하여간에 정태영님의 답변 감사 합니다. 태영님의 글꼴에 관련된 글을 열심히 탐독하고 있습니다. 좋은 글 감사 합니다. :D
높이 날다 떨어지면.
아푸다 ㅡ,.ㅡ
썬더 버드의 버그가 맞군요.. :( 메시지 원본에서는 한글이 정
썬더 버드의 버그가 맞군요.. :(
메시지 원본에서는 한글이 정확히 나오는데
제목에서는 ?로 나옵니다.
인코딩 정보가 없는 8bit 헤더 메시지를 썬더 버드는 제대로 처리는 못하나요?
높이 날다 떨어지면.
아푸다 ㅡ,.ㅡ
=?euc-kr?q or b?어쩌구저쩌구?= 이런식으로 된거는.. 메
=?euc-kr?q or b?어쩌구저쩌구?=
이런식으로 된거는.. 메일에서 사용되는 인코딩 방식입니다 :)
=? 로 시작하고 ?= 로 끝나는 것은.. 인코딩되어 있다는 것을 의미하고..
첫뻔째 값은.. 언어..
두번째 값은 quoted print (us asc 는 냅두고.. 8비트 글자들만 =숫자숫자(맞던가;; )) 나 base64 (7bit씩 짤라서.. 거기에 해당되는값으로 바꿉니다..) 로 인코딩되었다는 걸 알려주고..
3번째 값은.. 인코딩된 문자열이죠..
인코딩되지 않았다면.. 어떤 언어로 적혀잇는지 알 수가 없습니다.. 다만 한글 윈도우의 경우 인코딩이 없다면.. 자동으로 euc-kr 로 간주하기 때문이 아닐까요 ;) 썬더버드에서도.. 기본 charset 을 euc-kr 로 적어준다면 대부분 문제 없이 나옵니다...
p.s) 폰트 관련해서 잘 정리해서 쓴 글도 없는데 재밌게 읽어주셨다니 감사합니다 ;)
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
댓글 달기