본문 바로가기
리눅스(Linux)/리눅스 서버 작업

서버 작업 기록 - 4. 메일 서버 구축

by freezkim 2010. 2. 2.
메일을 주고 받을 수 있는 서비스인 SMTP를 구축하여, 자신만의 메일 도메인을 만들 수 있다.

사용 서비스 : Sendmail

1. Sendmail 및 dovecot 서비스 다운
 (yum install sendmail sendmail-cf dovecot)

2. 메일 서버 이름 설정
 1)  vi /etc/hosts
      서버ip주소    사용할 메일 서버 이름 추가
       ex)  143.248.xx.xx      abc.com
 2) vi /etc/mail/local-host-names 에 사용할 메일 서버 이름 추가
       ex) abc.com

3. 네트워크 서비스를 재가동 한다.
   service network restart

4. sendmail의 환경설정을 한다.
 1) vi /etc/mail/sendmail.cf 로 수정
  - Cwlocalhost   -> Cw메일서버이름 (반드시 붙여서!!!)
     ex) Cwlocalhost -> Cwabc.com
  - O DaemonPortOptions=Port=smtp, Addr = 127.0.0.1 , Name=MTA
    -> Addr = 127.0.0.1 부분만 삭제,
 
5. 외부 네트워크가 메일을 보낼 수 있게 허가해 줌.
 1) vi /etc/mail/access
   ' 외부 도메인(혹은 ip)    RELAY' 형식으로 추가함.
    ex) 143.248.xxx      RELAY
 2) makemap hash /etc/mail/access < /etc/mail/access 라고 터미널에 쳐서 RELAY를 적용시킴.

6. dovecot의 환경설정을 한다.
 1) vi /etc/dovecot.conf
   (1) 프로토콜 부분의 주석(#) 제거 (29행 쯤) 다음과 같이 되도록 수정
      protocol imap {
           listen = *:10143
           ssl_listen = *:10943
         }
      protocol pop3 {
           listen = *:10100
         }
     protocol managesieve {
           listen = *:12000
         }
    listen = *, [::]
   (2) 89행에 ssl사용 허가
      ssl =yes
   (3) 149행
      login_user = dovecot
   (4) 540행 쯤 imap세팅, 주석 제거
      login_executable = /usr/libexec/dovecot/imap-login
      mail_executable = /usr/libexec/dovecot/imap
   (5) 610행 쯤 pop3 세팅, 주석제거
      login_executable = /usr/libexec/dovecot/pop3-login
      mail_executable = /usr/libexec/dovecot/pop3
   (6) 780행 쯤, 주석제거
      auth_executable = /usr/libexec/dovecot/dovecot-auth

 7. 방화벽 제거
   25, 110, 143, 995, 993번 포트를 열어준다.

 8. 서버에 등록한 사용자 계정이 메일 계정으로 자동 등록된다.
   윈도우 outlook express나 리눅스 에볼루션으로 메일이 등록되었는지 테스트 해본다.
   에볼루션의 경우 다음과 같이 설정한다.
   (1) 신상정보 창에 전자메일 주소를 입력한다.
        이때 전자메일 주소는 리눅스에 등록된 "사용자 계정@서버메일주소" 가 된다.
          ex) kim@abc.com
   (2) 메일을 받음 창에서는 서버 종류를 pop으로 선택, 호스트는 서버 메일 주소, 사용자는 계정이름
         인증방법은 암호로 설정한다.
   (3) 메일을 보냄 창에서는 서버 종류를 SMTP로 선택하고, 호스트에 서버메일 주소를 입력한다.
   (4) 에볼루션 실행창이 뜨면 파일->온라인 작업을 선택한 후, naver나 daum 등의 이메일 주소로 편지를 발송해본다.
   (5) '보내고 받기'를 클릭하여 계정 암호를 친다. 편지가 전송되었을 것이다.
   (6) 네이버나 다음에서 사용자계정@서버메일주소로 편지를 발송한다.
   (7) 에볼루션을 실행한 후, 보내고 받기를 클릭한다. 편지가 와 있을 것이다.

9. 현재 문제:
  메일을 보낼 때, server에서 보안을 하지 않고 바로 SMTP로 작동하고 있다. 스팸메일의 유포지가 될 가능성이 있다고 함.
  따라서 보안이 필요.
  하지만 RELAY에서 외부 네트워크가 이 서버에서 메일을 발송하지 못하도록 되어 있는데 스팸 뿌릴수 있나?....
  잘 모르겠음 괜찮을듯.....???ㄷ
       

메일 계정만 등록할 때

-> [root@mail root]# useradd -M -s /bin/false 추가할계정
                                 passwd 추가할계정


10. 추가적으로 생긴 문제와 해결법.

외부에서 outlook express를 통해 메일접속을 할 때 서버에서 오류가 나는 것을 확인할 수 있었다.
이는 linux서버에서 local접속이 아닌 외부 접속을 제한했기 때문에 생긴 오류인 것으로 확인 되었다.

2가지 단계를 거처 문제를 해결하였다.

1) sendmail.mc 수정
2) saslauthd 서비스 문제

1) sendmail.mc 수정
   (1) DAEMON_OPTION('Port=smtp,Addr=127.0.0.1,Name... )
        -> Addr부분을 0.0.0.0 으로 바꾼다.
   (2) dnl TRUST_AUTH_MECH('EXTERNAL DIGEST....
         dnl define('confAUTH_MECHNISMS',..
        -> 앞의 dnl을 삭제한다. 외부에서 SMTP 인증기능 사용하게 됨.
   (3) m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 로 적용하기

2) service saslauthd start
    chkconfig saslauthd
    로 saslauthd 서비스를 시작하고, 부팅마다 시작되도록 한다.