2012. 3. 2. 10:14

sendmail + dovecot 메일 서버 구성

1. 패키지 설치
yum -y install dovecot
yum -y install cyrus-sasl

2. MTA 구성
/etc/mail/sendmail.mc 파일에서 아래 내용을 수정

#주석제거
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

#아래부분은 dnl 처리
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
또는 0.0.0.0 으로 수정

DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

3. cf 파일로 반영
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
만일 cannot open `/usr/share/sendmail-cf/m4/cf.m4': No such file or directory 와 같은 오류가 발생하면
sendmail-cf 패키지를 설치해준다.
yum install sendmail-cf 

4. 메일 사용 도메인 등록
/etc/mail/local-host-names 파일에 사용할 도메인 기재

5. 필요한 경우 virtusertable 에 계정별 메일주소 할당
/etc/mail/virtusertable 에 메일주소 + 계정 또는 포워딩 주소 할당
makemap hash virtusertable.db < virtusertable 실행

6.  sendmail 재시작

7. dovecot 설정

vi /etc/dovecot.conf
protocols = imap pop3 #필요한 서비스 기재

## conf.d/ 에 설정파일이 추가로 있을 경우
10-auth.conf 에 
disable_plaintext_auth = no
로 수정해야 plaintext 로 로그인 가능해짐

##mbox 관련
/etc/dovecot/conf.d/10-mail.conf 파일을 확인해보면 mail_location 부분이 주석처리 되어 있음
mail_location = mbox:~/mail:INBOX=/var/mail/%u
라고 하면 계정 밑에 mail 이라는 디렉토리가 필요하고, 받은 메일 내용은 /var/mail/사용자아이디에 저장된다는 내용

## telnet 로 dovecot 로그인 시 mkdir 퍼미션 오류날때.
chmod 0600 /var/spool/mail/*


8. dovecot, saslauthd 재시작 


9. AUTH적용 확인
telnet localhost 25
ehlo localhost

#결과중에 아래 내용이 있는지 확인
250-AUTH LOGIN PLAIN


10. 접속관련 설정

릴레이 및 수신관련 설정을 /etc/mail/access 파일로 한다.

아래와 같은 형태로 설정한다.

[태그:]도메인/아이피/메일주소       옵션


태그

- Connect: 주소 또는 도메인
- From : 송신자 주소
- To : 수신자 주소


옵션

- OK(모든 것을 허용(Relay)한다.)
- RELAY(관련메일의 수신/발신을 허용한다.)
- REJECT(관련메일의 수신/발신을 거부한다.)
- DISCARD (/etc/sendmail.cf에 지정된 $#discard mailer에 지정된 곳으로 메일을 폐기), 폐기하지만 아무런 오류메세지도 발생하지 않음(정상처리된 것처럼 인식)

- ??? message : ??? 는 3글자의 RFC821 에 정의된 리턴코드를 사용할 수 있고
                     message 는 오류메세지를 임의로 설정할 수 있다.
                     예) 500 오류메세지 입니다.

예) 특정아이피 릴레이 허용
Connect:127.0.0.1           RELAY

예) 특정메일주소 수신거부
TO:aaaa@aaa.com          DISCARD   #아무 오류메세지 뜨지 않음, 정상수신된것 처럼 인식
TO:aaaa@aaa.com          REJECT      # 수신오류 발생


# RFC 821 응답코드

211 System status, or system help reply
214 Help message
   [Information on how to use the receiver or the meaning of a
   particular non-standard command; this reply is useful only
   to the human user]
220 <domain> Service ready
221 <domain> Service closing transmission channel
250 Requested mail action okay, completed
251 User not local; will forward to <forward-path>
 
354 Start mail input; end with <CRLF>.<CRLF>
 
421 <domain> Service not available,
    closing transmission channel
   [This may be a reply to any command if the service knows it
   must shut down]
450 Requested mail action not taken: mailbox unavailable
   [E.g., mailbox busy]
451 Requested action aborted: local error in processing
452 Requested action not taken: insufficient system storage
 
500 Syntax error, command unrecognized
   [This may include errors such as command line too long]
501 Syntax error in parameters or arguments
502 Command not implemented
503 Bad sequence of commands
504 Command parameter not implemented
550 Requested action not taken: mailbox unavailable
   [E.g., mailbox not found, no access]
551 User not local; please try <forward-path>
552 Requested mail action aborted: exceeded storage allocation
553 Requested action not taken: mailbox name not allowed
   [E.g., mailbox syntax incorrect]
554 Transaction failed