메일 관련 서비스
메일 관련 서비스의 이해
메일 서버의 개요
메일 관련 프로토콜
- SMTP(Simple Mail Transger Protocol) : 인터넷에서 이메일을 보낼 때, 메일 클라이언트에서 메일 서버로 메일을 보낼 때 사용되는 프로토콜. TCP 25번 포트 사용.
- POP3(Post Office Protocol Version 3) : 서버에 도착한 메일을 클라이언트에서 직접 내려 받아 읽도록 해주는 프로토콜. 110번 포트 사용. 메일을 확인하면 서버로부터 메일을 클라이언트로 가지고 온 후 서버에서 해당 메일을 삭제함.
- IMAP(Internet Mail Access Protocol) : POP3와 마찬가지로 클라이언트 사용자가 메일 서버에 도착한 메일을 확인 할 때 사용하는 프로토콜로 143번 포트를 사용. POP3와 차이점은 메일을 확인한 후에도 서버에 해당 메일이 계속적으로 존재하여 다른곳에서 메일 확인이 가능.
메일 관련 프로그램의 분류
- MTA(Mail Transfer Agent) : 이메일을 SMTP 프로토콜을 이용해 다른 메일 서버로 전달하는 프로그램. 보통의 메일 서버 프로그램. sendmail, qmail, postfix, MS Exchange Server 등.
- MUA(Mail User Agent) : 사용자가 메일을 읽고 보낼 때 사용하는 프로그램. Kmail, evolution, mutt, thunderbird, MS의 Outlook 등
- MDA(Mail Delivery Agent) : 메일박스에 도착한 메일을 대행해서 가져오거나 전달하는 역할을 수행. procmail(스팸 메일을 필터링, 메일 정렬)
리눅스와 메일 관련 프로그램
- sendmail, qmail, postfix 등이 사용
- POP3 및 imap 서버로 devecot이 많이 사용.
메일 서버 설치 및 활용
센드메일의 개요
- 주요 환경은 /etc/mail/sendmail.cf 파일에서 설정
- 추가적인 설정은 /etc/mail/local-host-names, /etc/mail/access 등 별도의 파일을 이용해서 관리
센드메일 관련 주요 파일
/etc/mail/local-host-names
메일 서버에 사용하는 도메인을 설정하는 파일로 한 줄에 도메인 하나씩 기입함.
/etc/mail/sendmail.mc
sendmail의 매크로 설정 파일로 sendmail.cf 파일이 삭제되었거나 복원할 경우에 m4라는 매크로 프로세서를 이용하여 새롭게 생성.
/etc/mail/access
- 메일 서버로 접근하는 호스트나 도메인의 접근을 제어하는 파일로 허가할 호스트나 도메인은 통과시키고, 허용하지 않으려면 거부할 수 있음.
- 실제 센드메일 데몬이 참고하는 파일은 /etc/mail/access.db이므로 변경 시에는 makemap hash 명령을 이용한 업데이트가 필요.
- Connect는 접속하는 클라이언트의 주소나 이름을 기반으로 제어하는 것이고, From은 보낸 사람, To는 받는 사람 기반으로 제어.
/etc/aliases
- 특정 계정으로 들어오는 메일을 다른 계정으로 전송되도록 설정하는 파일.
- 센드메일이 참고하는 파일은 /etc/aliases.db이므로 변경 시에는 'newaliases'나 'sendmail -bi' 명령을 실행시켜야 함.
/etc/mail/virtusertable
- 하나의 메일 서버에서 여러 도메인을 사용하는 환경에서 동일한 메일 계정을 요구할 때 각각의 도메인으로 도착하는 메일을 포워딩할 때 사용하는 파일
- windows.com, linux.com이라는 도메인을 사용 중이고 각 회사에서 ceo라는 동일한 이메일 계정을 요구하는 경우임.
- 센드메일이 참고하는 파일은 /etc/mail/virtusetable.db이므로 변경 시에는 'makemap hash' 명령을 사용
~./forward
- 각 사용자 개인이 자신에게 들어오는 메일을 다른 메일 주소로 포워딩할 때 사용하는 파일
- 홈 디렉터리 안에 직접 파일을 생성 후 한 줄에 메일 주소 하나씩 입력
센드메일 관련 주요 명령어
mailq
보내는 메일이 대기하는 디렉터리의 큐 상태를 출력
[사용법]
$ mailq [option]
옵션
- -Ac : /etc/mail/submit.cf 파일에 명시된 큐의 상태를 출력
sendmail
sendmail 관리 명령
[사용법]
sendmail 관리 명령
옵션
- -bp : mailq와 같은 명령으로 메일 큐의 상태를 출력
- -bi : newaliases와 같은 명령으로 /etc/aliases 파일 수정 시에 관련 DB 정보 파일을 업데이트
- -oQ : -bp와 같이 사용되는 옵션으로 특정 큐의 상태를 확인하기 위해 사용.
DNS 관리
DNS(Domain Name System)의 이해
DNS의 개요
- 호스트의 도메인 이름을 IP 주소로 바꾸거나 그 반대의 변환을 위해 개발
- 보유한 도메인을 관리해 주는 역할을 수행하지만, 클라이언트에서 도메인명에 대한 IP 주소의 조회를 요청했을 경우에 반환해 주는 역할도 수행
DNS 서버의 종류
- Primary Name Server : 사용하는 도메인을 관리하기 위해 필수적으로 구성하는 서버
- Secondary Name Server : Primary Name Server의 zone 파일을 백업하는 역할. Slave DNS라고 부름.
- Caching Name Server : 관리하는 도메인 없이 리졸빙만을 제공하기 위해 구성하는 서버
DNS 서버 프로그램 : BIND(Berkeley Interent Name Domain)
- 가장 널리 쓰이는 DNS 서버 프로그램
- named라는 이름의 데몬 사용
bind 관련 파일 및 디렉터리
- /etc/named.conf : DNS 서버의 전반적인 환경 설정을 담당하는 파일로 서버에서 사용하는 zone 파일을 저장
- /var/named : 루트 도메인 서버에 대한 정보를 담고 있는 named.ca를 비롯하여 사용자가 선언하는 zone 파일 등이 위치하는 디렉터리
- /etc/rc.d/init.d/named : DNS 서버 가동을 위한 데몬 스크립트
DNS 관련 파일 및 활용
/etc/named.conf 파일
파일의 구성과 특징
- 주석문 구문으로 구성
- 주석은 모든 언어의 주석 거의 다 사용가능
- 구문에는 options, loggindg, controls, zone, acl, view, key, masters, server 등이 존재
options 구문
DNS 서버의 동작 및 제어와 관련된 여러 가지 설정을 하는 영역으로 존 파일이 위치하는 디렉터리 명은 반드시 명기해야 함.
acl 구문
- ACL(Access Control List)의 약자로 여러 호스트를 하나의 명칭으로 지정할 때 사용.
- 지정한 이름은 options 구문의 allow-query, allow-transfer 등에 사용 가능
- acl 구문의 선언은 options 구문 이전에 해야 함.
zone 구문
- 도메인을 관리하는 데이터베이스 파일인 zone 파일을 지정
- 루트 도메인 서버에 대한 정보 파일은 named.ca에 대한 선언이 되어 있고 추가적으로 localhost, localhost.domain 등에 대한 존 파일이 선언되어 있음.
- 존 파일은 일반적인 존 파일과 리버스 존 파일로 나눌 수 있음. 일반적인 존 파일은 도메인에 대한 질의 시 IP 주소로 알려주는 역할을 수행하고, 리버스 존 파일은 IP 주소에 대한 질의 시에 도메인을 알려주는 역할을 수행
zone 파일
zone 파일의 개요
존 파일은 메인 도메인뿐만 아니라, 2차 도메인을 관리하는 역할도 수행
zone 파일의 구조
zone 파일은 크게 SOA(Start Of Authority) 레코드와 자원 레코드(Resource Record)로 나눌 수 있음
zone 파일의 항목 설명
$TTL
- Time To Live의 약자로 zone 파일의 첫 줄에 설정해야 함.
- 다른 서버에서 도메인 관련 정보를 조회해서 가져갔을 경우에 그 쪽 서버의 캐시에 해당 정보가 얼마나 머물지를 결정
SOA record
존 파일을 시작하는 레코드로 시작은 도메인명 또는 도메인명을 나타내는 기호인 '@'를 사용.
도메인
도메인명, 호스트명, 공백, @, * 등이 올 수 있음.
TTL
해당 레코드에 대한 TTL 값을 설정하는 항목
class
레코드의 클래스를 지정하는 부분. IN(internet), CH, HS 등을 사용.
type
해당 레코드의 타입을 지정
- A : IPv4
- AAAA : IPv6
- NS : 네임 서버
- MX : 메일 서버
- CNAME : Canonical Name 레코드로 일종의 별칭을 지정
- PTR : 리버스 존에서만 사용하는 레코드로 IP 주소를 도메인으로 변환하기 위해 지정
DNS 관련 유틸리티
named-checkconf
DNS 서버의 환경 설정 파일인 /etc/named.conf 파일의 문법적 오류를 찾아주는 명령
[사용법]
$named-checkconf [파일명]
named-checkzone
zone 파일의 문법적 오류를 찾아주는 명령
[사용법]
$ named-checkzone 도메인명 zone_파일 경로