정태영

어째 요새 관리해야할 서버가 늘어버렸네요. (전 언픽스 하나로 족한데 ㅠ.ㅠ) 하여튼!! 요 며칠 사이 gentoo + exim + procmail + spf + srs + clamav + bogofilter + dovecot 를 시도해봤습니다.

사실 계속 제가 맡아서 할 게 아니라 길어야 일 년 정도 만져줄 서버기 때문에 젠투가 아닌 다른 배포판을 생각했었는데, spf 와 srs 를 지원할 수 있도록 하면서 기본으로 제공되는 패키지를 이용할 수 있는 조합이 몇 가지 되질 않더군요. exim 에서 spf 와 srs 는 experimental 로 되어 있기 때문에 바이너리 배포판에선 기본으로 적용이 되어 있질 않고, postfix + milter 조합에서는 srs 를 제공할 수 없기 때문에 남은 선택은 sendmail + milter 조합 밖에 없는데 sendmail 을 사용하기는 싫었거든요.

하여튼! exim 에 procmail 을 붙이는 방법은 아래와 같습니다.

procmail: driver = accept transport = procmail domains = +local_domains check_local_user # emulate OR with "if exists"-expansion require_files = /usr/bin/procmail no_verify no_expn

router 파트의 localuser: 룰 앞에 위와 같은 코드를 추가하고

procmail: driver = pipe path = "/bin:/usr/bin:/usr/local/bin" command = "/usr/bin/procmail" return_path_add delivery_date_add envelope_to_add

transpotes 에 router 에서 정의한 procmail transpote 를 정의해 주면 되죠. procmail 을 이용한 스팸 필터야 예전부터 잘 사용해오던 게 있으니 그걸 사용하면 됐구요.

그 다음은 smtp 설정!! 기본으로 /etc/exim/auth_conf.sub 란 파일이 있길래 그냥 자동으로 smtp 인증 설정이 되어있는줄 알았는데 smtp 인증을 사용하려면 저 안에 있는 내용을 /etc/exim/exim.conf 에 추가해줘야합니다.

plain: driver = plaintext public_name = PLAIN server_condition = "${if pam{$2:$3}{1}{0}}"   login: driver = plaintext public_name = LOGIN server_prompts = "Username:: : Password::" server_condition = "${if pam{$1:${sg{$2}{:}{::}}}{1}{0}}"

그 내용은 위와 같았구요. 하지만 여기서 또 문제가 발생! 예전 시스템이 오래 전에 설치된 것이었는지 비밀번호 암호화를 md5 로 사용하질 않고 있었는데, /etc/pam.d/system-auth 에서 md5 를 제거함으로써 다른 데몬들에선 문제가 해결됐지만 exim 의 stmp 에서만 인증 실패가 나오는겁니다. -_-!

참고로 smtp auth 가 어떤 과정으로 이뤄지는지는 아래 인용된 내용을 참고하세요. 테스트할 때 알아두면 편합니다.

$ telnet localhost 25
EHLO localhost
AUTH LOGIN
base64로인코딩한아이디
base64로인코딩한비밀번호

여담이지만 smtps 나 pop3, imaps 를 꼭 사용하세요. 위에서 처럼 비밀번호가 그냥 넘어갑니다. 패킷이 악의적인 라우터를 지날 경우 아이디/비밀번호가 줄줄 셀 수 있습니다.

하여튼 비굴하게 saslauthd 를 사용해서 우회시켜봤지만 요놈도 마찬가지로 인증 실패 -_-! 아예 다 안되면 모르겠는데 우리 사랑스런 dovecot 은 로그인이 아주! 잘 됩니다. exim 만 나쁜 놈이란 거죠.

saslauthd 라거나 pwcheck 같이 다른 곳에서 잘 사용도 안되는 데몬을 띄우는 게 좀 꺼림찍했는데 잘됐다 싶어서 dovecot-auth 를 활용해봤습니다. dovecot-auth 를 활용하려면 아래와 같이 dovecot.conf 파일을 수정해줘야 합니다.

auth default { mechanisms = plain login passdb pam { args = "*" } userdb passwd { } user = root   socket listen { client { path = /var/run/dovecot/auth-client mode = 0666 } } }

그리고 위에 써있는 auth-client 소켓을 이용해서 로그인하도록 exim.conf 를 고쳐줍시다.

login: driver = dovecot public_name = LOGIN server_socket = /var/run/dovecot/auth-client

이제 끝!! 드디어 smtp 인증이 정상적으로 되기 시작합니다. 휴;;

뭐 대강 다 됐는데, 한 가지 아쉬운 점이라면 .forward 나 alias 를 이용할 경우 procmail 을 거치지 않기 떄문에 스팸 필터링이 안되는 것 정도? 이건 어떻게 해야할 지 별로 답이 안나오네요.

그렇다고 bogofilter, clamav 등이 다 procmail 에서 호출되는데 이걸 spamassassin + clamd 조합으로 새로 설정하긴 완전 귀찮고 (사실 어떻게 하는지도 모르고) 약간 쀍입니다.

그 외에 mailman 과 관련된 삽질이 조금 더 있었고, seliunx 가 적용되어 있는 CentOS 랑 관련된 것도 있었는데 또 언제 시간날 때 관련된 것들을 포스팅해봐야겠습니다.

사실 요새 포스팅 하고 싶은 내용은 많은데 내용이 길어져서 귀차니즘이 발동해버렸네요.

정태영

요근래 ruby 때문인지 서버의 메모리 사용량이 급증하면서 스왑을 꽤 쓰고 있는 모습이 지속되고 있습니다. 메모리 부족으로 usr 파티션이 마운트 해제되는 일도 몇 번 있었습니다. 메모리를 추가로 구입할까 하고 보니 LPtype ecc/reg sdram 가격이 너무 비싸네요. 이럴 줄 알았으면 처음부터 메모리를 한 3기가 정도로 만들어서 넣을걸 하는 후회가 됩니다.

뭐 하여튼 이 서버를 중고로 구입한게 2004년 1월이었으니 3년 넘게 큰 문제 없이 잘 돌아주고 있어서 고맙긴 하지만 이제 슬슬 업그레이드를 고려해봐야 할 시기가 아닌가 싶습니다. 그래서 중고 서버 판매 사이트들을 찾아보고 있는데 uniwide 제품으로 60~70 쯤이면 xeon 2.4 *2, 4GB memory, 72GB scsi hdd 정도 사양 제품을 구입할 수 있을 것 같습니다.

그리고 새제품으로도 140정도면 쿼드코어 1.6ghz, 1GB ecc/reg pc5300 fbdimm, 72GB scsi hdd 정도 제품도 구입이 가능한 것 같은데 이건 메모리 값이 비싸니 -_-; 메모리도 추가하고 하면 170~180 이 필요하겠네요. 아악 너무 비싸!!

하여튼 지금 당장 업글하려는 건 아니니까 한 100만원 정도 내에서 괜찮은 제품이 없나 살살 알아봐야겠네요.

p.s) 혹시나 회사에서 싸게 서버를 처분하려는 움직임이 있으면 연락좀 해주세요. ㅠ0ㅠ 그나저나 dslr 도 지르고 싶고 지르고 싶은거 투성인데 흑흑

정태영

블로그에도 몇 번 관련된 내용을 남겼지만.. 현재 내가 쓰고 있는 서버는.. 임대형 서버인데.. 업그레이드가 필요함에도 -_-;; 업그레이드 후 다달이 늘어나는 가격등에.. 두려움을 느껴서.. 무언의 압박을 받고 있었다..

거기다가.. 2년전에.. 레드햇 7.3 을 설치해놨었는데.. 어느 날 갑자기.. up2date 의 지원도 끊기고… Fedora Legacy 의 지원도 이제 끝날 쯤 된 듯 해서.. 나한테 익숙하지 않은 레드햇은 이제 빠이빠이 하고.. 내 손에 익숙한 젠투와 함께 -_-!! 새로운 둥지를 찾아나서기로 결심!!

SmartServer 921 을 질렀는데.. cpu도.. P3 1.13 * 2개 이고.. Memory 도.. 256MB*2개.. 하드도.. 18.2GB*2개다 헤헤.. 메모리 512MB*2개 더 달고 -_-;; 하드 36기가 하나 더 단 다음에.. 원래 있던 하드들은 백업용으로 쓰면 될 듯.. 꺄르르르

드디어 월말의 호스팅비 압박에서 벗어날 때가!!

p.s) 코로케이션 믿을만하고 싼데 추천해주세요 ㅠ_ㅠ
p.s2) 내일은 내 생일~ 올해 생일엔 기분 나쁜 일이 안 생겼음 좋겠다..