작성일: 2024년 5월 7일
Sendmail 설치
Sendmail 패키지 설치는 간단하다. 아래와 같이 2줄의 명령어를 실행하면 끝 !!!
$ apt update -y
$ apt install sendmail
Sendmail 설정 (당장 필요한 부분만 간단하게 수정~)
만약, 아래와 같이 Sendmail을 발신 전용으로 사용하는 경우라면
- Sendmail 서버가 설치된 Ubuntu OS 호스트에서 mail CLI 또는 mailx CLI를 통해서 mail 발송만 하는 경우
- Sendmail 서버가 설치된 Ubuntu OS 호스트에서 내가 개발한 mail 전송 프로그램이 localhost address(127.0.0.1) 주소로 binding해서 보내는 경우
설정을 수정하지 않고, 기본 설정값으로 사용해도 다 잘 동작한다.
단, Sendmail 서버가 설치된 장비가 아닌 Remote 장비에서 email을 발송하도록 하거나
내가 설치한 Sendmail 서버를 수신용 서버로 사용하고자 한다면 아래와 같이 인터넷 Address(즉, 0.0.0.0)을 사용할 수 있도록 설정 항목을 수정해야 한다.
$ vi /etc/mail/sendmail.mc
... 중간 생략 ...
## NOTE: Addr 항목 값을 "0.0.0.0"으로 변경한다.
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl
DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=0.0.0.0')dnl
... 중간 생략 ...
$ m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
Sendmail 서버 프로그램을 설치한 장비의 domain name을 /etc/mail/local-host-names 파일에 설정한다.
$ vi /etc/mail/local-host-names
localhost
my-host.my-domain.kr
mail.my-domain.kr
수정했으니까, sendmail을 재기동하여 수정된 설정을 반영한다.
$ systemctl restart sendmail
Sendmail 서버를 이용하여 메일 발송하는 테스트하기
우선, 간단한 mail 에이전트 CLI 프로그램을 설치한다.
$ apt-get install mailutils
mail CLI를 이용하여 메일을 발송하는 스크립트를 작성한다.
$ vi send-mail.sh
#!/usr/bin/zsh
MY_DATE=$(date)
MY_SUBJ="This is test mail (${MY_DATE})"
echo "My hello world at ${MY_DATE}" | mail -s $MY_SUBJ sejong@naber-nara.kr
$ chmod +x send-mail.sh
$ ./send-mail.sh
별루 설정한거 없고, 작업한게 없지만
메일을 잘 갈 것이다 ^^
Python, Golang 같은 언어로 sendmail 서버 프로그램에 메일 전송 요청을 했는데, 별로 어려운 거 없이 잘 작동하는 것을 확인했다.
(기본 설치는 SMTP 서버 접근에 대한 인증이 따로 없어서 그냥 바로 테스트가 된다. 쫌~~~ 위험함 ㅠㅠ)
참고: Python은 아래 Web Docs의 Example code를 복붙(Copy & Paste)하면 잘 동작한다.
https://docs.python.org/ko/3/library/email.examples.html
DNS 서버에 MX Record 추가하기
아래 예제와 비슷한 모양으로 MX Record를 추가해준다.
$ vi /var/cache/bind/my-domain.kr.zone
... 중간 생략 ...
; MX Records
;
@ IN MX 10 mail
@ IN MX 20 mailx
... 중간 생략 ...
이렇게 DNS 서버(즉, 네임서버)에 MX Record가 설정되면
제3자가 sejong@my-domain.kr으로 메일을 보낼 때, 자동으로 mail.my-domain.kr 또는 mailx.my-domain.kr이 SMTP 수신 서버라고 인지하게 된다.
'IT General' 카테고리의 다른 글
SOC 관련 정보 - Paloalto XSIAM (0) | 2024.05.24 |
---|---|
XDR, EDR, SIEM, SOAR 보안 모델 (0) | 2024.05.20 |
Rust Programming Language (러스트 프로그래밍 언어) - 온라인 학습 문서 (0) | 2024.04.19 |
DNS Cache 삭제(Flush, Reset, 초기화) (0) | 2024.04.18 |
블로그 추천 - 톨티의 공작소 (0) | 2024.04.16 |