이메일발송포트사용제한 Ubuntu - Postfix 사용설명서 OS Mail Server 작성기준 ( 최적화버전) Ubuntu 8.10 Postfix 2. 5. 5 유사 버전 Ubuntu 6 ~ Ubuntu 9.04 기타 Unix/ Linux Postfix 2.3 ~ Postfix 2.5 Postfix 2.3버전이상으로 원하므로 SMTP-AUTH를지 Postfix 2.3버전미만의경우버전업 그레이드를해야함. 방송통신위원회 한국인터넷진흥원
목 차 1. 개요 1 2. 전환절차 2 3. 전환세부절차 3 STEP 1 메일버전확인 3 STEP 2 openssl 확인및설치 4 STEP 3 Cyrus-SASL 설치 8 STEP 4 postfix 재설치 14 STEP 5 STARTTLS 설치여부판단 10 STEP 6 사설인증서생성 15 STEP 7 STARTTLS 설치 17 STEP 8 SMTP-AUTH 설정 18 STEP 9 pwcheck 인증모듈설치 19 STEP 10 Submission 추가 21 STEP 11 동작확인 22 4. TEST 메일발송 23
1. 개요 o 초고속인터넷가입자대상 ISP 네트워크에서 25포트차단 o 정상적인사용자의메일전송을위한사용자인증기능을추가한 587 포트제공 o 사용자계정정보탈취를방지하기위한 SSL/TLS 통신채널구성 악성코드에의한스팸발송( 봇넷발스팸) 을차단하기위해서는 인터넷서비스제공자(ISP) 의네트워크장비에서초고속인터넷가입 자대상으로메일전송포트인 25 포트(SMTP) 를차단하게된다. 차 단시스패머의스팸메일과정상이용자의정상메일또한같이차 단된다. 따라서정상적인사용자의메일전송을위해서는메일서버에서 대체포트인 587 포트(Submission) 를추가로제공해주어야한다. 단순히대체포트만제공해주어서는스패머역시 전송이가능하므로메일서버의 하여스패머가 587포트로메일 587포트에사용자인증기능을설정 587 포트를통한스팸발송을하지못하도록한다. 또한네트워크상도청을통한사용자의계정정보탈취가우려 되므로이를위해 SSL/TLS 통신채널을구성을권장한다. - 1 -
2. 전환절차 [ 587 포트전환절차도 ] - 2 -
3. 전환상세절차 STEP 1 메일버전확인 기존에설치된메일서버의버전확인을위해 postfix -v" 명령어를입력하 여버전을확인한다. 2.3 버전이하의경우 STEP 4 단계의업데이트를한다. - 3 -
STEP 2 openssl 확인및설치 Cyrus - SASL2 Library의경우 openssl 0.9 openssl 0.9 버전이하의경우는설치를하여야한다. 버전에적용되기때문에 dpkg -l grep ssl" 명령어를입력하여 openssl 의버전을확인한다. 검색결과파일이없을경우 openssl 을다운로드하여설치한다. wget http://www.openssl.org/source/openssl-0.9.7c.tar.gz" 를입력한다. - 4 -
다운로드디렉터리로이동후 tar zxvf openssl-0.9.7c.tar.gz" 명령어로압 축을해제한다. cd openssl-0.9.7c" 를입력하여소스디렉터리로이동후./config shared" 명령어로컴파일설정을한다. - 5 -
"make && make install" 명령어로컴파일및설치한다. "export PATH=/usr/local/ssl/bin:/$PATH" 를입력하여 path 설정을한다. /usr/local/ss/bin은새로설치된 openssl의실행파일이위치한디렉터리이다. - 6 -
"export LD_LIBRARY_PATH=/usr/local/ssl/lib:$LD_LIBRARY_PATH" 를입력 하여라이브러리 path 역시설정한다. /usr/local/ssl/lib는설치된 openssl의라이브러리파일이위치한디렉터리이다. "openssl version" 명령어를입력하여설치한버전이맞는지확인한다. - 7 -
STEP 3 Cyrus-SASL 설치 wget --passive-ftp ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl- 2.1.23.tar.gz" 를입력하여다운로드한다. tar zxvf cyrus-sasl-2.1.23.tar.gz" 명령어로압축을해제한다. - 8 -
"cd cyrus-sasl-2.1.23" 명령어로소스디렉터리로이동후컴파일옵션을설정한다. 다음을입력한다../configure --disable-anon --enable-plain --enable-login --disable-krb 4 --with-saslauthd=/var/run/saslauthd --with-pam --with-openssl=/usr/lo cal/ssl --with-plugindir=/usr/local/lib/sasl2 --disable-cram --disable-dige st --disable-otp" /var/run/saslauthd : saslauthd 실행시임시파일들이생성될디렉터리 /usr/local/ssl : ssl이설치된디렉터리 /usr/local/lib/sasl2 : cyrus-sasl2 라이브러리가설치된디렉터리 "make && make install" 명령어로컴파일및설치한다. - 9 -
"saslauthd -v" 를입력하여버전을확인한다. - 10 -
STEP 4 Postfix 재설치 wget http://postfix.psshee.com/pub/official/postfix-2.6.2.tar.gz" 를입력하 여 postfix 2.6.2 버전을다운로드한다. tar zxvf postfix-2.6.2.tar.gz" 명령어를입력하여압축을해제한다. - 11 -
useradd postfix", "groupadd postdrop" 을입력한다. 이전버전 postfix가설 치되어있다면이미있는사용자라고나올수도있다. make && make install" 명령어로설치및컴파일한다. - 12 -
postfix -v " 명령어로버전을확인한다. 2.6.2 버전이제대로설치되었다. - 13 -
STEP 5 STARTTLS 설치여부판단 SMTP-AUTH를통한인증을구현시사용자아이디와패스워드를암호화 되지않고전송이된다면사용자정보의노출위험이있으므로이를보완하 기위해서는이메일서버와클라이언트사이의통신에 SSL/TLS 통신채널 을제공하는 STARTTLS (STARTTLS는 RFC2487에정의된 SMTP 프로토콜 의확장으로 SSL/TLS 채널을이용해이메일전송을암호화하는방법임) 패 키지를설치하여사용자정보노출을최소화해야한다. SSL/TLS 통신채널구성을위해서는 SSL인증서가필요하며이런 SSL인증 서는인증기관(CA) 의 SSL서버인증서를정식으로발급받거나개인이사설SS L 인증서를생성하는방법이있다. SSL 인증기관(CA) 에정식으로 SSL 서버 인증서를발급받고자하는경우한국정보인증 (www.signgate.com), 한국 전자인증(gca.crosscert.com) 등인증기관(CA) 의인증을대행해주는곳에 서연일정수수료를지불하여신청하면된다. 정식으로인증서발급후 STEP 4 부터진행하면된다. 무료로사설 SSL인 증서의생성을원하시는경우(CASE 1) SETP 6 ~ STEP 11을진행하면되 고인증서가기존에있는경우(CASE 2) STEP 7 부터진행하면된다. 혹은 SSL 채널구성을하지않을경우(CASE 3) 는 STEP 9 부터진행하면된다. 사설SSL인증서사용시사용자가메일서버를접속할할때마다 신뢰할 수없는인증서 라는메시지표시 - 14 -
STEP 6 사설인증서생성 mkdir /etc/postfix/ssl" 로사설인증서를저장할디렉터리를생성하고 "cd /etc/postfix/ssl" 명령어로만들어진디렉터리로이동한다. "openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024" 명령어를입력한다. Enter PEM pass phrase for smtpd.key: 에는사설인증서생성을위해임시패스워드를입력한다. csr파일등생성시동일하게입력해야하므로기억해둔다. openssl req -new -key smtpd.key -out smtpd.csr" 을입력한다. - 15 -
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt" 를입력한다. "openssl rsa -in smtpd.key -out smtpd.key.unencrypted" 를입력한다. mv -f smtpd.key.unencrypted smtpd.key" 를입력한다. openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out ca cert.pem -days 3650" 을입력한다. - 16 -
STEP 7 STARTTLS 설치 STARTTLS 를활성화하기위해아래명령어들을입력한다. /etc/postfix/ssl/ 은 다. 사용자에맞게디렉터리를설정한다. STEP6에서만든사설인증서가위치한디렉터리이 postfix 를재시작하고 가활성화된것을확인한다. "telnet localhost 25" 명령어를입력한후 STARTTLS - 17 -
STEP 8 SMTP-AUTH 설정 SASL(Simple Authentication and Security Layer) 은 RFC2222에정의된프 로토콜로서, 이를구현한다양한라이브러리가메일서버에서 SMTP AUTH기 능을구현하기위해널리사용되고있다. 인증용 SASL 라이브러리는 PLAI N, LOGIN, ANONYMOUS, DIGEST MD5, CRAM MD5, OTP, KERVEROS V 4, GSSAPI 등의여러가지인증방법을제공하지만 Outlook Express, Thun derbird등대부분의이메일클라이언트에서는현재 LOGIN과 PLAIN 두개의 인증방법만을지원하고있다. 따라서 LOGIN과 PLAIN을사용하여인증절차 를사용해야한다. 본메뉴얼에서는 SASL를구현한대표적인라이브러리인 Cyrus-SASL 을설치하는것으로설명한다. SMTP - AUTH 설정을위해아래명령어들을입력한다. - 18 -
STEP 9 pwcheck 인증모듈설치 AUTH LOGIN을하기위해서는 pwcheck등과같은패스워드인증모듈을 사용해야된다. postfix에서는 saslauthd를많이사용하므로본매뉴얼에서는 saslauthd 기준으로설치를한다. 기존에 SMTP-AUTH check 그램에맞는설정을해야한다. 프로그램을쓰는메일서버의경우각프로 saslauthd 설정을위해 vi /usr/lib/sasl2/smtpd.conf" 를입력한다. /usr/lib/sasl2/ 는 cyrus-sasl2 라이브러리가위치한디렉터리이다. 파일에다음내용을기록한다. - 19 -
mkdir -p /var/spool/postfix/etc" 로디렉터리를생성하고 cd /etc" 를입력한다. "cp localtime services hosts resolv.conf /var/spool/postfix/etc/ 를입력하여파일들을복사한다. 다음을차례대로입력한다. mkdir -p /var/spool/postfix/var/run" "mv -f /var/run/saslauthd/ /var/spool/postfix/var/run/" "chmod 755 /var/spool/postfix/var/run/saslauthd/" "ln -s /var/spool/postfix/var/run/saslauthd/ /var/run/saslauthd" - 20 -
STEP 10 submission 추가 "cd /etc/postfix" 를입력한후 "vi master.cf 를입력하여설정파일을편집한 다. 편집후상태는다음과같다. submission의주석을해제하고알맞은옵션을추가한다. - 21 -
STEP 11 동작확인 postfix 와 saslauthd 를재시작한후동작확인을한다. telnet localhost 25" 명령어를입력한후 ehlo 도메인" 을입력한다. 250-STARTTLS 은 SSL 채널구성이된경우, 250 AUTH LOGIN PLAIN 은 SMTP-AUTH 가된경우나온다. 두가지중하나라도안되는경우는처 음부터다시확인을해야한다. telnet localhost 587" 명령어를입력한후 ehlo 도메인" 을 입력하여마찬 가지로확인한다. - 22 -
4. Test 메일발송 아래와같이 25번포트로메일을발송하였을경우인증이필요없이 발송이되는것을확인할수있다. 수신메일서버에서메일을확인할수있다. 간혹수신메일서버의스팸필터에필터링되는경우가있으니확인이필요하다. - 23 -
아래와같이 587번포트로메일을발송하였을경우인증절차를해야 발송이되는것을확인할수있다. 수신메일서버에서메일을확인할수있다. 간혹수신메일서버의스팸필터에필터링되는경우가있으니확인이필요하다. - 24 -