Spam filter #1

불량 단어 목록을 만들고 procmail 을 통해 무식하게 matching 시키는 방법을 사용하고 있다보니, 첨부파일이 있는 경우 스팸이 아닌데도 불구하고 스팸으로 판단되는 경우가 너무 잦은 것 같습니다.
sex, viagra, … 등의 불량단어 목록을 대소문자 구별없이 매칭을 시켜서 거르고 있는데, 첨부파일이 BASE64 로 인코딩된 경우에 저런 단어들이 포함될 확률이 상당히 높나 봅니다. 보내는 사람 관련해서 white list 를 만들어서 어떻게든 피해나가고 있긴 하지만 이건 답이 아닌 거 같네요.
시험이 끝나고 나면 꼭!! 시간을 내서 스팸 필터를 조금 더 개선시켜야 겠습니다.

  1. 본문을 fetch

    multipart/alternative, multipart/mixed 인 경우 … text/html, text/plain 인 것들만 fetch

  2. %2digit 형식으로 된 것들을 디코드

    [php:urldecode] 를 이용

  3. utf-8 로 변환

    php 의 [php:iconv] function 들은 conversion 도중에 에러가 발생했는지 알기 힘드므로 다른 프로그램을 이용…

  4. &#digit; 형식으로 된 것들을 디코드

    [php:html_entity_decode]

  5. 불량단어 목록과 매칭

  6. 매칭 결과 리턴

대강 위와 같은 기능을 하는 filter 를 작성하고 procmail 과 연동해서 필터링을 해볼까 싶습니다. 다만 귀차니즘 때문에 언제나 구현할 지 모르겠군요. (백업 스크립트는 도대체 언제 짤건데!!)

msn custom imoticon 백업…

이제 슬슬 개강이 다가오고 있기 때문에 그 전에 자료들을 다 백업하고 포멧을 해야겠는데… MSN 메뉴에선 custom imoticon 을 백업할 방법을 찾을 수가 없더군요. 근 일년간 포멧을 안하고 쓰면서 모은 아기자기한 이모티콘들을 날릴 수가 없다는 생각이 들어서 application data 폴더를 뒤지기 시작했습니다.
…\Application Data\Microsoft\MSN Messenger\2113837779\CustomEmoticons 정도의 폴더 안에 내가 사용하는 custom imoticon 들일거라고 추정되는 파일들이 있었습니다. 몇 개의 파일들을 notepad 등에 던져보니 파일이름과 확장자만이 변경되어 있는 상태로 추정되더군요.
냉큼 모든 파일들을 linux 에 올려놓고 file 커맨드를 통해 확인해보니 역시 제 생각대로더군요.

위와 같은 간단한 스크립트를 통해 커스텀 이모티콘을 모조리 백업할 수 있었습니다 🙂

오묘한 procmail 세상…

마이크로 소프트웨어 1월호를 읽던 중 spam 관련된 기사가 몇 개 실렸길래 재밌게 읽어봤습니다. 불량단어 목록을 외부로 빼서 필터링하는 기법이 소개되었더군요. 웹을 통한 관리까지는 도입할 생각이 없지만, 단어 목록을 외부로 빼면 좀 더 관리가 편해질 듯 하더군요.
뭐 하튼 이래저래 해서 오랫만에 procmail 로 구글링을 해봤습니다. 그러다가 맘에 드는 procmail rule 관련 사이트를 찾아냈습니다!
Continue reading 오묘한 procmail 세상…

php: mytrz-Gallery

개인적인 스크린샷을 올려놓거나 정모 사진등을 쉽게 업데이트 하기 위해 만들어 놓았던 갤러리를 공개해볼까 합니다 🙂 워낙 simple 하기 때문에 이름을 Simple Gallery 라고 지을까 하는데 가져다가 쓰는 사람이 있을지는 모르겠군요 –;
사용법도 정말 심플합니다. 이미지 디렉토리에 ftp 등을 이용해서 파일을 올려놓기만 하면 자동으로 thumbnail 이 생성되고 리스트가 갱신됩니다. 라이센스는 예전 Directory Viewer 와 마찬가지로 BSD License 가 될 듯 싶네요

데모:
http://mytears.org/resources/etc/screenshot/linux/
개발버젼:
http://trac.unfix.net/browser/mytrz-gallery
라이센스: BSD License 예정

아직은 제대로 동작하지 않습니다. 현재 계획 중인 것들은

  1. smary 를 이용한 템플릿 지원
  2. image resizer 를 gd 와 ImageMagick 등 중에 선택가능

뭐 대강 저 정도입니다. 혹시나 쓰는 사람들이 하나 둘 생기고… 개선 요구가 있음 반영하도록 노력할 계획입니다 😉
덧: 이상하게 이건 손이 안가네요.
Change Log:
2006/08/30
1. 개인 repository 를 통합하면서 svn 경로가 변경됨
2. 웹에서 svn 을 구경하기 위한 툴을 trac 으로 변경
3. 프로젝트 이름은 mytrz-gallery 로 변경
2006/01/06
1. 개인적으로 사용하던 걸 코드를 조금 정리하고 svn 에 import

RFC2047: Message Header Ext for Non-ASCII

CSS Design Korean 게시판을 보다가 vBulletin 을 통해 발송된 메일의 문제점 관련된 글을 보게되었습니다… mail header 에 ASCII 가 아닌 글자가 들어가게 될 경우엔 오래된 시스템에서 문제를 일으킬 수도 있기 때문에… 한글과 같은 ASCII 영역 밖의 글자들을 사용하고 싶은 경우엔 RFC2047 에 따라 인코딩을 해줘야 합니다…
해당 쓰레드: http://forum.standardmag.org/viewtopic.php?id=189
Continue reading RFC2047: Message Header Ext for Non-ASCII

내가 사용하는 무료 프로그램들…

요 근래 사용가능한 오픈소스 & 프리웨어 & 에드웨어 들이 늘면서 상용 프로그램들을 깔지 않고서도 별로 불편한게 없는 듯 싶다. 뭐 하튼간에 개인적으로 포멧할 때마다 어떤 걸 안깔았더라 하면서 고민하는 일을 줄이게 위해 정리를 -_-!!
Continue reading 내가 사용하는 무료 프로그램들…

PEAR: File_Archive, PHP:zip

zip 파일을 이용한 다중 파일 업로드를 테스트 해볼까 싶어서 php 레퍼런스를 찾아보니 [php:zip] extension 란게 나온다. php4 까지는 –with-zip 옵션을 통해 [php:zip] extension 을 활성화 시킬 수 있지만 php5 에서는 pecl-zip 패키지를 이용해야 하는데, gentoo 의 php5 지원은 좀 미약했기 때문에 설치가 잘 되지 않았다.
이것 저것 알아보다가 보니 비슷한 역할을 하는 [PEAR:File_Archive] 를 찾을 수 있었다. 사용법은 [php:zip] extension 쪽이 조금 더 간단하지만, [PEAR:File_Archive] 는 여러가지 파일 포멧을 지원하고 recursive 하게도 동작하기 때문에 좀 더 유리한 점이 있을 거 같다. ([PEAR:File_Archive] 는 zip 파일 안에 있는 tar.gz 파일도 열 수 있다)
대강대강 테스트를 해봤더니 [PEAR:File_Archive] 는 확장자를 이용해서 어떤 형식의 archive 인지를 판단한다. 때문에 좀 귀찮음.
잠시 잊고 있다가 gwn 을 보니 gentoo 에서 php5 를 제대로 지원하기 시작하는 듯 해서… 잠깐의 삽질 끝에 [php:zip] 설치에 성공했다. 역시나 [PEAR:File_Archive] 보다는 [php:zip] 이 좀 더 많은 정보를 제공하고 사용하기가 용이하다.
code:
http://mytears.org/resources/mysrc/php/zip/zip.php
http://mytears.org/resources/mysrc/php/zip/file_archive.php

느린 SFTP 는 이제 안녕~

얼마 전 proftpd 패치를 한 김에 … [wikipedia:SFTP] (ftp over ssh) 대신 [wikipedia:FTPS] (ftp over ssl) 를 사용하기 위해 이래저래 삽질을 조금 해봤다… 뭐 결론은 파일질라에서 -_-;; passive 로 안하면 디렉토리 리스트를 못얻어오고 에러가 나는게 문제였지만… 하튼!!
[wikipedia:SFTP] 의 경우엔 라인이 꽤 좋음에도 불구하고 200~300K 정도가 나올가 말까 하는 극악한 속도를 자랑했었는데… proftpd + mod_tls 조합으로 ftps 를 사용해보니 무선랜 환경에서도 500~600K 정도는 나오는게 데스크탑에서는 훨씬 빠를 듯 싶다… (테스트해보니 1.6MB 이상도 나오는거 보면 [wikipedia:SFTP] 랑 속도비교는 무의미 할 듯)
[wikipedia:FTPS] 의 경우엔 이어받기 라던지… 예전 ftp 에서 지원하던 모든 것들을 지원하기 때문에 굳이 다시 [wikipedia:SFTP] 를 쓸 일은 없을 듯… 하튼 이제 느린 [wikipedia:SFTP] 는 안녕~
proftpd 의 옵션 중 TLSrequired 가 on 이면 data 채널과 control 채널 모두 암호화를 해서 전송을 하고 ctrl 이면 data 는 암호화 되지 않은 상태로 전송이 된다고 하는데… off 인 경우는 tls 를 사용하는지 마는지 궁금해졌다 -_-; sniffit 을 이용해서 21 번 포트로 들어오는 데이타를 스니핑 해보니… off 여도 확실히 암호화 되서 전송되는 거 같기는 해서 안심!

proftpd: codeconv module

사실 unfix 는 나 혼자 쓰는 서버가 아니고… 파일이름등을 unicode 로 관리할 경우 ms 윈도우와의 궁합이 그다지 좋지 않기 때문에… utf-8 환경을 갖추는 게 망설여지는게 사실이었다.
얼마 전 젠투 한국 사용자그룹의 유리님의 개인 portage-overlay 리스트를 보다가 proftpd 의 charset conversion 패치를 발견했다. 원 출처는 일본 쪽인 듯 싶은데, 이 패치를 적용하면 client 에서 사용하는 charset 과 server에서 사용하는 charset 을 설정하는게 가능해진다.
http://home.h01.itscom.net/para/software/misc/proftpd-iconv/index-e.html
만약 중간에 charset conversion 에 실패했다거나 한 경우 어떻게 처리를 하나 봤더니, 변환에 실패한 글자를 ‘?’ 로 바꿔버리고 있었다. out_buffer size 를 in_buffer size 의 세 배 크기로 할당하고 중간에 에러가 발생하면 무조건 변환이 실패한 것으로 생각하기 때문에 한 글자를 표현하는데 3바이트보다 더 많은 바이트 수가 필요하다면 (ucs2 로는 표현 못하는 글자를 사용하는 경우), 버퍼 오버플로의 희생양이 될 수도 있을 듯 싶다. 그래도 원하는 코드를 삽입하는 건 힘들고 그저 segmentation error 를 부를 뿐이겠지만 찝찝한 건 사실이므로 에러가 발생할 경우 errno 를 참고하도록 패치를 해야겠다.
근데 실제 적용을 해보니 Directory 나 .ftpaccess 를 통한 지역 설정이 허용되지 않는다. 내가 사용하는 폴더들에 한해서 저 패치의 영향을 받게 하는게 목적이었기 때문에 결국 패치를 해버렸다. proftpd 개발자 문서는 서버가 다운되었었는지 참고를 할 수가 없었고, 그나마 미러링 된 곳도 찾을 수가 없어서 한참 헤매긴 했지만!! 결국!! 내가 원하는 데로 패치 성공 -_-v
패치파일:
http://mytears.org/resources/mysrc/c/patches/mod_codeconv.patch
mod_autoindex 도 몇 일전에 charset 을 설정해줄 수 있도록 패치했고, 그 외에는 이미 다 준비가 되어 있었기 때문에 누군가 mod_autoindex 의 새로운 테마만 만들어준다면 바로 utf-8 환경으로 넘어갈 수 있을 듯 싶다.
FTP 관련해선 RFC2640 에 있는 것을 구현하는 것이 옳다고 생각하지만 중간 단계로써 mod_codeconv 도 나름의 의미가 있을 듯 싶다.
p.s) 위의 사이트에 나와있는 메일 주소로 패치파일을 보내주려 했지만 메일주소가 죽어있네요.