linux에서 mail 서비스를 운영할 수 있다.
-
SMTP(Simple Mail Transfer Protocol)
- MTA 클라이언트와 서버를 구성하는 프로토콜 (TCP/25)
- 송신자와 송신자의 메일 서버 사이, 메일 서버와 메일 서버 사이에서 사용된다.
-
POP3(Post Office Protocol)
- 메일 서버로부터 메일을 수신하기 위한 서버/클라이언트 프로토콜 (TCP/110)
- 메일 서버로부터 메일을 가져온 후 서버에서 메일을 삭제함
-
IMAP4(Internet Mail Access Protocol)
- POP3와 비슷한 기능이지만 더 많은 기능을 포함하고 복잡함 (TCP/143)
- 메일 서버로부터 메일을 가져와도 서버에 메일이 유지됨.
기본 컴포넌트 3가지
- MUA(Mail User Agent): 사용자들이 메일을 송/수신하기 위한 클라이언트 에이전트
- MTA(Mail Transfer Agent): 메일 서버로 메일을 전송하기 위한 서버/클라이언트 에이전트 - MDA(Mail Delivery Agent): 수신된 메일을 해당 사용자에게 전달해주는 에이전트
포워딩(forwarding) 방법
- virtusertable 파일 설정을 통한 포워딩
- aliases 파일 설정을 통한 포워딩
.forward
파일을 통한 포워딩 : 일반 계정 사용자가 자신의 홈 디렉터리에 만들어 설정
메일 관련 프로그램
-
MTA 프로그램
- Sendmail: SMTP를 기반으로 한 메일 전송 프로그램. 리눅스 배포판에 기본적으로 설치됨 -
- Qmail: Sendmail에 비교해 보안이 뛰어나며 모듈 방식으로 편리한 기능
- Postfix: IBM 라이선스를 따르는 오픈소스 프로그램
-
MUA 프로그램
- Thunderbird(썬더버드): 모질라에서 만든 메일 클라이언트 프로그램
- Evolution(에볼루션): GNOME의 메일 관리 프로그램
-
MDA 프로그램
- Procmail: 메일을 필터링하는 기본적인 프로그램
- SpamAssassin: 아파치 재단에서 개발한 메일 필터링 프로그램. 펄(perl)로 제작됨.
-
보안 프로그램
- PGP(Pretty Good Privacy): PEM에 비해 보안성은 떨어지지만 구현이 쉽다.
- PEM(Privacy Enhanced Mail): 높은 보안성, 복잡한 구현 방식으로 잘 쓰이지 않음
-
기타 관련 프로그램
- dovecot: POP3와 IMAP4 역할을 수행하는 프로그램
-
/etc/mail/sendmail.cf
- Sendmail의 핵심. 메일 송/수신 시 이 파일을 해석하여 실행한다.
- m4 명령어로 생성할 수 있다. (
$ m4 sendmail.mc > snedmail.cf
)
-
설정
- Cw: 호스트 지정
- Fw: 파일 지정
- Dj: 특정 도메인을 강제 지정
-
/etc/mail/local-host-names
- 메일 서버에서 사용하는 호스트(도메인)을 등록하는 파일
-
/etc/mail/access
- 각종 접근 제어 설정이 저장되는 파일
- makemap 명령어:
/etc/mail/access
파일 편집 후에 DB 파일(access.db)을 만드는 명령어 ($makemap hash /etc/mail/access < /etc/mail/access
)
-
설정
- RELAY: relay(중계) 허용
- OK: 무조건 허용
- REJECT: relay 차단 (주로 스팸 서버의 IP를 차단)
- DISCARD: relay 없이
/etc/sendmail.cf
에 지정된 $#discard mailer에 폐기됨 (어떠한 답신도 보내지 않음)
-
메일 거부패턴 옵션
- 501: 지정된 메일 주소와 일치하는 모든 메일의 수신 차단
- 553: 발신 메일주소에 호스트명이 없을 경우 메일 차단
- 550 : 지정된 도메인과 관련된 모든 메일 수신 거부ㅋ
-
access 파일 예제
Connect:192.168.10.9 OK /* 192.168.10.9 호스트로 접속하는 클라이언트의 메일 허용 */ Connect:localhost RELAY /* localhost로 접속하는 클라이언트의 RELAY 허용 */ From:add@spam.com REJECT /* [email protected]에서(발신) 오는 메일을 거절하고 거절 답신 보냄 */ From:root@spam.co.kr DISCARD /* [email protected]에서(발신) 오는 메일을 거절하고 거절 답신을 보내지 않음 */ To:log@shionista.com OK /* [email protected]으로(수신) 오는 메일을 허용 */
-
/etc/aliases
- 특정 ID로 들어오는 메일을 여러 호스트에게 전달할 때 사용하는 파일 (작은 규모의 메일링 리스트)
- 사용자가 다른 메일 계정 (별칭)을 사용할 수 있도록 할 수 있다.
newaliases
명령어 :/etc/aliases
파일의 변동 사항을 적용sendmail -bi
명령어와 같은 기능
-
/etc/mail/virtusertable
- 가상 메일 사용자의 설정이 저장되는 파일
- access 파일과 마찬가지로
makemap hash
명령어로 DB 파일을 만들어 주어야 함 [email protected] admin
→ 해당 메일 주소로 오는 메일을 admin 계정으로 수신[email protected] test
→ 해당 메일 주소로 오는 메일을 test 계정으로 수신
- mailq 명령어 2015(1) 2016(1)
- 메일 큐 목록(/var/spool/mqueue) 출력 (sendmail -bp 명령어와 같은 기능)
- [-v] : 자세하게 출력
- [-Ac] : /etc/spool/submit.cf 에 지정된 메일 큐 목록(/var/spool/clientmqueue)을 출력