Reminiscence

<Procmail Sendmail을 이용한 Outgoing 메일 필터링>

1) 개요

대부분의 리눅스 서버들이 스패머들의 공격으로 인하여 대량의 스팸메일 발송이 이루어 지고 있습니다. 이와 같은 경우 해당 서버의 아이피 블록 및 시스템 장애, 과부하 등이 일어나며 이에 대한 대처방안으로 Procmail을 이용한 필터링을 사용 할 수 있습니다.

Procmail은 리눅스설치시 기본적으로 설치되는 프로그램이며 혹시라도 설치가 되어 있지 않다면 패키지를 다운받아 설치가 가능 합니다.

또한 Sendmail과의 호환성이 매우 뛰어나며, 시스템 자원사용이 매우 적어 시스템에 부하를 일으키지도 않습니다.

Sendmail에서 발송시 sendmail.cf Ruleset에 의하여 해당 메일의 방향을 외부가 아닌 내부로 변경하게 됩니다. 내부로 돌아온 메일은 procmail에 의해 outgoing.rc와 같은 정규표현식 필터링을 거치게 되며, 모든 필터링이 완료되면 formail에 의하여 다시 Sendmail에게 전달되며, 해당 메일을 다시 전달 받은 Sendmail은 이제서야 정상적으로 메일발송을 하게 됩니다.

2) Sendmail.cf의 수정

Sendmail.cf의 수정은 아래 2가지 항목만 수정하시면 됩니다.

$ vi /etc/mail/sendmail.cf

- 아래 주석으로 검색하시면 구문이 있습니다.

(Before - 1)

# deal with other remote names

R$* < @$* > $*         $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain

(After - 1)

# deal with other remote names

#R$* < @$* > $*         $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain

R$*<@$*.procmail>$*     $#esmtp $@$2 $:$1<@$2>$3

R$*<@$*>$*           $#procmail $@/etc/outgoing.rc $:$1<@$2procmail.>$3

(Before -2)

#

#  envelope recipient rewriting --

#  also header recipient if not masquerading recipients

#

R$+                    $: $>PseudoToReal $1            sender/recipient common

R$+                    $: $>MasqSMTP $1                qualify unqual'ed names

R$* < @ *LOCAL* > $*    $: $1 < @ $j . > $2

(After 2)

#

#  envelope recipient rewriting --

#  also header recipient if not masquerading recipients

#

SEnvToSMTP

R$* < @$*.procmail > $* $: $1 < @ $2 > $3

R$+                     $: $>51 $1

R$+                     $: $>61 $1

R$+                    $: $>PseudoToReal $1            sender/recipient common

R$+                    $: $>MasqSMTP $1                qualify unqual'ed names

R$* < @ *LOCAL* > $*    $: $1 < @ $j . > $2

위와 같이 수정하시면 되며 탭구분을 주의하시기 바랍니다.

밑줄이 그어진 부분은 탭으로 구분하셔야 하는 부분입니다.

셋팅이 완료 된 후 outgoing.rx 파일을 생성하여야 하며, outgoing.rc는 제가 수정하여 놓은 파일을 이용하시면 됩니다.

Outgoing.rc /etc/ 폴더로 옮겨놓으신후 sendmail을 재시작 하면 셋팅은 완료가 되었습니다.

3) 테스트

#sendmail -d12.21 bt

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)

Enter <ruleset> <address>

> /parse mrmsm@sds.co.kr

Cracked address = $g

Parsing envelope recipient address

canonify           input: mrmsm @ sds . co . kr

Canonify2          input: mrmsm < @ sds . co . kr >

-- 중략 --

final              input: mrmsm < @ sds . co . kr . procmail . >

final            returns: mrmsm @ sds . co . kr . procmail

mailer procmail, host /etc/outgoing.rc, user mrmsm@sds.co.kr.procmail

> /parse mrmsm@sds.co.kr.procmail

Cracked address = $g

Parsing envelope recipient address

canonify           input: mrmsm @ sds . co . kr . procmail

Canonify2          input: mrmsm < @ sds . co . kr . procmail >

Canonify2        returns: mrmsm < @ sds . co . kr . procmail >

-- 중략 --

final              input: mrmsm < @ sds . co . kr >

final            returns: mrmsm @ sds . co . kr

mailer esmtp, host sds.co.kr, user mrmsm@sds.co.kr

위와 같이 이메일 주소 뒤에 .procmail이 붙으면 정상적으로 처리가 되는 것입니다. 그에 대한 역 또한 정상적으로 되고 있습니다.

만약 결과가 틀릴경우 sendmail.cf 파일의 셋팅이 잘못 된것이므로 다시한번 체크하여 보시기 바랍니다.

- -

신고

댓글 0개가 달렸습니다.

< SquirrelMail + Sendmail을 이용한 메일 서버 구축 매뉴얼 >


  Squirrelmail(
이하 다람쥐메일)의 경우 현재 무료로 제공되고 있는 웹메일 프로그램입니다. 다람쥐메일은 sendmail qmail 모두 지원하며, 서버호스팅에서 기본적으로 설치되는 sendmail을 이용한 셋팅 방법에 대하여 기술 하겠습니다.


SquirrelMail : http://squirrelmail.org
RPM find : http://rpmfind.net/

다람쥐 메일을 설치하기 위해서는 아래와 같은 데몬의 설치가 필요합니다.


Sendmail(or Qmail)

Imap (or dovecot)

php-4.3.10.tar.gz

squirrelmail-1.4.5 다람쥐 메일

ko_KR-1.4.6 다람쥐메일 한글 언어팩

Libmcrypt 다람쥐메일 설치를 위한 라이브러리

ZendOptimizer-2.5.7-linux-glibc21 다람쥐메일 설치를 위한 라이브러리


※ 본 문서는 서버 호스팅 기본 설치 패키지가 설치되어 있다는 전제 하에 작성되었습니다.



<
설치 및 재컴파일>

다람쥐 메일을 사용하기 위해서는 php, zendoptimizer를 재컴파일 해야 하며, libmcrypt를 설치해야 합니다.

php에서 사용될 옵션중 --with-mcrypt를 위해 libmcrypt를 가장 먼저 설치해야 합니다.


# tar zxvf libmcrypt-2.5.7.tar.gz

중략

# cd libmcrypt-2.5.7

# ./configure

# make

# make install


libmcrypt
의 설치가 완료되었다면, 이미 설치되어 있는 php를 재컴파일 해야 합니다.

재컴파일시 아래의 옵션을 아래 옵션을 꼭 넣어주시기 바랍니다.


[
옵션 ]

--with-ldap

--with-pear

--with-openssl

--with-mcrypt

--enable-mbstring


# tar zxvf php-4.3.10.tar.gz

# cd php-4.3.10

# ./configure --[기본옵션] --with-ldap --with-pear --with-openssl --with-mcrypt --enable-mbstring

# make

# make install

# cp php.ini-dist $php_DIR/lib/php.ini


PHP
까지 재컴파일 및 설치가 완료 되었습니다. Zendoptimizer so가 아닌 source파일로 컴파일 하여 재설치 해야만 정상적인 다람쥐 메일을 구동 할 수 있습니다.


# tar zxvf ZendOptimizer-2.5.7-linux-glibc21-i386.tar.gz

# cd ZendOptimizer-2.5.7-linux-glibc21-i386

# ./install


앞으로 이지선다의 경우 모두 yes를 선택하며, php디렉토리, apache디렉토리를 입력하여 줍니다.

ZendOptimizer의 설치가 완료되었다면, IMAP 데몬인 dovecot을 설치 해야 합니다.

Dovecot은 각 OS버전에 따라 아래와 같이 설치 할 수 있습니다.

Redhat : up2date i dovecot

Fedora : yum install dovecot

Debian : apt-get install dovecot

그 외의 OS Dovecot 홈페이지를 참고하시기 바랍니다.


# up2date
i dovecot


Dovecot
의 설치가 완료되었다면 /etc/dovecot.conf 파일을 아래와 같이 수정하여 주시기 바랍니다.


# vi /etc/dovecot.conf

[ protocols = imap imaps è protocols = imap imaps pop3 pop3s]

# /etc/init.d/dovecot start

Starting Dovecot Imap:                                     [  OK  ]


Dovecot
이 정상적으로 작동하고 있는지 테스트를 해야 합니다.

테스트 방법은 기존에 올려놓은 [imap 설치 방법 매뉴얼]을 참고하여 주시기 바랍니다.


이제 마지막으로 다람쥐 메일을 설치하면 모든 설치가 완료 됩니다.

Squirrelmail은 따로 인스톨 할 필요 없이 압축 푼 그대로 설정만 하여 바로 이용 하면 됩니다.


# tar zxvf squirrelmail-1.4.5.tar.gz

# cd squirrelmail-1.4.5

# ./configure


SquirrelMail Configuration : Read: config.php (1.4.0)

---------------------------------------------------------

Main Menu --

1.  Organization Preferences

2.  Server Settings

3.  Folder Defaults

4.  General Options

5.  Themes

6.  Address Books

7.  Message of the Day (MOTD)

8.  Plugins

9.  Database

10. Languages



원하시는 부분만 수정하신 후 이용하시면 됩니다.


SquirrelMail Configuration : Read: config.php (1.4.0)

---------------------------------------------------------

Organization Preferences

1.  Organization Name      : 7strike TesT Mail

2.  Organization Logo      : ../images/sm_logo.png

3.  Org. Logo Width/Height : (308/111)

4.  Organization Title     : 7strike Test Mail server

5.  Signout Page           :

6.  Top Frame              : _top

7.  Provider link          : http://www.7strike.com/

8.  Provider name          : 7strike Mail


-
       
서버 셋팅 부분이며, 메일 발송에 대한 부분을 수정하시면 됩니다.

     -         Dovecot other로 잡으시면 정상적으로 셋팅 됩니다.


SquirrelMail Configuration : Read: config.php (1.4.0)

---------------------------------------------------------

Server Settings

General

-------

1.  Domain                 : test.7strike.com

2.  Invert Time            : false

3.  Sendmail or SMTP       : Sendmail

A.  Update IMAP Settings   : localhost:143 (other)

B.  Change Sendmail Config : /usr/sbin/sendmail

- 폴더에 관한 부분이며, 원하시는 부분만 수정하시면 됩니다.

SquirrelMail Configuration : Read: config.php (1.4.0)

---------------------------------------------------------

Folder Defaults

1.  Default Folder Prefix         : mail/

2.  Show Folder Prefix Option     : true

3.  Trash Folder                  : 휴지통

4.  Sent Folder                   : 보낸편지함

5. Drafts Folder                 : 임시보관함

6.  By default, move to trash     : true

7.  By default, move to sent      : true

8.  By default, save as draft     : true

9.  List Special Folders First    : true

10. Show Special Folders Color    : true

11. Auto Expunge                  : true

12. Default Sub. of INBOX         : true

13. Show 'Contain Sub.' Option    : false

14. Default Unseen Notify         : 2

15. Default Unseen Type           : 1

16. Auto Create Special Folders   : true

17. Folder Delete Bypasses Trash  : true

18. Enable /NoSelect folder fix   : false


-
데이터 디렉토리에 대한 부분만 수정하시면 되며, dataattach디렉토리는 nobody권한의 730 퍼미션으로 셋팅 해야만 정상적인 처리가 가능합니다.


SquirrelMail Configuration : Read: config.php (1.4.0)

---------------------------------------------------------

General Options

1.  Data Directory              : /var/data/

2.  Attachment Directory        : /var/attach/

3.  Directory Hash Level        : 0

4.  Default Left Size           : 150

5.  Usernames in Lowercase      : false

6.  Allow use of priority      : true

7.  Hide SM attributions        : false

8.  Allow use of receipts       : true

9.  Allow editing of identity   : true

  Allow editing of name       : true

  Remove username from header : false

10. Allow server thread sort    : false

11. Allow server-side sorting   : false

12. Allow server charset search : true

13. Enable UID support          : true

14. PHP session name            : SQMSess


-
언어 셋팅이며 Default Language Charset을 아래와 같이 수정하시면 됩니다.


SquirrelMail Configuration : Read: config.php (1.4.0)

---------------------------------------------------------

Language preferences

1.  Default Language       : ko_KR

2.  Default Charset        : EUC-KR

3.  Enable lossy encoding  : false


모든 셋팅이 완료 되었다면 S를 눌러 꼭 저장해야 합니다.

위에서 한글 언어를 지정했기 때문에 한글 패치를 꼭 해주어야 합니다.

패치작업은 아주 간단하며 처음에 받은 ko_KR-1.4.6 한글 언어팩을 이용합니다.


# mkdir ko_KR

# tar zxvf ko_KR-1.4.6rc1-20051212.tar.gz directory=./ko_KR

# cd ko_KR

# ./install

Please enter path to your squirrelmail installation: [다람쥐메일 설치 경로]


이제 다람쥐 메일을 웹상에서 볼 수 있도록 해당 폴더를 심볼릭 링크로 걸어준후 apache httpd.conf 또는 vhost.conf 파일을 수정합니다..


# ln
s /usr/local/squirrelmail-1.4.5 /home/7strike/wwwhome/webmail

# vi /usr/local/apache/conf/httpd.conf


-
해당 폴더에 연결 될 수 있도록 Config 수정.

웹상에서 다람쥐 메일 셋팅이 정상적으로 되었는지 확인해 보아야 합니다.

http://도메인/src/configtest.php

특별하게 에러나는 부분이 없다면, 바로 메인 페이지로 이동 합니다.

http://도메인/iindex.php

해당 메일에 접속 후 메일 송수신을 확인해 봅니다.


Sendmail을 이용하여 메일을 받을 경우 아래와 같이 셋팅하여야 합니다.

/etc/mail/local-host-names 파일에 웹메일에 사용될 메일 레코드 값을 등록한다.

/etc/mail/sednmail.cf 파일 내용중 DaemonPortOptions= Port=smtp, Addr=127.0.0.1, Name=MTA 이 부분을 찾아서 Addr=127.0.0.1을 삭제하면 외부 메일 수신이 됩니다.

만약 sendmail.cf 파일 수정이 어렵다면 sendmail.mc 파일을 열어 DaemonPortOptions

부분을 찾은후 앞부분에 dnl 을 입력한 후 아래 명령어를 통하여 재생성 하여 주면 됩니다.

# m4 /etc/mail/sendmail.mc > sendmail.cf


-
-

신고

댓글 0개가 달렸습니다.