touch /forcefsck
reboot
예전에 xfs 버그로 usr 파티션에 살짝 문제가 있었는데, (좀 오랫동안 방치하긴 했지만) 이걸 해결하기 위해 /etc/init.d/checkfs 를 열어보니 이미 강제로 파티션을 체크하기 위한 코드가 들어있었다. -_-
문서에 없는건지 내가 못찾은건지는 모르겠지만 잊어먹을까봐…
touch /forcefsck
reboot
예전에 xfs 버그로 usr 파티션에 살짝 문제가 있었는데, (좀 오랫동안 방치하긴 했지만) 이걸 해결하기 위해 /etc/init.d/checkfs 를 열어보니 이미 강제로 파티션을 체크하기 위한 코드가 들어있었다. -_-
문서에 없는건지 내가 못찾은건지는 모르겠지만 잊어먹을까봐…
어쩌다보니 (돈에 눈이 멀어) 학교 웍스테이션 관리를 맡게 되어버렸다. 학교마다 직책의 이름은 다르지만 값싼 노동력으로 학과 웍스테이션들을 굴리려는 시도는 똑같이 행해지고 있는 것 같다.
하여튼 홍익대학교 정보전산원에서 받던 월급에 비해 더 적은 월급으로 노동력을 착취당하기 시작했고, (홍익대학교에선 대학원 생이 정보전산원에서 일할경우 예전에 내가 받던거에 비해 더 받을 수 있는걸로 알고 있는데, 학부때 받던 것보다 더 적게 주는 한양대학교 완전 나뻐요. ㅠ.ㅠ) 학기가 시작되면서 파일 서버와 실습 머신들 관련해서 작업할 일들이 생겼는데, 실습 머신들을 모두 우분투로 밀어버릴 생각 -_-!
실습에 들어와서 리눅스를 사용해본 사람들이 리눅스에 대한 좋은 인상만 가지도록 이것저것 신경 써서 설치해주고 싶은 마음에 테스트 머신을 하나 만들었고, 거기에 우분투 7.10 (gusty) 를 설치한 뒤 nateon, haansoft-hwp, build-essensial, vlc, mplayer, flashplugin, firefox-vlc-plugin, pidgn-nateon, kopete, konqueror 등을 설치해봤는데, 호오! 사람들이 우분투 우분투 하는 이유를 조금 알 것 같다. 물론 내가 데스크탑을 리눅스로 꾸미며 놀았던 때는 이미 3년 이상 전 이긴 하지만 하여튼! 이 정도면 기본 세팅만으로도 별 아쉬움 없이 잘 쓸 수 있을거 같은 느낌!!
실습 시간에 실습은 안하고 메신져질만 할 학생들을 생각하면 조금 불안하긴 하지만 ㅠ.ㅠ 그래도 리눅스 데스크탑도 충분히 쓸만하다는 것을 알리기 위해!! 내일 저녁엔 캐삽질을 ㅠ.ㅠ
마무리 해줘야할 일이 있어서 눈코뜰새 없이 바쁜 하루하루를 보내고 있습니다. 좀 미리 해놓을걸 하는 생각이 아주 절실히 드네요. 1월 한달간 풀타임으로 놀아준게 이렇게 타격이 될 줄은 몰랐습니다. -_-;
하여튼! 뭐 어떤 일을 하고 있었는지는 끝나고 얘기하기로 하고, (연애는 아니니 걱정마시길 후훗!) 이상하게 해야할 게 쌓여있을 땐 다른 일이 유독 재밌게 느껴지는 것 같아요. 어제는 스팸 필터가지고 이래저래 장난치다가 포스트도 두 개나 썼고 오늘 새벽엔 오랫동안 방치해놨던 웹메일 코드를 고치고 있었네요. 캬캬캬
http://mail_dev.unfix.net/list.php
이게 바로 그건데요. mail-test@unfix.net 주소를 고정시켜놓고 작업 중이라 수정한 코드를 바로 커밋하기가 좀 그렇네요. 그런데 저걸 처음 만들 때가 언픽스를 처음 시작했을 때였으니 벌써 한 7년 가까이 완성하지 않고 방치해두고 있는 것이었어요! 짬짬히 작업을 해서 한 번쯤 릴리즈해줄 때가 된 것 같습니다.
그나저나 코드를 수정하고 있으려니 이 간단한 걸 왜 예전엔 이해하지 못했을까 하는 자괴감이… ㅠ.ㅠ 지저분하게 작성해놨던 뗌빵 코드들을 하나하나 수정하다 보니 벌써 밤이 다 지나버렸습니다.
코드와 프레젠테이션을 분리하는 작업도 끝났으니, 로그인이나 메일 상자 선택 기능 정도를 만들고 css 를 살짝 입혀주면 다람쥐 메일 따위는 지워버려도 될 것 같아요. 캬캬캬
대강 어느정도 작동하게 만들고나면 디자인은 또 누군가가 도와줄거라 믿어요. 하여튼 얼렁 일을 마무리하고 쭈우우욱 다리 뻗고 자야겠습니다. -_-! 꺄홋! 다들 뜨거운 밤 야한꿈요~!
p.s) 도움을 주시고 싶으신 분은 mail_test@unfix.net 으로 다양한 형식의 메일을 쏴주세요~
p.s2) 사실 저 위에 있는 Remarkable 페이지도 업데이트 했는데, 워낙 인기없는 곳이라 ㅠ.ㅠ
I used to classify spam mail with procmail, but procmail is excuted only for local users. So when you use the .forward file, spam mail is also forwarded to the other email addresses.
It’s not so quite import but I don’t like this behavior. so I change the exim configuration to run bogofilter with the transport/router of exim.
first let’s configure transport like this.
bogofilter:
driver = pipe
command = /usr/sbin/exim -oMr bogodone -bS
use_bsmtp = true
transport_filter = /usr/bin/bogofilter -d /etc/bogofilter/ -e -p
log_output = true
return_path_add = false
temp_errors = *
home_directory = "/tmp"
current_directory = "/tmp"
message_prefix = ""
message_suffix = ""
after that you need to declare the router which uses this transport. Order is important in router. I put it right after the system_alias router.
bogofilter:
domains = +local_domains
no_verify
condition = ${if !eq {$received_protocol}{bogodone} {1}{0}}
driver = accept
transport = bogofilter
With this configuration, bogofilter will be excuted but it put only an additional header like “X-bogofilter: …” so we need another transport/router to classify the spam mails.
Here’s the transport to do that.
spam_delivery:
driver = appendfile
directory = /home/$local_part/.maildir/.Spam
maildir_format
delivery_date_add
envelope_to_add
return_path_add
With this transport, we can put the spam mails to the .Spam folder within $HOME/.maildir. If you use the IMAP protocol, then you can simply check the spam mails by accessing Spam folder. But with POP3 protocol there’s no way to check it. So if you use POP3 then use the header filtering rules of client software instead.
And we also need to add a router which uses this transport. The order is important in here too. I put it below the bogofilter router.
removingspam:
driver = accept
check_local_user
condition = ${if match {$h_X-Bogosity:} {Spam, tests=bogofilter} {1}{0}}
transport = spam_delivery
Spam mail has the header, X-Bogosity: Spam, test=bogofilter …, so we can classify the spam mail easily.
To confirm it working, check the mail log. I checked /var/log/mail/current because I use metalog but in almosts linux distributions syslogd is included so check the /var/log/messages file.
$ # tail -f /var/log/mail/current |grep R=
Feb 26 16:48:31 [exim] 2008-02-26 16:48:31 1JRkT5-0001pz-Nx => mailaddr R=procmail T=procmail
Feb 26 16:48:35 [exim] 2008-02-26 16:48:35 1JTuY0-00081q-7u => mailaddr R=removingspam T=spam_delivery
Feb 26 16:48:44 [exim] 2008-02-26 16:48:44 1JQWAs-0002po-CR => mailaddr R=bogofilter T=bogofilter
Feb 26 16:48:45 [exim] 2008-02-26 16:48:45 1JTuY5-000826-EK => mailaddr R=removingspam T=spam_delivery
The name of router/transport is located after R= and T= . The name of router appears after R=, and the name of transport appears after T=. According to this log, we can say that removespam or procmail router is used after the bogofilter excuted.
익숙한 걸 사용하려다보니 procmail 을 이용해서 bogofilter 를 수행하는 방법을 사용해 왔지만, procmail 은 로컬 유져에 한해서 실행되게 되므로, alias 나 .forward 를 사용하게 되는 경우 스팸 필터링을 하지 않게 된다.
하여튼 이게 좀 신경쓰여서 transport 와 router 를 이용해서 bogofilter 를 수행하도록 설정해봤다.
우선 transport 를 다음과 같이 설정해보자.
bogofilter:
driver = pipe
command = /usr/sbin/exim -oMr bogodone -bS
use_bsmtp = true
transport_filter = /usr/bin/bogofilter -d /etc/bogofilter/ -e -p
log_output = true
return_path_add = false
temp_errors = *
home_directory = "/tmp"
current_directory = "/tmp"
message_prefix = ""
message_suffix = ""
그리고 이 transport 를 이용하는 router 를 만든다. 참고로 router 는 순서에 민감하므로 삽입할 위치를 잘 조절해야 한다. 나같은 경우는 system_alias 다음에 선언해두었다. (alias 를 사용하는 주소들중 로컬 유져에게 전달되지 않는 건 mailman 과 관련된 것들 밖에 없는데 이거야 뭐 어짜피 인증된 사용자가 보낸 메일만 받으니 상관 없겠다는 마음으로…-_-;; )
bogofilter:
domains = +local_domains
no_verify
condition = ${if !eq {$received_protocol}{bogodone} {1}{0}}
driver = accept
transport = bogofilter
여기까지만 하게 되면 bogofilter 를 수행하기는 하지만 이를 이용해서 메일을 옮긴다거나 하는 동작은 하지 않게 된다. 그러므로 이런 동작을 시키기 위한 transport 와 router 를 또 추가해주자.
역시나 transport 먼저…
spam_delivery:
driver = appendfile
directory = /home/$local_part/.maildir/.Spam
maildir_format
delivery_date_add
envelope_to_add
return_path_add
이렇게 하면 자신의 홈 디렉토리의 .maildir 아래 .Spam 이란 디렉토리를 만들고, 그 디렉토리에 스팸 메일을 저장하게 된다. IMAP 으로 접속하면 Spam 메일들을 확인할 수 있기 때문에 이렇게 했는데, POP3 만 사용하는 거라면 그냥 제목에 [Spam] prefix 를 붙이게 하는 것도 나쁘지 않을 듯…
그 다음엔 이 transport 를 이용하는 router! 역시나 어디다 위치시킬지 잘 생각해야 한다. 나같은 경우엔 bogofilter router 바로 아래에 이걸 위치시켜놓았다.
removingspam:
driver = accept
check_local_user
condition = ${if match {$h_X-Bogosity:} {Spam, tests=bogofilter} {1}{0}}
transport = spam_delivery
스팸 메일은 bogofilter 에 의해 X-Bogosity: Spam, test=bogofilter … 식의 헤더가 추가되기 때문에 이렇게 할 경우 스팸을 쉽게 분류해낼 수 있다.
잘 됐는지 확인은 메일로그를 이용해서 확인하면 된다. 나같은 경우는 metalog 를 사용하니 /var/log/mail/current 를 이용해서 확인해야 했는데 대부분의 경우 syslogd 를 사용할테니 /var/log/message 를 확인하면 될 것 같다.
$ # tail -f /var/log/mail/current |grep R=
Feb 26 16:48:31 [exim] 2008-02-26 16:48:31 1JRkT5-0001pz-Nx => 메일주소 R=procmail T=procmail
Feb 26 16:48:35 [exim] 2008-02-26 16:48:35 1JTuY0-00081q-7u => 메일주소 R=removingspam T=spam_delivery
Feb 26 16:48:44 [exim] 2008-02-26 16:48:44 1JQWAs-0002po-CR => 메일주소 R=bogofilter T=bogofilter
Feb 26 16:48:45 [exim] 2008-02-26 16:48:45 1JTuY5-000826-EK => 메일주소 R=removingspam T=spam_delivery
유심해서 봐야할건 R=, T= 다음에 나오는 것들이다. R= 다음에 나오는 것은 사용된 router 를 의미하고, T= 다음에 나오는건 transport 를 의미한다. 위의 로그를 보면 bogofilter 를 수행한 뒤 removingspam router 를 이용해서 spam_delivery trasport 가 수행되기도 하고 혹은 이를 통과해서 procmail transport 가 수행되기도 하는 걸 확인할 수 있다.
기본으로는 procmail transport 가 없으니 원랜 local_delivery 가 나올 수도 있겠고 뭐 하여튼 router 나 transport 이름은 사용자가 맘대로 지으면 되는거라 상황에 따라 다 다를 듯…
스팸 없는 세상이 올 때까지 ㅠ.ㅠ 오늘도 삽질…
얼마 전에 아는 형 부탁으로 또 하나의 서버를 살펴봐주게 되었다. 장기적으로 할건 아니고 단발성으로 잠깐 봐주게 될 일이었는데...
여기 설치되어 있던 리눅스는 Fedora core2! 아는 사람은 다 알다시피 Fedora core2 는 업데이트 지원이 끊긴지 이미 오래된 배포판이다. 하여튼 알려진 버그들로 무장된 상태를 유지하는건 알바로써의 자세가 아니기 때문에 최신 버젼으로의 업데이트를 시도해봤지만 core2->8 으로의 업데이트는 실패!! (core8 의 redhat-release를 설치한 뒤 yum upgrade 를 시도해봤지만 패키지 의존성이 해결되질 않는다. 7, 6, 5 도 마찬가지)
차례로 순서를 밟아가야 겠다는 생각이 들어서 3, 4, 5 순서로 시도를 해봤는데 8 까지 제대로 업데이트가 되지도 않았을 뿐더러 reboot 이 제대로 되지 않아 버렸다. 하하하하하하 (사고 쳤단 얘기) apache, mysql 등이 /usr/local/apache, /usr/local/mysql 등의 prefix 에 설치되어 있었고, init script 조차 제대로 없는 그런 암울한 상황이었는데 마침 잘됐다는 생각으로 CD 와 함께 IDC 에 방문했다. fedora 는 업데이트 주기가 너무 짧고, 내가 관리해야할 서버가 아닌 마당에 젠투를 깔아주는건 옳지 못하단 생각이 들었으며, 우분투 등을 깔아주기엔 내가 너무 무지했다. 결국 선택한건 CentOS 5.1!
불행히도 DVD rom 이 없었기 때문에 가져갔던 CentOS 5.1 dvd 는 사용할 수가 없었고, 혹시 몰라 구워갔던 CentOS 5.1 net install cd 를 사용해야 했다. 설치야 예전 레드햇 계열들과 별로 다르지 않으니 어렵지 않게 끝~
하지만 이게 왠 일! /home 계정 밑에 있는 파일들을 아파치에서 읽질 못한다! 혹시나 해서 apache 유져의 쉘을 /bin/bash 로 바꿔주고 apache 유져로 스위치한 뒤 파일들을 읽어보니 잘 읽어온다. -_-; 헉; 이젠 리눅스마저 날 농락하려 드는건가 싶은 마음이... ㅠ.ㅠ 정확히 뭐가 문젠지도 몰라서 검색어조차 찾을 수 없던 이 시점! selinux 라는 요상 야릇한 단어가 눈에 들어왔다. 하여튼! 검색을 통해 찾아낸 아래와 같은 명령어를 통해 이 문제를 해결할 수 있다.
acl 을 사용하는건지 아님 뭔가 다른 방법을 사용해서 저런 secure context 를 저장하는 건지 까지는 모르겠지만 하여튼 강화된 보안 정책 덕에 초보 리눅서만 고생했다. ㅠ.ㅠ 그나저나 하고 싶었던 얘기는 내가 천재라 저런 문제를 해결했다는게 아니고, 웹에 잘못된 문서가 너무 많다는 것!
저 문제를 해결하기 위해 CentOS apache home 403 등으로 검색했을 경우 상위 랭크로 나오는 페이지들은 대부분 아파치 소스를 가져다 빌드해서 저 에러를 피해가는 요상한 방법이다. 그나마 거기에 설명된 설치 법에는 CFLAGS 등을 설정하지도 않고, 무슨 의미인지도 모르는 옵션들로 가득차 있으며 그나마 효율적이지도 않다.
linux 는 배포판 별로 파일 레이아웃에 대한 정책이 있다. 약간씩은 다르지만
/usr - 실행파일, 라이브러리, man 페이지, 문서 등이 놓여짐
/etc - 설정파일이 놓여짐
/var - 런타임에 생성되는 데이타가 놓여짐 (로그, 데이타베이스 파일, 메일 파일 등등)
/tmp - 임시파일 저장장소
대강 위와 같은 정책을 사용하며 약간 부연하자면 /usr 과 / 에 대해 아래와 같은 디렉토리 구조가 더 사용된다.
/bin 실행파일
/sbin 관리자한테만 필요한 실행파일
/lib 프로그램이 실행될 때 사용하는 쉐어드 라이브러리등이 존재
이런 얘기를 왜 하냐면 배포판에서 제공하는 패키지를 사용할 경우 위의 정책대로 파일들이 놓여지며 설정파일을 찾기 위해선 /etc 밑을 뒤지면 되고, 실행은 /usr/local/apache/bin/apachectl start 와 같이 해야 하는게 아니라 apachectl start 와 같이 하면 된다.
그냥 소스를 가져다가 ./configure --prefix=/usr/local/apache 와 같이 설치할 경우 PATH 가 걸려있지 않아서 실행 파일의 full path 를 적어줘야 하는 불편함 외에도 man page 가 놓여있는 경로가 MANPATH 에 등록되질 않기 때문에 명령어 들의 man 페이지를 확인해볼 수도 없다. (사실 저렇게 설치하는 유져가 man 페이지를 참고할 거란 생각은 별로 들지 않지만) 거기다가 init 스크립트를 제공하지 않는 프로그램들도 많아서 프로그램의 실행 종료를 수동으로 해야하는 불편도 생긴다.
간단한 예로 mysql 을 패키지로 설치한 것과 소스로 /usr/local/mysql 에 설치한 것을 비교해보자.
| 소스 | 패키지 | |
|---|---|---|
| 실행 | /usr/local/mysql/bin/mysql | mysql |
| man page | 사용불가능 | 사용가능 |
| 데몬 시작 | /usr/local/mysql/bin/mysqld_safe & | /etc/init.d/mysqld start |
| 데몬 종료 | ps ax|grep mysql 후 kill 해당pid | /etc/init.d/mysqld stop |
| 자동 실행 | /etc/rc.local 에 /usr/local/mysql/mysqld_safe & 추가 | ntsysv 에서 mysql 체크 |
| 파일 변조 확인 | 불가능 | rpm -Va mysql |
| 제거 | rm -rf /usr/local/mysql | rpm -e mysql |
| 업데이트 체크 | 수동 | yum check-update mysql |
| 파일 리스트 | find /usr/local/mysql | rpm -ql mysql |
이걸로 끝이 아니다. 만약 openssl 이 업데이트 되면서 소스로 가져다 설치한 mysql 이 실행되는데 필요한 libcrypto.so.4 란 파일이 제거되었다고 해보자. rpm 등을 사용하면 dependency check 과정이 있으므로 이런 황당 무계한 일이 벌어지지 않는다. 하지만 소스로 설치했다면 저 라이브러리를 찾을 수 없다는 에러를 만날 수밖에 없다.
그리고 실행파일 경로(PATH)나 man page 경로(MANPATH) 같은 건 ~/.bash_profile 이나 /etc/bashrc /etc/profile.d 등을 수정해주면 쉽게 등록해 줄 수 있다. 하지만 이런 것까지 설명하고 있는 문서는 본 적이 별로 없는 것 같다. (물론 이렇게 설치하는 유져가 man 페이지를 확인할 거란 생각은 하지 않는다.)
우선 패키지 관리자를 사용하면 업데이트가 나왔는지를 확인하는 작업과 업데이트를 수행하는 일이 아주 간단해진다. 또한 프로그램의 설치/제거 가 같은 인터페이스를 통해 이뤄지고, 데몬의 실행/종료도 비슷한 인터페이스를 통해 이뤄진다.
대부분의 데몬들은 /etc/init.d/데몬이름 start|stop 와 같이 시작/종료를 할 수 있으므로 뭔가를 새로 설치했을 때 어떤 식으로 실행해야할지, 어떤 식으로 종료시켜야할지 고민할 필요가 없다. 게다가 ntsysv 를 통해 gui 로 시동 스크립트들을 관리할 수도 있게 되고...
뭐 하튼 예전부터 주장하고 있는 바지만 괜히 a.p.m 을 구축하기 위해 이미 다 설치되어 있는 apache, php, mysql 등을 제거하고 libjpeg, libungif, libgd 등을 줏어다가 하나하나 빌드하는 방법을 설명한 문서는 다 사라졌음 좋겠다.
jpeg 헤더가 필요하면 yum install libjpeg-devel 을 설치하면 된다. gif 헤더는? yum install libungif-devel, gd 는 yum install gd-devel ...
다들 삽질로 부터 해방되는 그 날까지! 꺄아악
p.s) 졸려서 날림 마무리
어째 요새 관리해야할 서버가 늘어버렸네요. (전 언픽스 하나로 족한데 ㅠ.ㅠ) 하여튼!! 요 며칠 사이 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 랑 관련된 것도 있었는데 또 언제 시간날 때 관련된 것들을 포스팅해봐야겠습니다.
사실 요새 포스팅 하고 싶은 내용은 많은데 내용이 길어져서 귀차니즘이 발동해버렸네요.