메일 관련 프로토콜
- SMTP (Simple Mail Transfer Protocol)
: 메일 클라이언트에서 메일 서버로 메일을 보낼 때 사용되는 프로토콜. 포트번호는 25번
- POP3 (Post Office Protocol Version 3)
: 메일 서버에 도착한 메일을 클라이언트에서 내려받아 읽을 수 있도록 해주는 프로토콜. 포트번호는 110번
: 메일 확인 시 서버에서 해당 메일이 삭제됨
- IMAP (Internet Mail Access Protocol)
: 메일 서버에 도착한 메일을 클라이언트에서 내려받아 있을 수 있도록 해주는 프로토콜. 포트번호는 143번
: 메일 확인 시 서버에서 메일이 삭제되지는 않지만, 메일 서버의 통신 트래픽을 높이는 단점 존재
메일 관련 프로그램의 분류
- MTA (Mail Transfer Agent)
: SMTP 프로토콜을 통해 다른 메일 서버로 메일을 전달 하는 프로그램
: sendmail, qmail, postfix, MS Exchange Server 등
- MUA (Mail User Agent)
: 사용자가 메일을 읽고 보낼 때 사용하는 프로그램
: kmail, evolution, mutt, thunderbird, Outlook 등
- MDA (Mail Delivery Agent)
: 메일 박스에 도착한 메일을 대행해서 가져오거나 전달하는 프로그램. 스팸 메일 필터링, 메일 정렬 등 수행
: procmail
sendmail 관련 명령어
- mailq
- sendmail
- makemap hash
- m4
mailq
: 보내려는 메일이 대기하는 디렉터리의 Queue 상태 출력
- 형식
: mailq [option]
- 주요 옵션
: -Ac
> /etc/mail/submit.cf 파일에 명시된 큐의 상태 출력
sendmail
: sendmail 관리
- 형식
: sendmail <option>
- 주요 옵션
: -bp
> 메일 큐의 상태 출력
: -bi (-l)
> 특정 계정으로 들어오는 메일을 다른 계정으로 전송되도록 설정하는 파일인 /etc/aliases 파일 수정 시 관련 DB 정보 파일 업데이트
: -oQ
> -bp 옵션과 같이 사용되는 옵션. 상태를 확인할 큐 지정
makemap hash
: sendmail에 대한 설정파일 수정 시 데몬에 적용하기 위한 명령어
- 형식
: makemap hash <target file> < <original file>
- 예시
```
makemap hash /etc/mail/access < /etc/mail/access
```
m4
: 파일 복원을 위한 매크로 명령어
- 형식
: m4 <originailfile> > <target file>
- 예시
```
m4 /etc/>mail>sendmail.ms > /etc/mail/sendmail.cf
```
sendmail 관련 파일
- /etc/mail/sendmail.cf
- /etc/mail/local-host-names
- /etc/mail/sendmail.mc
- /etc/mail/access
- /etc/aliases
- /etc/virtusertable
- ~/.forward
/etc/mail/sendmail.cf
: sendmail 관련 주요 환경설정 파일. 기본적인 메일 서버만 운영할 경우 거의 설정할 필요가 없음.
- 형식
Option=value
O Option=value
- 주요항목
: Cwlocalhost
> 메일을 수신할 호스트 이름을 명기 (Cw). 보통 도메인명을 기입. Cw도메인명 형식
: Fw/etc/mail/local-host-names
> 여러 도메인을 사용하는 경우 별도의 파일 지정 (Fw). Fw파일 형식
: #Dj$w.Foo.COM
> 특정 도메인명으로 지정하여 강제로 적용할 때 (Dj). Dj도메인명 형식
: Kvirtuser hash -o /etc/mail/virtusertable.db
> 여러 가상 호스트들이 동일한 계정을 메일 주소로 동시에 사용할 수 있도록 설정하는 파일 지정.
: Kaccess hash -T<TMPF> -o /etc/mail/access.db
> 특정 호스트나 도메인에 대해 sendmail로의 접근 (relay)을 제어하는 파일 지정.
: O AliasFile=/etc/aliases
> 특정 계정으로 오는 메일을 다른 계정으로 전송시키는 파일 지정
: #O MaxMessageSize=0
> 메일 메시지의 최대크기. byte 단위. 0이면 제한 없음
: O ForwardPath=$.z/.forward.$w:$z/.forward
> 개인 사용자가 본인의 계정으로 들어온 메일을 다른 메일로 포워딩 할 때 설정하는 파일명 지정
: O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
> SMTP 데몬 옵션으로, 25번 포트를 사용할 주소 지정. 보통 로컬호스트 주소로 지정. 0.0.0.0으로 할 경우 모든 주소에서 사용 가능
: O QueueDirectory=/var/spool/mqueue
> 메일 전송을 대기하는 큐 파일 위치 지정
/etc/mail/local-host-names
: 메일 서버에 사용하는 도메인을 설정하는 파일. 한 줄에 도메인 하나 씩 기입
```
2mukee.com
deragon.co.kr
```
/etc/mail/sendmail.mc
: sendmail의 매크로 설정 파일. 복원 시 m4 명령어로 복원 가능
- 복원
: m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
/etc/mail/access
: 메일 서버로 접근하는 호스트나 도메인의 접근을 제어하는 파일
: 허가할 호스트나 도메인은 통과 시킬 경우 RELAY / 거부할 경우 REJECT
: 파일 수정 후 makemap hash 명령어 수행 필요
- 형식
From:sender REJECT
Connect:visitor OK
To:receiver RELAY
- 항목별 설명
: From
> 메일을 발송한 클라이언트의 이메일, 도메인
: Connect
> 메일 서버에 접속하는 클라이언트의 주소 및 이름
: To
> 수신 대상의 이메일, 도메인
- 주요 정책
: RELAY
> 특정 호스트나 도메인의 접근 허용
: REJECT
> 메일을 거절하고 거부 메시지 발송
: DISCARD
> 거부 메시지 없이 메일 거절
: OK
> 조회가 되지 않은 DNS 라도 메일 허가. 보통 거부된 도메인에 대한 예외처리 시 사용
- 수정사항 적용
: makemap hash /etc/mail/access < /etc/mail/access
/etc/aliases
: 특정 계정으로 들어오는 메일을 다른 계정으로 전송되도록 설정하는 파일
: 보통 하나의 계정으로 들어오는 메일을 여러 사용자에게 전달할 때 설정
: 수정 후 newaliases 명령으로 적용해야함
- 형식
name: value1, value2, ...
name::include:file
- 예시
```
webmaster: 2mukee, deragon, tlgns7386@naver.com
# webmaster 계정에게 들어오는 메일을 2mukee 등에게 발송
admin::include:/etc/mail/adminfile
# admin 계정에게 들어오는 메일을 /etc/mail/adminfile 파일에 기재된 메일로 발송
: adminfile에는 포워딩할 계정을 한 줄에 하나씩 기입
```
- 적용방법 (1택)
: newailiases
: sendmail -bi
: sendmail -I
/etc/mail/virtusertable
: 여러 도메인에서 하나의 메일서버를 이용하는 환경에서 동일한 계정을 사용할 경우 도메인을 기준으로 포워딩 설정
: sendmail 데몬은 /etc/mail/virtusertable.db 파일을 참고하므로, makemap hash 명령어도 적용 필요
- 형식
name@domain target_name
@domain target_name@domain
- 적용
: makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
- 예시
```
admin@2mukee.com tlgns7386
admin@bagsingood.com 2mukee
@owin.co.kr tlgns1537@naver.com
```
~/.forward
: 각 사용자가 자신에게 들어오는 메일을 다른 메일로 포워딩 할 때 사용
: 자신의 홈 디렉터리안에 .forward 파일을 생성하고 포워딩할 메일주소를 한 줄에 하나씩 입력
: 해당 사용자에 대해서만 쓰기권한만 설정해야함
- 형식
name1@domain
name2@domain
- 적용
: vim ~/.forward
: chmod 600 ~/.forward
- 예시
```
tlgns1537@naver.com
tlgns7386@gmail.com
```
: 2mukee 사용자가 자신에 디렉터리에 .forward 파일을 생성하고 위와 같이 기재 시,
2mukee 계정에게 오는 메일은 기재된 메일로 포워딩 됨
sendmail 서버 설정
1) 외부에서 접속할 수 있도록 수정
- vim /etc/mail/sendmail.cf
```
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
# 위 항목을 아래와 같이 변경
O DaemonPortOptions=Port=smtp, Name=MTA
```
2) 메일 서버에서 사용하는 도메인을 기재
- vim /etc/mail/local-host-names
```
2mukee.com
```
3) 서버 실행
- service sendmail start
4) 서버 실행 확인
- ps aux | grep sendmail
5) 서버 설정 확인
- nslookup -type=ms 2mukee.com
6) 메일 발송 및 확인
- mail test@2mukee.com
Subject: Test!!!!
- mailq
: /var/spool/mqueue is empty일 경우 정상
7) 메일 수신 확인
- mail
Refference
'Certification > 리눅스마스터' 카테고리의 다른 글
리눅스 서비스 데몬 관리 (0) | 2022.10.20 |
---|---|
리눅스 DNS 서버 관리 (0) | 2022.10.20 |
리눅스 파일 서버 관리 3 - FTP (0) | 2022.10.20 |
리눅스 파일 서버 관리 2 - NFS (0) | 2022.10.20 |
리눅스 파일 서버 관리 1 - SAMBA (0) | 2022.10.20 |