Sendmail은 SMTP를 통해서 메일 서비스 기능을 하는 것인데, 메일 서버간에 메일을 주고 받는 역할을 하는 것임.
이메일 송수신에 사용되는 프로토콜은 3가지가 있는디 대충 알아놓자.
SMTP: Simple Mail Transfer Protocol, 클라이언트가 메일을 보내거나, 메일 서버끼리 메일을 주고 받을때
POP3: Post Office Protocol, 메일 서버에 도착되어 있는 메일을 클라이언트로 가져올 때
IMAP: Internet Mail Access Protocol, POP3이랑 같음
- 이전버전 체크 + 실행파일 생성
우선 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]# wget http://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
에러 없이 설치되었으면 다음스텝으로 넘어가기
- 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가 생긴걸 확인할 수 있음)
- Sendmail 기타 설정파일 설정하기
- 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 << 이렇게 생성이 되어야 함!!
- 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/ <<권한설정 해줘야함.
- 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.
'Linux' 카테고리의 다른 글
linux,unix에 vi editor 구문강조 (0) | 2014.10.31 |
---|---|
make install 안될 때 해결법 (0) | 2014.10.31 |
FTP Server 구축 (0) | 2014.10.31 |
APM server 구축 (0) | 2014.10.31 |
Linux의 네크워크 설정 (0) | 2014.09.03 |