Linux Mail

sendmail로 메일서버 구축하기

2008.05.15 00:42

sylee 조회 수:40442

Sendmail로 메일 서버 설정하기

내가 갖고 있는 도메인(hostway.co.kr)으로 내가 소유한 서버에서 메일을 보내고 받을 수 있게 설정해 보자.
제일먼저 확인해야 할 것은 도메인이 사용하는 네임서버의 zone 파일에서 mx 레코드가 내 서버의 ip로 연결되어 있어야 한다.

hostway.co.kr 도메인의 MX레코드가 아래와 같이 설정 되어있다.

                 MX      10 mail
mail            A       192.168.0.16

그럼 이제부터 192.168.0.16의 서버에서 xxx@hostway.co.kr의 주소로 들어오는 메일을 받을수 있게 설정해 보자.

* 받는 메일서버 설정

메일을 받기 위해서는 우선 pop3 데몬이 떠 있어야 한다. xinetd.d 디렉토리내에 ipop3d 를 사용한다면 별 어려움 없이 pop3데몬을 띄울수 있다.
기본적으로 제공되는 ipop3 데몬을 띄우기 위해서 /etc/xinetd.d/ipop3d 파일을 편집기로 열고 disable = yes 부분만 disable = no로 변경시키고 xinetd 데몬을 리스타트 하면 된다.

1. /etc/xinetd.d/ipop3d 파일 수정.

[root@localhost root]# cat /etc/xinetd.d/ipop3d
service pop3
{
        disable = no
        socket_type     = stream
        wait    = no
        user    = root
        server  = /usr/sbin/ipop3d
        log_on_success  += USERID
        log_on_failure  += USERID
}

2. xinetd 데몬 리스타트

[root@localhost root]# /etc/rc.d/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]

3. 110번 포트 확인

[root@localhost root]# netstat -nat | grep LISTEN | grep 110
tcp        0      0 0.0.0.0:110            0.0.0.0:*               LISTEN

4. /etc/mail/local-host-names 파일에 메일을 사용할 도메인 추가한 후 sendmail 데몬 리스타트

[root@localhost root]# cat /etc/mail/local-host-names
hostway.co.kr
[root@localhost root]# /etc/rc.d/init.d/sendmail restart
Shutting down sendmail:                                    [  OK  ]
Shutting down sm-client:                                   [  OK  ]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]

이상의 설정만 하면 메일을 받을수 있게 된다. useradd명령으로 계정을 추가하고 메일을 사용하면 된다.


* 보내는 메일서버 설정

위의 설정은 메일을 받기만 할수 있도록 설정한 것이다.
내 서버(192.168.0.16) 에서 메일을 보낼수 있도록 설정을 하는것 역시 별 어려움 없이 할수 있다.
sendmail 설정파일(/etc/sendmail.cf)에는 기본적으로 smtp가 닫혀 있도록 설정이 되어 있다.
smtp를 열어놓기 위해서는 sendmail.cf 파일에서 한줄만 수정하면 된다.

1. sendmail.cf 수정

sendmail.cf 파일에서 아래부분을 찾아 주석(#)을 제거하고 sendmail을 리스타트 하면 smtp가 열리게 된다. 그런데 아래에서 주석만 제거할 경우는 localhost, 즉 서버내에서만 mail command로 메일을 발송할수 있고 원격에서 아웃룩 등으로 연결해서 사용할수가 없게 된다. 아웃룩 등으로 서버에 접속해서 메일을 보낼수 있게 설정하려면 Addr=127.0.0.1 부분을 삭제 하면 된다.

#O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
--->  O DaemonPortOptions=Port=smtp, Name=MTA  (수정)

2. sendmail 리스타트

[root@localhost root]# /etc/rc.d/init.d/sendmail restart
Shutting down sendmail:                                    [  OK  ]
Shutting down sm-client:                                   [  OK  ]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]

"Addr=127.0.0.1"을 삭제하지 않고 localhost만 smtp가 열렸을때는 아래와 같이 127.0.0.1의 주소에 대해서만 LISTEN 된다.
[root@localhost mail]# netstat -nat | grep LISTEN | grep 25
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN

"Addr=127.0.0.1"을 삭제하여 smtp가 완전히 열렸을때는 아래와 같이 모든주소(0.0.0.0)에 대해서 LISTEN 된다.
[root@localhost mail]# netstat -nat | grep LISTEN | grep 25
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN

위와 같이 smtp가 완전히 허용된 경우, 아웃룩등의 메일 클라이언트 프로그램을 이용해서 메일을 발송할 수 있게 된다.
그런데 위와 같이 smtp를 열어놓을 경우는 어디에서나 smtp를 이용할수 있게 되기 때문에 spam 메일이 릴레이가 될 가능성이 높다.
spam 릴레이를 방지하기 위해서 서버내에 존재하는 계정으로 인증을 거쳐서 메일을 발송하도록, auth-smtp설정을 하면 된다.
이 또한 간단하게 수정이 가능하다.
sendmail.cf 파일에서 MD5 가 들어가는줄을 찾아서 주석을 제거해 주면 서버내에 존재하는 계정으로 인증을 거쳐야만 메일을 발송할 수 있도록 설정된다.

3. auth-smtp 설정

#O AuthMechanisms=GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
---> O AuthMechanisms=GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5

sendmail.cf를 수정했을 경우는 반드시 sendmail 데몬을 리스타트 해야 적용되게 된다. 마찬가지로, auth-smtp 설정을 했을때도 sendmail데몬을 리스타트 하면 적용되게 된다.
auth-smtp를 설정한 경우는 아웃룩을 사용할때, 보내는 서버의 "인증 필요" 부분을 체크하고 사용하면 된다.




* 보내는 메일 서버 설정시 sendmail.cf 파일을 수정하지 않고 /etc/mail/sendmail.mc 파일을 이용해서 sendmail.cf 파일을 새로 생성해서 사용할 수도 있다.  sendmail.cf 파일을 수정해서 sendmail을 재 구동했을때, 정상적으로 동작하지 않는다면 아래의 방법을 이용해 보기 바란다.

/etc/sendmail.cf 파일을 /etc/sendmail.cf.old로 변경해 놓고 작업을 시작한다.

1. /etc/mail/sendmail.mc에서 아래와 같이 수정한다.

  - auth-smtp 설정부분

dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
-> TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl    (앞의 dnl 삭제)

dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
-> define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl   (앞의 dnl 삭제)

- mail 릴레이 설정 부분

dnl # DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
-> DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl      (주석 제거 및 Addr 부분 수정)


2. m4 명령으로 sendmail.cf 파일 다시 생성한다.

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

3. sendmail 리스타트

[root@localhost root]# /etc/rc.d/init.d/sendmail restart
Shutting down sendmail:                                    [  OK  ]
Shutting down sm-client:                                   [  OK  ]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]

마지막으로 auth-smtp 설정을 했을때 saslauthd 데몬이 떠 있는지를 확인해 보아야 한다.
saslauthd 데몬이 떠 있지 않으면, SMTP 인증이 되지 않아 계속 인증 확인창이 뜨게된다.
ntsysv 명령을 실행시켜 saslauthd 항목을 찾아 자동시작 데몬으로 체크하고 saslauthd 데몬을 띄우면, 모든 작업이 완료되게 된다. redhat 7.3 버전의 경우는 saslsuthd 데몬이 존재하지 않으며, 띄우지 않아도 된다.
번호 제목 글쓴이 날짜 조회 수
34 php에서 mail(); 함수가 정상적으로 구동중인지 확인 방법 hostway 2008.05.14 26801
» sendmail로 메일서버 구축하기 sylee 2008.05.15 40442
32 sendmail 설정 tip 호스트웨이 2008.05.19 27549
31 메일 발송시 host name lookup failure 에러 sylee 2008.05.20 32235
30 아웃룩에서 발생될 수 있는 에러 메세지 jook 2008.05.21 33663
29 메일 발송시 리턴 에러 메세지들 sylee 2008.12.03 29744
28 다람쥐메일(squirrelmail) 사용하기 jook 2009.04.09 29342
27 sendmail + dovecot 메일 서버 구성 HOSTWAY 2009.05.12 23807
26 spamassassin 필터 설치하기 HOSTWAY 2009.05.12 21356
25 clamav antivirus + milter 구성 HOSTWAY 2009.05.12 54284
24 debian(ubuntu) postfix 메일 서버 설정 HOSTWAY 2009.05.12 27765
23 qmail + vpopmail + mysql 설치 HOSTWAY 2009.05.12 21879
22 sendmail 기반의 email 계정 생성 및 추가 하기 sylee 2009.06.20 36986
21 Dovecot Time moved backwards error jook 2009.06.29 19570
20 dovecot 에러 예제 호스트웨이 2012.03.27 15363
19 ClamAV 백신 설치하기 호스트웨이 2012.05.11 12643
18 Exim 메일 큐 지우기 호스트웨이 2012.05.25 12266
17 Sendmail Queue에 쌓인 메일 강제 발송 호스트웨이 2012.06.15 23218
16 Dovecot에서 “Error indexing mbox file (LF not found)” 에러 발생시 해결 방법 호스트웨이 2012.06.29 14319
15 리눅스에서 /etc/aliases 를 이용하여 같은메일 여러 사용자가 수신 호스트웨이 2012.07.27 14598