오늘은 메일서버의 가장 기본이 되는 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.mc와 sendmail.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 |