리눅스 sendmail
IT 위키
더 많은 작업
리눅스에서 사용되는 메일 서버 프로그램
- /etc/mail/local-host-names : 메일 서버에 사용하는 도메인을 설정한다.
- /etc/mail/access : 메일 서버로 접근하는 호스트에 대한 접근제어(ACL)를 설정한다.
- /etc/mail/virtusertable : 특정 메일주소로 들어오는 메일을 다른 계정으로 포워딩한다.
- /etc/aliases : 특정 계정으로 들어오는 메일을 다른 계정으로 전송되도록 설정한다. 관리자(root)가 관리하며, 수정한 뒤 newaliases 를 실행해야 적용된다.
- ~/.forward : 일반 사용자가 자기 홈 디렉터리에 만들어 자기 계정으로 오는 메일을 다른 주소로 전달한다. 관리자 권한이 필요 없고, 파일에 전달받을 메일 주소를 적으면 된다.
- access와 virtusertable은 makemap hash 를 해 줘야 적용된다.
# makemap hash /etc/mail/access < /etc/mail/access
- 실제 설정 파일은 /etc/mail/sendmail.cf 인데 문법이 어려워 직접 고치지 않고, 매크로 파일 /etc/mail/sendmail.mc 를 고친 뒤 m4 매크로 처리기로 변환한다
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
| 명령 | 같은 명령 | 하는 일 |
|---|---|---|
| sendmail -bi | newaliases | /etc/aliases 를 고친 뒤 별칭 데이터베이스(aliases.db)를 다시 만든다 |
| sendmail -bp | mailq | 메일 큐의 내용을 출력한다 |
| sendmail -bd | 데몬으로 실행해 25번 포트에서 메일을 받는다 | |
| sendmail -q | 큐에 쌓인 메일을 바로 다시 보낸다 | |
| sendmail -bv 주소 | 주소가 어디로 배달될지 검사만 한다 |
- /etc/aliases 는 makemap 이 아니라 newaliases(sendmail -bi)로 반영한다. makemap 은 access·virtusertable 같은 맵 파일에 쓴다
/etc/mail/access 는 메일을 보내거나 받으려는 상대를 보고 릴레이 허용·수신 거부를 정하는 접근제어 파일이다. 한 줄에 대상과 동작을 적는다.
# cat /etc/mail/access Connect:localhost.localdomain RELAY Connect:192.168.5 DISCARD From:[email protected] REJECT From:cyberspammer.com REJECT To:abc.com OK
- 대상 앞의 접두어로 무엇을 보고 판단할지 정한다.
- Connect: — 접속해 오는 호스트·도메인·IP
- From: — 발신자 메일 주소나 도메인
- To: — 수신자 메일 주소나 도메인
- 접두어를 생략하면 Connect·From·To 모두에 적용된다.
- 동작
| 동작 | 의미 |
|---|---|
| OK | 다른 규칙과 관계없이 메일을 받는다 |
| RELAY | 받은 메일을 다른 곳으로 중계(릴레이)하는 것을 허용한다 |
| REJECT | 수신을 거부하고 거부 메시지를 돌려보낸다 |
| DISCARD | 받은 뒤 아무 통보 없이 버린다 |
| ERROR:코드 메시지 | 지정한 오류 코드와 메시지로 거부한다 |
| 501 메시지 | 501 오류 코드로 거부한다. 흔히 지정한 메일 주소와 일치하는 메일의 수신을 거부할 때 쓴다 |
| 550 메시지 | 550 오류 코드로 거부한다. 흔히 지정한 도메인과 관련된 모든 메일의 수신을 거부할 때 쓴다 |
- "발신자가 [email protected] 인 메일의 수신을 거부" 는 From:[email protected] REJECT 다. Connect: 는 메일 주소가 아니라 접속 호스트를 보는 접두어이고, RELAY 는 거부가 아니라 중계 허용이다.
- 고친 뒤에는 makemap 으로 access.db 를 다시 만들어야 적용된다(아래).
- 같이 보기