본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

리눅스에서 사용되는 메일 서버 프로그램

  • /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

sendmail.cf 와 m4

편집 원본 편집
  • 실제 설정 파일은 /etc/mail/sendmail.cf 인데 문법이 어려워 직접 고치지 않고, 매크로 파일 /etc/mail/sendmail.mc 를 고친 뒤 m4 매크로 처리기로 변환한다
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
  • m4 는 메일을 보내거나 확인하는 명령이 아니라 매크로 처리기다
  • 보냈지만 아직 전달되지 않은 메일은 큐(/var/spool/mqueue)에 쌓인다. 큐의 전송 상태는 mailq(sendmail -bp)로 보고, sendmail -q 로 바로 다시 보낸다
  • 메일을 쓰고 읽는 사용자 명령은 mail 이고, qmail·postfix 는 sendmail 을 대신하는 다른 메일 서버 프로그램이다 → MTA
명령 같은 명령 하는 일
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 를 다시 만들어야 적용된다(아래).