postfix¸¦ ÀÌ¿ëÇÑ ½ºÆÔ¹× ¹ÙÀÌ·¯½º ÇÊÅ͸µ ¼­¹ö ±¸ÃàÇϱâ

   Á¶È¸ 38868   Ãßõ 3    

최근에 스팸메일때문에 잠깐 구축해본 결과를 강좌로 남깁니다. qmail로도 구성이 가능한데 qmail로 설명하려면 구축단계부터 길어질 것 같아서  
postfix로 구성한 과정을 정리해봤습니다. 강좌는 경어가 생략되어 있습니다. 자체적으로 메일서버를 운용하시는 분들은 참고해보시기 바랍니다.


회사에서 사용하는   MS Exchange Edge Server를 이용한 스팸 및 바이러스 필터링 시스템에 몇가지 부족한 부분과 수정이 안되는 문제 때문에 필터링 시스템을 Postfix로 변경하기 위해 작업을 해보았다.

MS제품군은 편리하기는 하지만 필자처럼 리눅스 환경에 익숙한 사람들에게는 자유도가 너무 부족하다...^^;

전체적인 구성도는 아래와 같다. 물론  DNS에서 MX레코드 설정을 변경하여  제일 먼저  Postfix필터서버가 메일을 받도록 설정해줘야 된다.

각각에 대한 간단한 설명은 아래와 같다.

Postfix - MTA(mail tranfer agent) 로 메일메시지를 전송하는 역할을 한다.

Amavis - 펄로 제작된 프로그램으로 외부의 스팸필터링 프로그램,백신들을 호출할 수 있도록 해준다.

ClamAV - 오픈소스 백신 프로그램으로 메일에 첨부된 바이러스를 필터링 한다.

Spamassassin - 오픈소스 스팸 필터링 프로그램으로 스팸룰과 스팸학습기능을 제공해준다.


간단히 설명하자면 외부로 부터 오는 모든 메일메시지는 제일 앞단에 위치하는  Postfix  server로 들어오고Postfix서버에 설치된  amavis 시스템을 통해 스팸과 바이러스를 필터링 한 이후 다시 최종적으로 실제 메일서버에 전달해주는 형태가 되겠다.  amavis는  다른 상용프로그램들도 연결하기가 아주 쉽다.

필자의 경우 우분투 서버를 기준으로 구성했다. 다른 배포판도  설치는 간단하니 그냥 환경설정 정도만 변경해 주면 된다.

Postfix설치 및 설정하기

sudo apt-get install postfix

postfix 설정하기

/etc/postfix/main.cf   및 /etc/postfix/master.cf  에서 설정을 해주면 된다.

main.cf 수정하기

myhostname = 스팸필터링호스트 네임을 적어준다.(ex. spamgw.abc.com)
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = 메일을 받을 도메인을 적어준다. (ex. abc.com mail.abc.com localhost)
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination

# 메일을 전송할 호스트 설정
transport_maps = hash:/etc/postfix/transport 
# 로컬 수신설정
local_recipient_maps =
# 필터링 설정
content_filter = smtp-amavis:[127.0.0.1]:10024 

아래 3라인 transport_maps,local_recipient_maps,content_filter부분은 필터링 시스템에서 가장 중요한 부분이다.

transport_maps설정

transport_maps는 /etc/postfix/transport  파일에 설정된 메일서버로 메일을 전송하는 설정이다. 따라서 스팸 필터를 모두 마치고 나서 실제 최종 메일서버로 메일을 전송하도록 설정해 줘야 한다.

아래 예제를 참고해서 /etc/postfix/transport파일을 반드시 작성하도록 한다. 192.168.30.85는 Exchange server의 IP address 이다.

mydomain.com smtp:[192.168.30.85]
abc.com      smtp:[192.168.30.20]

각각 메일 도메인에 대해서 라우팅을 설정해 주는 것이다.


로컬메일 recipient 설정

기본적으로 postfix는 계정이 존재하지 않은 메일메시지에 대해서는 모두 반송을 하게 되어있다. 스팸 필터링 서버에는 리눅스 계정이나 가상메일 계정이 존재할 필요가 없고 단순히 필터링만 하기 때문에 들어오는 모든 메일 메시지를 허용해줘야 하며 아래의 설정이 바로 그것이다. 따라서 아래의 설정이 없으면 모든 메일은 반송이 된다.

local_recipient_maps =


필터링 설정

content_filter = smtp-amavis:[127.0.0.1]:10024

필터링 엔진에 대한 설정이며 amavis에 메시지를 전달해주는 설정이다.

/etc/postfix/master.cf에 추가해준다. 아래는 smtp를 이용해서 메시지를 전달해주며  lmtp를 이용해도 된다.

smtp를 이용하는 방법

smtp-amavis unix - - - - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20

lmtp를 이용하는 방법

smtp-amavis unix - - n - 2 lmtp
-o disable_dns_lookups=yes
-o lmtp_send_xforward_command=yes
-o lmtp_data_done_timeout=1200

postfix  설정

/etc/postfix/master.cf 에 아래와 같이 추가해 준다.

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_delay_reject=no
        -o smtpd_client_restrictions=permit_mynetworks,reject
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=reject_unauth_pipelining
        -o smtpd_end_of_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
        -o smtpd_client_connection_count_limit=0
        -o smtpd_client_connection_rate_limit=0
        -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks


위의 설정까지 마무리하면 기본적인 스팸 필터링 구조는 만들어둔 것이다.

이제 실제 필터링을 하는 amavis 와 clamav,spamassassin  을 설치해 보자.

apt-get install amavisd-new spamassassin clamav-daemon
sudo adduser clamav amavis 
sudo adduser amavis clamav


설치가 되었다면 amavis  설정을 해준다.

/etc/amavis/conf.d/15-content_filter_mode 파일을 열어서  아래와 같이 주석을 제거해주자.

@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);


amavis 데몬 시작

/etc/init.d/amavis start

Postfix 재시작

/etc/init.d/postfix restart


최종 메일 서버의 설정

메일이 최종적으로 저장이 되는 메일서버는 Postfix메일서버로 부터의 연결을 허용해줘야 한다.

익스체인지 서버의 경우 수신커넥터 설정을 해주면 되고 qmail,postfix,sendmail서버의 경우 postfix필터서버를 relay를 허용해주면 된다.

잘 구성이 되었다면 메일 로그에 아래와 같이 나오게 될 것이다.

Nov 16 12:40:58 host1 amavis[21780]: (21780-07) Passed CLEAN {RelayedInbound}, 
[xxx.xxx.xxx.xxx]:41666 [xxx.xxx.xxx.xxx] <********@***.com> -> <*****@***.net>, 
Queue-ID: 6BEB2340011, Message-ID: <************************************@*********.com>, 
mail_id: U_w6o4Gmz7Mz, Hits: 1.277, size: 3983, queued_as: 7EBDD340016, 2654 ms

나머지 기타 세세한 부분들은 각자 테스트 해보기 바란다.

스팸어세신의 학습 기능을 이용한다면 저장된 스팸메일을 학습시켜서 거의 대부분의 스팸메일을 자동으로 걸러낼 수 도 있다. 그리고 clamav 뿐만 아니라 기타 상용 백신엔진들도 사용하도록 amavis 에서 제공하고 있으니 참고해 보기 바란다.


¿Õ¸Ó½¿ 2016-12
¿À Á¦°¡ ã´ø ÀÚ·á ÀÔ´Ï´Ù.  »¡¸®ÇغÁ¾ß°Ú³×¿ä
¿Õ¸Ó½¿ 2016-12
¿ìºÐÆ® ¿ëÀΰ¡¿ä?  Centos´Â amavisd-new ÆÐÅ°Áö°¡ ¾ø³×¿ä.
     
centos¿¡¼­ ¼³Ä¡ÇϽ÷Á¸é EPEL  repo¸¦ Ãß°¡ÇÏ¼Å¾ß ÇÕ´Ï´Ù.
https://fedoraproject.org/wiki/EPEL
 Âü°íÇϽñ⠹ٶø´Ï´Ù.
¿Õ¸Ó½¿ 2016-12
¾î·Æ³×¿ä ¼³Ä¡´Â Çߴµ¥.. 

Àß µ¿ÀÛ ÇÏ´ÂÁö ¾ÈÇÏ´ÂÁö Àß ¸ð¸£°Ú³×¿ä ¤¾¤¾¤½
     
¸ÞÀÏ ¼Û¼ö½Å Çغ¸¸é¼­ ·Î±× »ìÆ캸½Ã¸é µË´Ï´Ù.
¿Õ¸Ó½¿ 2016-12
º¸¾ÈÆÀ¿¡¼­ ¹ÙÀÌ·¯½º¸ÞÀÏ 5°¡Áö º¸³Â´Âµ¥ Á¦°Ç 4°³ ÆнºÇÏ³×¿ä ¤Ì¤Ì
¿Õ¸Ó½¿ 2016-12
ÀÚ²Ù ¹®ÀǸ¸ µå¸®³×¿ä...

Ȥ½Ã µµ¸ÞÀÎÀÌ 1°³ ÀÌ»óÀ϶§ ¾î¶²°É  ¼öÁ¤ÇØ¾ß ÇÏ´ÂÁö ¾Ë·ÁÁֽǼö ÀÖ³ª¿ä?
     
/etc/postfix/main.cf
¿¡¼­  mydestination º¯¼ö¿¡ ¹ÞÀ» µµ¸ÞÀÎÀ» Âß Ãß°¡ÇØÁÖ½Ã¸é µË´Ï´Ù.
          
¿Õ¸Ó½¿ 2016-12
°¨»çÇÕ´Ï´Ù


Á¦¸ñPage 17/28
2017-05   24164   turtl
2017-05   20636   turtl
2017-04   23064   Ansyncic
2017-04   16751   ÇູÁý
2017-04   33058   ä¼±ÀÏ
2017-04   15940   ¾ÈÇü°ï
2017-04   13332   ½ºÅ³¼­Æ÷Æ®
2017-03   17137   Á¦¿ÂÇÁ·Î
2017-03   37560   ¿¥ºê¸®¿À
2017-03   15068   ¾ÈÇü°ï
2017-03   21365   ÀÌÅ¿í
2017-02   22341   stone92±è°æ¹Î
2017-01   29075   Á¦¿ÂÇÁ·Î
2016-12   36373   ¹Î¿í´Ô
2016-12   29530   ´©±¼±î
2016-12   28917   ¹éµÎ¼º
2016-12   24146   QS¿ÕÅëÅ°¼Õ¡¦
2016-11   38869   stone92±è°æ¹Î
2016-11   29057   stone92±è°æ¹Î
2016-11   27626   witbox