1. SMTP란
- 다른 메일 서버로 메일을 보내거나, 다른 메일 서버로부터 메일을 받을 때 이용되는 프로토콜
- 기본적으로 TCP 포트 25를 사용
2. 기본구성
- 출발지 - MUA - MTA - MDA - MUA - 목적지
- MUA(mail user agent) : 이메일 클라이언트, 사용자가 메일을 보내기 위해 사용하는 프로그램
- ex. gmail, outlook
- MTA(mail/message transfer agent) : 메일을 SMTP를 이용해 다른 메일 서버로 전달하는 프로그램
- ex. sendmail, qmail, postfix, ms exchange server
3. Sendmail
a) 버전 확인
- echo \$Z | /usr/sbin/sendmail -bt -d0
b) 연결 테스트
- /usr/lib/sendmail -v [메일주소] </dev/null
- 수신자에게 null 메시지를 보내 발신 테스트를 실시
- 로컬 사용자, 외부 네트워크 사용자 모두 테스트 실시
- Relay 테스트
- telnet [smtp서버 IP] 25
- helo [호스트명]
- mail from: [발신 메일 주소]
- rcpt to: [수신 메일 주소]
- data
- 메일 내용
- . (마침표, 본문의 끝을 알림)
- quit
- TLS handshake failed 에러 발생 시 TLS 연결 테스트
- openssl s_client -starttls smtp -connect [도메인주소]:25
c) Relay 허용 설정
- /etc/mail/access 에 Relay 허용할 IP 등록
- connect:xxx.xxx.xxx.xxx RELAY
- /etc/mail/Restart.sh 실행해 서비스 재시작
d) Mailqueue 설정
보통 /var/spool/mqueue에 위치하며 Sendmail을 통해 메일을 송신하면 우선 큐에 저장된다. 순차적으로 메일을 발송하는데 송신이 실패하면 해당 서버로부터 에러메시지나 회송 메일을 받게 되고 이 역시 mqueue에 저장된다.
- 명령어
- mailq : 메일큐가 얼마나 쌓여있는지 확인
- ls -al /var/spool/mqueue : 메일큐 디렉토리 확인
- sendmail -q -v : 큐에 쌓인 메일 강제로 재발송
- rm -rf * : 큐 비우기
- sendmail.cf 설정
- MinQueueAge=30m
- 재발송 시간 텀. 기본값은 30분, 기본적으로 주석처리 되어있다. 변경해도 무관
- Timeout.queuereturn=5d
- 발송 실패한 메일이 큐에 존재하는 기간, 기본값은 5일
- SMTP 서버 장애로 업무단에서 미발송 처리한 메일이 장애 조치 이후 재발송 되어버려 혼선을 겪은 적이 있다. 발송 실패 메일을 너무 오래 보관하면 mqueue 공간이 부족해지거나 위와 같은 문제가 있을 수도 있으므로 적절하게 설정해야 한다.
- timeout.queuewarn=4h
- 메일 발송 실패에 대해 발송자에게 안내 메일을 보내는 시간, 기본값은 4시간
- MinQueueAge=30m
'Server > Linux' 카테고리의 다른 글
[Linux] NIC Bonding (0) | 2020.12.03 |
---|