#185
1. 센드메일(sendmail)이란?
리눅스에서 제공하는 패키지 중 전자메일(E-mail)을 전송하기 위해 사용되는 프로그램으로써 간단하게 설치하여 사용할 수 있습니다.
즉, 전자메일을 송수신하는 서버에 설치되는 프로그램입니다.
2. 센드메일을 통한 메일 전송과정
과정을 이해하기전에 용어에 대해서 조금 알아보도록 하겠습니다.
1) MUA(Mail User Agent) : 사용자가 사용하는 클라이언트 프로그램(ex: 아웃룩)
2) MTA(Mail Transfer Agent) : 전자메일을 전송하는 서버(ex: 센드메일)
3) Mail Queue : 차례대로 전송할 메일이 쌓여있는 공간(ex: /var/spool/mqueue)
4) MDA(Mail Delivery Agent) : MTA가 수신한 전자메일을 수신자에게 전달해주는 프로그램(ex: procmail)
5) Mail Box : 사용자의 메일함
6) MRA(Mail Retrieval Agent) : 원격 메일서버에서 MUA(클라이언트)로 메일을 가져오는 프로그램(ex:devecot)
그럼 동작 과정에 대해 알아보겠습니다.
① 사용자 A(A의 MUA)는 SMTP 프로토콜을 이용하여 메일 서버 1(센드메일, MTA)에 사용자 B(B@메일 서버 2)에게 메일을 보내달라고 요청합니다.
② 메일 서버 1(센드메일, MTA)은 사용자 A가 작성한 메일을 Mail Queue에 추가합니다.
③ 센드메일(MTA)은 사용자 A 메일 송신 차례가 되면 MDA에게 메일을 전송 요청합니다.
※ 현재 구성의 경우 메일 발신 서버와 수신 서버가 함께 구성되어 MDA가 전송하지만 구분될 경우 MTA가 발신 역할을 합니다.
④ MDA는 SMTP 프로토콜을 이용하여 메일 서버 2로 메일을 전송합니다.
⑤ 메일 서버 2는 SMTP 프로토콜을 이용하여 사용자 A의 메일(A@메일 서버1)을 수신합니다.
⑥ 수신한 메일을 MDA는 사용자의 메일 박스에 전달합니다.
※ 만약 웹 메일만 이용한다면 이 과정까지 해당됩니다.
⑦ 사용자 B는 메일 클라이언트(MUA)를 사용하고 있기 때문에 요처에 의해 MRA가 동작합니다.
⑧ MRA는 메일 서버 2에 저장되어 있는 사용자의 메일을 메일 클라이언트(MUA)로 전달합니다.
3. 센드메일 설치하기
1) 센드메일 설치여부 확인하기
설치 환경에 센드메일이 설치되어 있을 수 있으므로 설치되어 있는지 먼저 확인합니다.
1)-1 패키지 확인하기
위와 같이 조회하셨을 때 아무것도 보실 수 없으시다면 설치가 안 된 상태입니다.
1)-2 서비스 확인하기
마찬가지로 서비스를 확인하였을 때 위와 같이 보이신다면 설치가 안 된 상태입니다.
2) 센드메일 설치하기
간단하게 설치된 것을 확인하실 수 있습니다.
4. 센드메일 동작하기
설치된 센드메일 동작해보도록 하겠습니다.
1) 서비스 시작하기
센드메일이 정상적으로 시작된 것을 보실 수 있습니다.
추가적으로 SMTP 포트가 리스닝상태로 있는 것을 확인하실 수 있습니다.
2) 로컬 메일 서버로 테스트하기
이제 설치를 하였으니 메일 발신테스트를 해보기로 하겠습니다.
먼저 로컬에서 메일을 발신하고 수신해보기로 하겠습니다.
테스트의 경우 telnet을 이용합니다.
메일 서버에 SMTP 포트를 이용하여 접속합니다.
센드메일이 정상적으로 동작하고 있다면 위와 같이 접속이 되는 것을 확인하실 수 있습니다.
이제 메일을 보내보도록 하겠습니다.
위와 같이 접속한 후 별다른 인증절차가 없다면 아래와 같은 명령어를 통하여 메일을 보낼 수 있습니다.
mail from:(발신자 주소)
rcpt to:(수신자 주소)
data(메일 제목과 내용)
subject: (메일제목, 작성 시 필수로 콜론 뒤에 한 칸을 띄워줘야 함)
(본문 작성)
.(본문 작성 완료)
quit(메일 작성 완료)
예시로 로컬(발신)에서 로컬(수신)로 메일을 보내보도록 하겠습니다.
텔넷을 통해 접속한 다음 mail from:을 이용하여 발신자 주소를 작성했습니다.
※ 현재는 테스트 용도로 로컬서버 -> 로컬서버로 작성하였지만, 다른 메일 서버로 메일을 보낼 때에는 도메인을 사용하고 계실 경우 도메인 주소로 설정하여 보내시기 바랍니다.
만약 정상적으로 작성하시지 않을 경우 다른 메일 서버에서 스팸 서버에 의해 필터링되실 수 있습니다.
다음으로 rcpt to:를 통하여 수신자 주소를 작성하였습니다.
※ 저와 같이 테스트 용도로 리눅스 서버에 센드메일을 설치하셔서 수신자를 설정하시는 경우 리눅스 서버의 "계정@IP주소"로 보내시면 됩니다.
발신자 주소, 수신자 주소가 작성이 완료되었으니 메일 내용을 입력해보겠습니다.
data 명령어를 입력한 다음 subject: 를 이용하여 제목을 입력합니다.
이 때 subject:입력하시고 꼭 한 칸을 띄워주셔야 합니다.
내용 입력이 완료되었으면 .을 찍어주신 다음 quit으로 메일 작성을 완료한 후 발신 요청을 합니다.
3) 수신된 메일 확인하기
발신, 수신을 모두 로컬에서 수행하였기 때문에 수신된 메일을 바로 확인할 수 있습니다.
센드메일을 설치하게 되면 의존성에 따라 procmail이 같이 설치됩니다.
설치가 되면서 이 때 MDA로 procmail이 됩니다.
procmail은 메일을 수신하게 되면 /var/spool/mail에 있는 각 계정의 메일박스로 메일을 전달합니다.
해당 경로에 가시면 등록된 사용자의 메일박스를 보실 수 있습니다.
(텍스트 형식으로 저장되어 있습니다.)
테스트 시 root 계정으로 메일을 보냈기 때문에 root 계정의 메일박스를 열어보도록 하겠습니다.
열어보니 제가 보낸 메일이 정상적으로 수신되어 있네요.
이걸 메일 시스템 혹은 메일 클라이언트에서 열어보게 된다면 파싱된 정보로 쉽게 보실 수 있습니다.
여기까지 해서 센드메일 설치와 동작 과정에 대해서 알아봤습니다.
다음에는 실제 클라이언트까지 설치하여 한 번 테스트 해보도록 하겠습니다.
'컴소니 > 리눅스' 카테고리의 다른 글
[fail2ban] 리눅스 서버 SSH 보안 강화 (0) | 2022.05.10 |
---|---|
[DNS 구축하기] 1. DNS 주소 설정하기 (0) | 2021.12.30 |
[메일 서버 구축하기] 1. 메일 서버 동작 원리 이해하기 (0) | 2021.11.10 |
[VIM] CentOS VIM 클립보드 저장하여 사용하기 (0) | 2021.04.21 |
[Shell] #!(Shebang, 셔뱅) 알고 쓰자! (1) | 2021.01.20 |
댓글