RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

나의 sendmail 셋팅을 먼저 둘러 본다.

그럼 간단하게 현재 나의 smtp 에서 smtp auth 기능이 사용이 가능한지 부터 살펴 보도록 한다. 일단 가장 간단한 방법은 또는 sendmail.cf 에서

# list of authentication mechanisms
O AuthMechanisms=LOGIN PLAIN DIGEST-MD5 CRAM-MD5

라인의 주석이 풀려 있거나 또는 해당 라인이 설정이 있는지를 확인하면 된다. 보통 RedHat 7.x 부터는 smtp auth 기능이 지원이 되지만 여기서 논하는 login 방식이 아니라 pam 인증 방식을 지원한다. 여기서는 login 방식을 지원 설명할 것이다.

일단 안되어 있다고 판단이 된다면 다음을 따라 하도록 한다. 다음은 sendamil 8.10 이상 버젼이 설치 되어 있고, libsasl 또는 cyrus-sasl package 가 설치가 되어 있는 상황에서 sendmail auth 가 안된다면 되게 하는 방법이다. 일단 /etc/mail 에 보면 sendmail.mc 라는 파일이 있을 것이다. 이 파일에 다음의 내용을 기술하도록 한다.

dnl # These are the allowed auth mechanisms. To allow relaying for a user
dnl # that uses one of them, you must set TRUST_AUTH_MECH.
define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
dnl # These are the SMTP auth mechanisms which, if used,
dnl # Sendmail will allow relaying for. 
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
위 5줄을 추가 하고
 DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
줄을 찾아서  
 DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')  으로 수정한다.

m4  sendmail.mc > sendmail.cf 로  다시 생성하면 된다. 단 주의 할것은 rpm 으로 설치를 했고 sendmail.mc 를 이용하여 sendmail.cf 를 다시 생성할 경우에는 sendmail-cf package 가 설치가 되어 있어야 한다.

일단 수정한 sendmail.mc 는 다음과 같다. 물론 조금식 틀릴수는 있지만 패키징 시에 넣은 옵션들에 따라 조금씩 차이가 날것이다.



 Hanterm - cat /etc/mail/sendmail.mc

 [root@oops mail]# cat sendmail.mc

  divert(-1)
  dnl This is the macro config file used to generate the /etc/sendmail.cf
  dnl file. If you modify thei file you will have to regenerate the
  dnl /etc/sendmail.cf by running this macro config through the m4
  dnl preprocessor:
  dnl
  dnl        m4 /etc/sendmail.mc > /etc/sendmail.cf
  dnl
  dnl You will need to have the sendmail-cf package installed for this to
  dnl work.
  include(`/usr/lib/sendmail-cf/m4/cf.m4')

 위의 라인의 path 를 주의하자. RH 7.x 의 경우에는 아마 m4 file 의 위치가
 /usr/share/sendmail-cf/m4/cf.m4 에 위치할 것이다.  나도 정확하게 기억은
 안나니 알아서 위의 경로를 확인하기 바란다.

  define(`confDEF_USER_ID',``8:12')
  OSTYPE(`linux')
  undefine(`UUCP_RELAY')
  undefine(`BITNET_RELAY')
  define(`confAUTO_REBUILD')
  dnl #
  dnl # These are the allowed auth mechanisms. To allow relaying for a user
  dnl # that uses one of them, you must set TRUST_AUTH_MECH.
  define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
  dnl # These are the SMTP auth mechanisms which, if used,
  dnl # Sendmail will allow relaying for. 
  TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
  dnl #
  define(`confTO_CONNECT', `1m')
  define(`confTRY_NULL_MX_LIST',true)
  define(`confDONT_PROBE_INTERFACES',true)
  define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
  dnl Security improvement by disallowing VRFY, EXPN
  define(`confPRIVACY_FLAGS',`authwarnings,needmailhelo,novrfy,noexpn')dnl
  FEATURE(`smrsh',`/usr/sbin/smrsh')
  FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')
  FEATURE(redirect)
  FEATURE(always_add_domain)
  FEATURE(use_cw_file)
  FEATURE(local_procmail)
  MAILER(smtp)
  MAILER(procmail)
  FEATURE(`access_db')
  FEATURE(`blacklist_recipients')
  dnl We strongly recommend to comment this one out if you want to protect
  dnl yourself from spam. However, the laptop and users on computers that do
  dnl not hav 24x7 DNS do need this.
  FEATURE(`accept_unresolvable_domains')
  dnl FEATURE(`relay_based_on_MX')
  dnl To use multiple queue feature of 8.10.x
  define(QUEUE_DIR,`/var/spool/mqueue/q*')
  dnl change Statistics file name from statistics to sendmail.st
  define(STATUS_FILE, `sendmail.st')
  dnl OOPS

 [root@oops mail]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

 위의 명령을 이용하여 sendmail.cf 를 새로 생성을 할수 있다.

 [root@oops mail]



위의 sendmail.mc 내용 다음의 명령을 실행하면 sendmail.cf 가 새로 생성이 되게 된다. 다시 주의를 하건만 m4 명령을 이용하여 sendmail.cf 를 새로 생성할 경우 sendmail-cf package 가 설치 되어 있어야 한다는 것이다. (물론 이는 rpm package 로 sendmail 이 이미 설치 되어 있는 경우이다.)

다음은 sasl 에서 auth 의 방식을 지정하도록 한다. 일단 sasl 은 libsasl 또는 cyrus-sasl 이라는 이름으로 설치가 되어 있을 것이다. 만약 이 두패키지가 설치 되어 있지 않다면 sendmail 을 처음부터 다시 설치해 줘야 한다.

일단 rpm -qa | grep Sendmail.conf 명령을 실행 하여 Sendmail.conf 를 찾아서 다음의 내용을 삽입한다.

pwcheck_method: shadow

Sendmail.conf 가 존재하지 않을 경우에는 /usr/lib/sasl 이라는 directory 가 존재하면 /usr/lib/sasl/Sendmail.conf 를 생성하여 위의 내용을 넣어주면 된다. 그리고 sendmail 을 재시작 한다. (필자가 패키징한 sendmail 을 설치하면 위의 부분이 shadow 가 아니라 pam 으로 되어 있을 것이다. 이건 다른 기능을 추가했기 때문에 pam 으로 설정을 한 것이다. 위의 것이 shadow 이든 pam 이든 크게 문제가 될 것은 없다.)

그럼 운영하는 방법에 대해서 보도록 하겠다. sendmail에서 smtp server로 사용을 하기 위해서는 /etc/mai/access 에서 해당 대역에 대하여 RELAY를 허용을 해 줘야 한다. 하지만 smtp auth 기능이 정의가 되어 있으면 access에서 설정을 할 필요 없이 (이것은 RELAY설정을 안해 줘도 된다는 뜻이지 access file에서 REJECT로 막아서는 안된다는 의미이다) client side에서 mail client에서 설정만 해 주면 된다. 그럼 Netscape Mailer와 Outlook Express에서의 설정을 보도록 하자.

  • Netscpae mailer

    Edit>Preferences>mail & Newgroups>Mail Servers

    에서 Outgoing mail server user name 에 계정유저를 적어 주고 SSL 모드는 If Possible 로 잡아 주면 된다. 물론 Plain도 가능하다. 그리고 메일을 보내면 인증 창이 뜨게 되며 여기에 계정 name과 계정 password로 login을 하면 된다.

  • Outlook Express 98

    도구>계정>메일>계정등록정보>서버>보내는 메일서버

    에서 "인증 필요"에 체크를 하고 옆의 "설정"을 클릭한후 로그온 정보에 계정 ID를 넣면 된다. 그리고 보안암호인증을 사용하여 로그온은 선택하면 안된다 ^^; Plain으로 해야 한다.

그럼 다음은 간단하게 sendmail에서 smtp auth기능이 제대로 작동을 하는지 살펴 보도록 한다. 붉은색 글자는 필자가 typing을 한 것이다.



 Hanterm - telnet localhost 25

[root@oops mail]# telnet localhost 25

 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
 220 oops.org ESMTP Sendmail 8.10.0/8.10.0; Tue, 4 Apr 2000 15:31:05 +0900  
 ehlo localhost
 250-oops.org Hello localhost [127.0.0.1], pleased to meet you
 250-ENHANCEDSTATUSCODES
 250-EXPN
 250-VERB
 250-8BITMIME
 250-SIZE
 250-DSN
 250-ONEX
 250-ETRN
 250-XUSR
 250-AUTH LOGIN PLAIN
 250 HELP
 quit
 221 2.0.0 oops.org closing connection
 Connection closed by foreign host.

 [root@oops etc]# 



위에서 흰색 굵은 글자로 AUTH LOGIN PLAIN이 나오면 Plain 방식의 login이 가능하다는 의미이다. 물론 compile시에 어떠한 방식으로 하느냐에 따라 달라 지므로 꼭 위와같은 결과가 나오리라는 법은 없지만 어떠한 형태로든 auth와 비슷한 문구는 나와야 한다는 것을 알아야 한다.

자, 그럼 실제로 sendmail auth 가 작동하는지를 테스트 하는 것은 아래의 과정으로 테스트를 할 수가 있다.



 Hanterm - telnet localhost 25

 [root@oops mail]# php -r 'echo base64_encode("user")."\n";'
 dXNlcg==

 [root@oops mail]# php -r 'echo base64_encode("password")."\n";'
 cGFzc3dvcmQ=

 [root@oops mail]# telnet localhost 25

 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
 220 work.oops.org ESMTP Sendmail 8.12.9/8.12.9; Sat, 23 Aug 2003 01:27:54 +0900
 AUTH LOGIN
 334 VXNlcm5hbWU6
 dXNlcg==
 334 UGFzc3dvcmQ6
 cGFzc3dvcmQ=
 235 2.0.0 OK Authenticated
 quit
 221 2.0.0 work.oops.org closing connection
 Connection closed by foreign host.

 [root@oops mail]#

sendmail auth 에서의 인증시 user name 과 password 는 base64 encoding 이 된 값을 이용해야 한다. 즉 위의 과정에서 처음 php 를 실행하는 것이 유저명과 패스워드의 base64 인코딩 값을 구하는 과정이며, 25번 포트로 접속을 한 부분에서 붉은색 글씨 부분이 바로 유저명과 패시워드를 입력하는 부분이다. 패스워드를 넣은 후에,

235 2.0.0 OK Authenticated

메세지가 나온다면 인증에 성공을 한 것이다.

이올린에 북마크하기
2007/04/24 17:30 2007/04/24 17:30
http://jiny.kr/trackback/55
전체 (406)
지니소식 (4)
자료실 (4)
정보|뉴스 (5)
SmartPhone (1)
Languages (206)
Server (153)
Database (27)
Design (4)
Gallery (0)
분류하기귀찬.. (2)
«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
  1. 창의력과 상상력을 넘어서  2009
    Tomcat 6.0 기본 환경 설정
  2. 닥공  2009
    서블릿 tomcat 6.0 실행시 에러
  1. 2010/07 (1)
  2. 2010/05 (1)
  3. 2010/02 (3)
  4. 2010/01 (3)
  5. 2009/05 (2)
Statistics Graph