본문 바로가기
Operator/OS(Linux-Windows)

[Linux] 메일서버 설치 - sendmail

by james_janghun 2024. 11. 20.

오늘은 메일서버의 가장 기본이 되는 sendmail부터 알아보겠습니다.

 

메일 전송을 위한 프로그램으로 MTA(Mail Transfer Agent)라고도 합니다. 쉽게 말해 메일을 보내는 역할을 담당하는 소프트웨어 입니다.

 

설치

대부분 리눅스에서는 sendmail이 설치되어 있기 때문에 먼저 설치 유무를 확인해줍니다.

rpm -qa | grep sendmail

 

이제 실제로 설치를 해봅시다.

yum -y install sendmail sendmail-cf

 

 

/etc/hosts 설정

/etc/hosts는 리눅스에서 로컬 DNS역할을 하는 호스트 설정 파일입니다.

hosts 정보를 확인하고 매칭되는 주소가 없으면 설정된 DNS에서 주소를 확인하게 설계되어 있습니다.

 

아래는 기본 호스트 정보인데, 우리가 흔히 서버 내부 자체를 호출할 때 127.0.0.1 혹은 localhost 라고 쓰는 이유는 여기에서 그렇게 규정되어 있기 때문입니다.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost6 localhost6.localdomain6

 

 

이제 내부에서 도메인을 사용하려면 해당 도메인을 내부 서버 IP와 일치시켜야합니다.

따라서 아래 내용을 추가합니다.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost6 localhost6.localdomain6
127.0.0.1 mail.devopsjames.com  # 추가

 

 

/etc/mail/local-host-names 설정

해당 파일은 메일을 수신할 호스트 명을 넣어줍니다. 해당 메일서버가 사용할 도메인으로 보시면 됩니다.

devopsjames.com

 

sendmail 설정 파일 수정

이제 sendmail에 대한 설정을 해보겠습니다. 

sendmail.mcsendmail.cf를 사용합니다.

# vi /etc/mail/sendmail.mc 
56 TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
57 define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
121 DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

 

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

 

/etc/mail/access 설정

해당 파일은 메일 서버로 접근하는 호스트나 도메인을 제어하는데 사용합니다.

특정 IP 주소와 도메인에 대해 접근 통제를 합니다.

기본은 localhost만 가능합니다.

 

/etc/mail/access 구조도

필드1- 도메인명(IP/메일 계정) 필드2- 접근 정책
Connect:도메인 혹은 IP RELAY

 

제어옵션 설명
RELAY 메일 Relay 허용하게 된다관련(host 에서 지정된)메일의 수신/발신을 허용한다.
REJECT RELAY와는 반대로 메일 RELAY(수발신) 허용하지 않는다.관련(host 에서 지정된)메일의 수신/발신을 거부한다.
DISCARD 메일을 받은후에 폐기해 버린다메일 발신자에게 폐기통보를 전혀하지 않는다 /etc/sendmail.cf  지정된 $#discard mailer  지정된 곳으로 메일을 폐기한다.(발신자는 메일이 발신된것으로 알게됨)
OK 조건없이 허용한다관련(host 에서지정된)메일의 모든 것을 허용(RELAY)한다.
“501 메시지 메일주소가 일부분이상 일치할 경우에 지정된 메시지 거부하게 된다관련(host 에서지정된메일의 Eamil Address 일치된 메일을 받지 않는다.
“502 메시지 발신메일주소에 host 명이 없을 경우에 메일을 받지 않는다.
“503 메시지 관련(host 에서 지정된) 도메인과 관련된 메일을 받지않음
“550 메시지 특정한 도메인에 대해 지정된 메시지 거부하게 된다.
“571 메시지 주로 스팸메일의 경우에 사용하는 설정으로 지정된 메시지 경로메일을 보낸후에거부하게 된다.
“572 메시지 위의 571 설정과 거의 유사한 설정이다.

출처: https://action713.tistory.com/entry/centOS-sendmail에서-gmail로-발송이-안됨

 

 

파일을 수정한 후에는 access.db에 저장하기 위해 다음 명령어를 사용합니다.

makemap hash /etc/mail/access < /etc/mail/access

 

/etc/mail/virtusertable 설정 (옵션)

메일 서버의 도메인이 여러 개 이거나 서버 도메인 자체가 여러 개일 경우 설정해야합니다.

이 설정으로 동일한 메일 계정을 여러 개의 도메인에서 사용할 수 있습니다.

 

필드1 - 메일 주소 필드2 - 시스템에 존재하는 계정
user@devopsjames.com user

 

# vi /etc/mail/virtusertable
user@devopsjames.com	user

 

 

마찬가지로 access.db에 해당 내용을 저장하기 위해 다음 명령어를 입력합니다.

makemap hash /etc/mail/virtusetable </etc/mail/virtusertable

 

 

saslauthd / sendmail 시작

saslauthd는 데몬으로 SASL을 이용해 사용자 인증을 암호화해주는 데몬입니다.

메일 서버에서 인증기능을 담당합니다.

systemctl start saslauthd

 

'Operator > OS(Linux-Windows)' 카테고리의 다른 글

[Linux] 네임서버 이론  (1) 2024.11.20
[Linux] 메일 서버 시리즈 - sendmail 다루기  (0) 2024.11.20