본문 바로가기
IT만들기/라즈베리파이

라즈베리파이 리눅스(유닉스) 초간단 메일 서버 구축하기(sendmail)

by 커피향처럼 2017. 6. 19.

리눅스에 sendmail 설치하기(라즈베리안, 센트OS, 우분트, 레드햇)

이번 글은 라즈베리 파이에 초간단한 발송용 메일 서버를 구축하는 방법에 대하여 적도록 하겠습니다.

꼭 라즈베리파이가 아니더라도 일반적인 리눅스도 같은 방법으로 설정이 가능 할 것입니다.

1. sendmail 설치하기

먼저 sendmail이 내 라즈베리파이 라즈베리안에 설치되어 있는지 확인해 보도록 하겠습니다.
다음 명령어를 실행하면 설치된 소프트웨어(프로그램) 의 리스트가 출력됩니다.
 - 라즈베리안, 데비안, 우분트 :  dpkg --get-selections
 - centOS, 레드햇 : rpm -qa

목록에서 sendmail이란 녀석이 있는지 찾으면 되겠죠?
다음과 같이 다시 명령어를 입력해서 원하는 녀석만 찾도록 해봅시다.
 - 라즈베리안, 데비안, 우분트 :  dpkg --get-selections sendmail 
 - centOS, 레드햇 : rpm -qa sendmail

dpkg:  no packages found matching sendmail  샌드메일을 찾지 못했다고 메세지가 출력되는군요.
센드메일을 설치해 보도록 하겠습니다.(sendmail과 sendmail-cf를 설치합니다)
  - 라즈베리안, 데비안, 우분트 :  sudo apt-get install sendmail sendmail-cf
  - centOS, 레드햇 : yum install sendmail sendmail-cf

설치가 완료된 후 sendmail 프로그램 조회를 해보도록 하겠습니다.
 - 라즈베리안, 데비안, 우분트 :  dpkg --get-selections sendmail
 - centOS, 레드햇 : rpm -qa sendmail

2. sendmail 설정 및 서비스 시작

샌드메일(sendmail) 서비스 상태를 확인해보도록 하겠습니다.

service sendmail status



만약 "sendmail is stopped" 로 출력된다면 서비스를 시작해주면 됩니다.
sendmail 시작 : service sendmail start

sendmail 서비스를 중지하는 방법은 "service sendmail stop" 명령입니다.
pi로 로그인 했다면 관리자 계정이 아니므로 명령 앞에 sudo를 붙여서 실행해야 합니다.

sendmail의 설정 파일을 수정하도록 하겠습니다.
원본 파일 백업
sudo cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.org
sudo mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.org

nano 또는 vi를 사용하여 파일 편집
sudo nano /etc/mail/sendmail.mc

FEATURE(`no_default_msa')dnl
dnl DAEMON_OPTIONS(`Family=inet6, Name=MTA-v6, Port=smtp, Addr=::1')dnl
DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
dnl DAEMON_OPTIONS(`Family=inet6, Name=MSP-v6, Port=submission, M=Ea, Addr=::1')dnl
DAEMON_OPTIONS(`Family=inet,  Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1')dnl

"127.0.0.1" 이 부분을 0.0.0.0으로 모두 수정합니다.
외부에서 라즈베리 파이를 통해 메일 발수신이 필요없고 라즈베리 파이내에서만 sendmail을 사용하겠다고 한다면 수정 할 필요는 없습니다.
0.0.0.0은 모든 ip에 사용을 허가한다는 의미입니다.

m4명령으로 sendmail.cf 파일을 생성해 줍니다.
sudo m4 /etc/mail/sendmail.mc > ./sendmail.cf
sudo mv ./sendmail.cf /etc/mail

pi로 로그인해서 "> /etc/mail/sendmail.cf"으로 바로 생성을 해줄 경우 권한 오류가 날것입니다.

sendmail.cf의 소유자 및 그룹을 변경해준다.
sudo chown root:smmsp /etc/mail/sendmail.cf  (정상적으로 변경 되었는지 ls -l /etc/mail/sendmail.cf 로 확인)

sudo service sendmail restart 명령으로 sendmail을 재기동합니다.

"/etc/mail/sendmail.mc:10: m4: Cannot open /usr/share/sendmail-cf/m4/cf.m4: No such file or directory" 오류가 발생한다면 sendmail-cf가 설치되지 않은 것이니 sendmail-cf를 설치해 줍니다.

m4 명령을 사용하여 sendmail.cf를 생성
sendmail 서비스 기본 명령입니다.
서비스 시작 : service sendmail start
서비스 종료 : service sendmail stop
서비스 재시작 : service sendmail restart
서비스 상태 확인 : service sendmail status

3. sendmail 테스트

telnet이 설치되어 있지 않다면 테스트를 위해서 먼저 telnet를 설치하도록 하겠습니다.
라즈베리안 제시 라이트 버전에는 telnet이 설치 되어 있지 않아 telnet을 별도로 설치했습니다. 
sudo apt-get install telnet

telnet localhost 25
아래의 진하게 굵은 문장은 직접 입력하는 부분입니다.
메일주소는 자신의 메일 주소를 넣어주세요.

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 raspberrypi ESMTP Sendmail 8.14.4/8.14.4/Debian-8+deb8u2; Mon, 19 Jun 2017 2
1:55:03 +0900; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
helo localhost
250 raspberrypi Hello localhost [127.0.0.1], pleased to meet you
mail from:pi@raspberrypi
250 2.1.0 pi@raspberrypi... Sender ok
rcpt to:sendmailtest@gmail.com
250 2.1.5 sendmailtest@gmail.com... Recipient ok
data
354 Enter mail, end with "." on a line by itself
subject : sendmail test
sendmail contents data
.

250 v5JD4j09000670 Message accepted for delivery
quit
221 2.0.0 restore closing connection
Connection closed by foreign host.

메일이 잘 도착하긴 했지만 gmail.com에서 스펨메일로 들어가 있네요.

위장 이메일 주소, 피싱 사기, 미확인 발송자가 보낸 메일, 관리자가 설정한 정책 ... 등의 이유로 스펨 처리 되었습니다.
위장 이메일 주소부터 걸린듯 하네요.

qemu에서 라즈베리안에 sendmail을 설치했는데 에뮬레이터를 실행 한 후 "telnet localhost 25"로 했더니 접속이 되지 않군요. 왜 안되는지 인터넷을 찾아보다가 다시 해보니 telnet이 접속이 되네요.. LISTENER(?) 서비스가 작동되는데 약간의 시간이 필요한듯 합니다.

1. telnet localhost 25   <- 접속 실패
2. service sendmail status   <- 정상적으로 sendmail 실행중
3. netstat -lptun | grep 25   <- 포트 서비스 확인(2 실행하고 몇분 있다가 실행함)
4. telnet localhost 25   <- 접속 성공


댓글