CentOS 6 버전에 sendmail을 설치하여 추후에 참고 할수 있도록 내용을 정리하였습니다.
이 글은 수정해야할 사항이 확인되면 바로 수정될 예정입니다.
대상 서버 OS : CentOS 6.8 64 bit
설치전 기본적으로 확인할 사항
# sendmail이 설치되어있는지 확인
rpm -qa |grep sendmail
# 기본적으로 설치되어있는 postfix를 제거
yum remove postfix
1. yum으로 sendmail, sendmail-cf 설치를 진행합니다.
# sendmail 설치
yum install sendmail sendmail-cf
2. /etc/mail에서 sendmail.mc 및 sendmail.cf 파일 존재 유무를 확인후 복사를 진행합니다.
혹시 모를 실수를 예방하기 위해서입니다.
# 원본 파일 복사
cp /etc/mail/sendmail.mc /usr/local/src/backup_sendmail.mc
cp /etc/mail/sendmail.cf /usr/local/src/backup_sendmail.cf
3. vi /etc/mail/sendmail.mc 로 이동하여 변경 작업을 진행합니다.
# 에디터 상에서 53을 누르고 대문자 G를 누르면 아래와 같이 이동됩니다.
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
dnl define(`confAUTH_MECHANISMS’, `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
# 여기서 dnl은 주석과도 같은 기능을 하며.기능을 정상적으로 이용하기위해서는 dnl를 제거하면 됩니다.
아래는 smtp의 인증을 사용하겠다는 설정이며 앞에 붙어있는 dnl를 삭제합니다.
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
define(`confAUTH_MECHANISMS’, `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
# 이어서 116을 누르고 대문자 G를 눌러 이동합니다.
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA’)dnl
# 위의 127.0.0.1의 설정의 경우 로컬호스트에서만 메일 발송이 가능하므로 이부분을 0.0.0.0으로 변경하여
외부에서도 메일 발송이 가능하게 해줍니다.
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA’)dnl
4. 수정이 완료되었다면 diff 명령어를 사용하여 원본과 수정본의 내용을 비교한후 m4 명령어를 이용하여
sendmail.cf을 재생성하고 sendmail를 시작합니다.
# 원본과 수정본의 내용을 비교합니다.
diff /usr/local/src/backup_sendmail.mc /etc/mail/sendmail.mc
52,53c52,53
< dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
< dnl define(`confAUTH_MECHANISMS’, `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
—
> TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
> define(`confAUTH_MECHANISMS’, `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
116c116
< DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA’)dnl
—
> DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA’)dnl
# 메크로 처리 언어인 m4를 이용하여 sendmail.cf을 재생성 합니다.
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
# sendmail을 시작합니다.
service sendmail start
5. netstat 로 25번 포트가 올라왔는지 확인하고 chkconfig로 부팅시 서비스가 자동으로 시작되는지 확인한후
방화벽에 25번 포트가 열려있는지 확인합니다.
# 25번 포트가 올라왔는지 확인합니다.
netstat -nlp |grep 25
# 리부팅시 서비스가 자동으로 실행되게 설정되어있는지 확인합니다.
chkconfig –list sendmail
# iptalbes에 25번 포트가 등록되어있는지 확인합니다.
iptables -nL |grep 25
# 포트가 등록되어있지 않다면 아래와 같이 등록해주세요. 다만 사용하는 룰에따라 등록이 안될수도있습니다.
iptables -A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 25 -j ACCEPT
6. telnet을 설치합니다.
# telnet 설치
yum install telnet
6-1 설치가 완료되었으니 메일 발송 테스트를 해보겠습니다. 이 방법은 telnet으로 메일을 발송하는방법이며
자세한 내용은 밑을 참고해주세요.
# telnet으로 접근합니다.
telnet localhost 25
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
220 localhost.localdomain ESMTP Postfix
# mail from:을 적고 보내는 사람에 관한 이메일 주소를 적습니다.
mail from: testmail@mail.com
250 2.1.0 Ok
# rcpt to:에는 메일을 받을 사람에 관한 이메일 주소를 적습니다.
rcpt to: 받을 사람 이메일
250 2.1.5 Ok
# data를 적으면 메일을 작성할수 있습니다.
data
354 End data with <CR><LF>.<CR><LF>
# subject :는 메일의 제목 부분에 해당한다. 제목을 작성후 엔터를 누르고
내용을 적어봅시다.
subject : This is Test Mail
hello. test mail!!!!
# 작성 완료후에 발송하려면 마지막줄에 .을 적은뒤 엔터를 누르면 메일이 발송되며.
telnet은 quit로 빠져나갈수 있습니다.
.
250 2.0.0 Ok: queued as 3F28024013D
quit
221 2.0.0 Bye
6-2 이번에는 mail 명령어로 이메일을 발송해보겠습니다.
# 아래의 명령어를 이용하여 메일을 보낼 사람의 이메일과 받을 사람의 이메일을 적습니다.
mail -r testmail@mail.com 받을 사람 이메일
# Subject: 부분에는 제목을 적은후 내용을 적고 마지막줄에 .을 적은뒤 엔터를 누르면
이메일이 발송됩니다.
Subject: Hello!
Test mail!
.
EOT
7. 이메일은 무사히 받았으나 스팸메세지로 나오는 부분이 있습니다. 이 부분은 화이트 도메인 등록이
필요할것같습니다.