본문 바로가기
os/Linux

[실습] mail 서버 구축

by #moonyz 2014. 10. 28.

1. 이전버전 체크 + 실행파일 생성


우선 sendmail 이 설치되어있는지 확인해보고 있으면 지워주자

[root@server103 ~]# rpm -qa | grep sendmail

sendmail-8.13.4-2

[root@server103 ~]# rpm -e --nodeps sendmail-8.13.4-2 (--nodeps: 의존성 무시하고 지우라는 옵션 추가)


지웠으면 이제 sendmail 소스를 다운


[root@server103 ~]# mkdir -p /usr/local/sendmail

[root@server103 ~]# cd /usr/local/sendmail

[root@server103 sendmail]# wgethttp://pkgs.fedoraproject.org/repo/pkgs/sendmail/sendmail.8.14.0.tar.gz/bc0dee396b8090b3f696e748a9caf83d/sendmail.8.14.0.tar.gz

[root@server103 sendmail]# tar zxvf sendmail.8.14.0.tar.gz

[root@server103 sendmail]# cd sendmail-8.14.0/

[root@server103 sendmail]# make

[root@server103 sendmail]# make install


make install 할때 에러가 뜨는 걸 확인 할 수 있다.

install: cannot create regular file `/usr/man/man5/aliases.5': No such file or directory

install: cannot create regular file `/usr/man/man8/editmap.8': No such file or directory

install: cannot create regular file `/usr/man/man1/vacation.1': No such file or directory


그래서 필요한 디렉토리를 만들고 다시 make install 하기

[root@server103 sendmail-8.14.0]# mkdir -p /usr/man/man{1,5,8}

[root@server103 sendmail-8.14.0]# make install

에러 없이 설치되었으면 다음스텝으로 넘어가기




2. Sendmail 설정파일 생성


압축푼 폴더에서 INSTALL를 읽어보면

cf/cf 디렉토리에 가서 내 환경에 맞는 .mc파일을 sendmail.mc로 바꾼 후, sh Build sendmail.cf 명령어를 실행하라고 한다.

또한 압축 푼 폴더에서의 README랑 cf 디렉토리안의 README를 읽어보면,

Sendmail소스의 configuration files 는 cf고, cf 디렉토리 안에 있으며 .mc로 끝나는 파일이라고.

.mc 파일들이 여러종류가 있는데 지금 사용하고 있는 OS에 맞는 generic-*.mc를 사용하면 된다

나는 OS=Linux 이니까 generic-linux.mc를 사용 하면 될듯.

그다음 cf/cf디렉토리에서 sh Build install-cf 명령어를 이용해서 sendmail.cf를 인스톨, 

이때 sendmail.cf가 /etc/mail로 이동한다.


그럼 따라해봅시다.


[root@server103 sendmail-8.14.0]# cd cf/cf

[root@server103 cf]# ll --> 하면 .mc 파일들이 촤라락 보일거임. 거기서 우리는 generic-linux.mc

[root@server103 cf]# mv generic-linux.mc sendmail.mc

[root@server103 cf]# sh Build sendmail.cf


[root@server103 cf]# cd /etc/mail

[root@server103 mail]# ll

total 60

-r--r--r--  1 bin  bin   5594 Dec  4 15:59 helpfile

drwxr-xr-x  2 root root  4096 Dec  2 12:55 spamassassin

-rw-------  1 root bin      0 Dec  4 15:59 statistics

-r--r--r--  1 root bin  41354 Dec  4 15:56 submit.cf

(아직 install 하기 전이라서 /etc/mail 에서 sendmail.cf가 보이지 않는걸 알 수 있다.)


[root@server103 mail]# cd /usr/local/sendmail/sendmail-8.14.0/cf/cf

[root@server103 cf]# sh Build install-cf

Using M4=/usr/bin/m4

../../devtools/bin/install.sh -c -o root -g bin -m 0444 sendmail.cf /etc/mail/sendmail.cf

../../devtools/bin/install.sh -c -o root -g bin -m 0444 submit.cf /etc/mail/submit.cf

[root@server103 cf]# cd /etc/mail

[root@server103 mail]# ll

total 104

-r--r--r--  1 bin  bin   5594 Dec  4 15:59 helpfile

-r--r--r--  1 root bin  41509 Dec  4 16:17 sendmail.cf

drwxr-xr-x  2 root root  4096 Dec  2 12:55 spamassassin

-rw-------  1 root bin      0 Dec  4 15:59 statistics

-r--r--r--  1 root bin  41354 Dec  4 16:17 submit.cf

(install 후 /etc/mail 에서 sendmail.cf가 생긴걸 확인할 수 있음)




3. Sendmail 기타 설정파일 설정하기


1. access - sendmail의 접근을 제어하는 파일, 호스트나 도메인, 아이피, 이메일주소를 쓰고 이것을 허용하겠다면 RELAY,             

허용하지 않겠다고 하면 REJECT를 쓰면 된다. 특정 도메인의 스팸메일 차단하는데 쓰면 좋겠네.


[root@server103 mail]# vi access

자기ip주소 RELAY

127.0.0.1 RELAY

localhost RELAY

localhost.localdomain RELAY

적어주고 저장 (근데 이것들 안써도 되긴 하더이다.)

(적는 방법 더 자세히 알고 싶으면 cf/cf/ 에서 line 2509부터 읽어보쇼)


이것은 databse 즉 db파일이어야 하기 때문에 이렇게 텍스트로 적어논 파일을 db파일로 바꿔줘야한다.

makemap hash /etc/mail/access < /etc/mail/access 이런식으로 바꿔줄수 있다.


[root@server103 mail]# makemap hash access < access

[root@server103 mail]# ls access.db

access.db << 이렇게 생성이 되어야 함!!



2. aliases - 특정 계정으로 메일을 보냈을 경우 그 계정으로 메일이 도착하지 않고, 이 파일에 지정된 다른 계정으로 

메일이 전송될 수 있게 함. 즉, 특정 사용자에게 온 메일을 다른사람에게 보내준다거나, 메일링리스트를 작성해야 하는 경우에 사용되는 파일이라고 함


[root@server103 mail]# vi aliases

webmaster: root 적어주고 저장


역시 aliases.db 파일을 생성해줘야하니까. 

(이때 makamap hash aliases < aliases 하면 db파일 생성 되긴 하던데,,,, 왜 newaliases로 하는지는 모르겠다 ㅠㅠ)


[root@server103 mail]# newaliases

/etc/mail/sendmail.cf: line 73: fileclass: cannot open '/etc/mail/local-host-names': No such file or directory

can not chdir(/var/spool/mqueue/): No such file or directory

이런 에러가 뜨니까 없으면 만들어줘야지


[root@server103 mail]# touch local-host-names

[root@server103 mail]# mkdir /var/spool/mqueue

[root@server103 mail]# chmod 755 /var/spool/mqueue/ <<권한설정 해줘야함.




4. Sendmail 실행


[root@server103 mail]# /usr/sbin/sendmail -Ac -q1h -->중계용 데몬

[root@server103 mail]# /usr/sbin/sendmail -bd -q1h --> 제출용 데몬


(중계용, 제출용 이거 잘 모르겠지만, 제출용 데몬은 백그라운드로 실행되어 다른 호스트로부터 메일을 받을 준비를 취하고 있는 상태, 여기서 -bd는 데몬모드로 실행하라는 옵션이고 뒤의 -q1h는 큐에 있는 내용을 한시간 간격으로 비우라 는 의미...)


[root@server103 mail]# ps -ef | grep sendmail

smmsp     8195     1  0 17:03 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue

root      8198     1  0 17:03 ?        00:00:00 sendmail: accepting connections

이렇게 확인 한번 해주고

테스트를 해봅시다.


[root@server103 mail]# telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 server103.localdomain ESMTP Sendmail 8.14.0/8.14.0; Tue, 4 Dec 2012 17:41:55 +0900

mail from:*****@gmail.com << mail from:보내는사람메일주소

250 2.1.0 *****@gmail.com... Sender ok

rcpt to:*****@gmail.com << rcpt to:받는사람메일주소

250 2.1.5 *****@gmail.com... Recipient ok

data              << data

354 Enter mail, end with "." on a line by itself

dfadfa

.      << . 을 찍어야 끝남

250 2.0.0 qB48ftiU008759 Message accepted for delivery

quit      << 나오기

221 2.0.0 server103.localdomain closing connection

Connection closed by foreign host.


'os > Linux' 카테고리의 다른 글

[실습] 웹서버구축  (0) 2014.10.28
[실습] 자동, 수동 ip 설정  (0) 2014.10.28
[실습] * 별출력  (0) 2014.10.28
[실습] 구구단  (0) 2014.10.28
[실습] shell script  (0) 2014.10.28

댓글