본문으로 바로가기

리눅스 서버의 쉘상태에서 사용할 수 있는 메일클라이언트 사용법에 대해서 알아봅니다. 윈도우 PC에서는 아웃룩을 사용하듯이 리눅스 쉘상태에서는 mail이라는 클라이언트 프로그램을 사용합니다.

mail 설치

CentOS 6.4 minimal에는 기본적으로 mail 이 설치되어 있지않다.

yum -y install mailx

  Dependencies Resolved

  =================================================================================
   Package          Arch              Version                Repository       Size
  =================================================================================

  Installing:

   mailx            x86_64            12.4-6.el6             base            234 k


  Transaction Summary

  =================================================================================
  Install       1 Package(s)

메일 보내기

서버사용자에게 메일보내기

현재 리눅스서버의 사용자들 대상으로 mail 명령어의 기본 사용법을 익혀 보자.

nestgoer에게 보낼 메일을 작성한다.

mail nestgoer

  # 제목을 입력하고 엔터
  Subject: 안녕하십니까?

  # 내용을 입력
  내가 바로 이 시스템의 관리자이올시다.
  하는 일을 잘 돌아가고 있는지요?   
  현재는 메일시스템을 체크중입니다.
  답장 부탁드리옵니다!! 

  # 메일의 종료는 Ctrl+D
  EOT

  # Cc는 같이 받을사람(참조자) 없으면 그냥 엔터   
  Cc: tiffiny     

웹메일 사용자에게 메일보내기

mail hahaha@daum.net

이하는 서버사용자에게 메일보내기와 같다.

메일읽기와 메일 읽은 후에 답장

기본적으로 메일은 /var/spool/mail 디렉토리에 ID와 동일한 파일로 저장된다.

ls -l /var/spool/mail

  합계 8
  -rw-rw---- 1 nestgoer mail 1312 2013-06-25 19:11 nestgoer
  -rw------- 1 root     mail 2316 2013-06-03 18:06 root

자기 계정으로 도착한 메일은 mail 명령어를 사용하여 확인할 수 있다. 위에서 보낸 메일의 받을 사람인 nestgoer로 시스템에 접속한다.

mail

  Heirloom Mail version 12.4 7/29/08.  Type ? for help.
  "/var/spool/mail/nestgoer": 2 messages 1 new
      1 root                  Tue Jun 25 19:04  21/577   "HELLO Nesgoer!"
  >N  2 root                  Tue Jun 25 19:11  21/735   "안녕하십니까?"
  &

두 개의 메일이 와 있고 새로운 메일을 알리는 >N 표시가 있다. & 문자 뒤에 메일의 숫자를 이용해 관련 메일을 확인할 수 있다.

&2
 
  Message  2:
  From root@uzuro.com  Tue Jun 25 19:11:17 2013
  Return-Path: 
  X-Original-To: nestgoer
  Delivered-To: nestgoer@uzuro.com
  Date: Tue, 25 Jun 2013 19:11:17 +0900
  To: nestgoer@uzuro.com
  Subject: 안녕하십니까?
  User-Agent: Heirloom mailx 12.4 7/29/08
  Content-Type: text/plain; charset=utf-8
  From: root@uzuro.com (root)
  Status: R

  내가 바로 이 시스템의 관리자이올시다.
  하는 일을 잘 돌아가고 있는지요?
  현재는 메일시스템을 체크중입니다.
  답장 부탁드리옵니다!!
  &

메일을 읽은 상태에서 r 혹은 R을 입력하면 답장을 작성할 수 있다. 또는 메일목록상태에서 & R 2 와 같이 사용하여 답장할 메일을 직접 지정하여 답장을 보낼수 도 있다.

& r

  To: nestgoer@uzuro.com root@uzuro.com
  Subject: Re: 안녕하십니까?

  root@uzuro.com (root) wrote:

  > 내가 바로 이 시스템의 관리자이올시다.
  > 하는 일을 잘 돌아가고 있는지요?
  > 현재는 메일시스템을 체크중입니다.
  > 답장 부탁드리옵니다!!
  안녕하십니까!
  답장 작성중입니다.
  확인해보세요
  EOT
  &

답장을 확인해보자

mail

  Heirloom Mail version 12.4 7/29/08.  Type ? for help.
  "/var/spool/mail/root": 6 messages 2 new
      1 nestgoer@uzuro.com    Mon Jun  3 14:19  17/590   "*** SECURITY informati"
      2 nestgoer@uzuro.com    Mon Jun  3 18:05  17/590   "*** SECURITY informati"
      3 nestgoer@uzuro.com    Mon Jun  3 18:06  17/590   "*** SECURITY informati"
      4 nestgoer@uzuro.com    Mon Jun  3 18:06  17/590   "*** SECURITY informati"
  >N  5 아무개                Tue Jun 25 19:29  28/981   "Re: 안녕하십니까?"
& 5

  Message  5:
  From nestgoer@uzuro.com  Tue Jun 25 19:29:18 2013
  Return-Path: 
  X-Original-To: root@uzuro.com
  Delivered-To: root@uzuro.com
  Date: Tue, 25 Jun 2013 19:29:18 +0900
  To: root@uzuro.com, nestgoer@uzuro.com
  Subject: Re: 안녕하십니까?
  User-Agent: Heirloom mailx 12.4 7/29/08
  Content-Type: text/plain; charset=utf-8
  From: nestgoer@uzuro.com (아무개)
  Status: R

  root@uzuro.com (root) wrote:

  > 내가 바로 이 시스템의 관리자이올시다.
  > 하는 일을 잘 돌아가고 있는지요?
  > 현재는 메일시스템을 체크중입니다.
  > 답장 부탁드리옵니다!!
  안녕하십니까!
  답장 작성중입니다.
  확인해보세요

종료는 q를 입력한다.

& q

mail 명령어상태에서 사용할 수 있는 명령어들

& ? - 도움말

? 라고 입력하면 mail 실행상태에서 사용할 수 있는 명령어와 도움말을 보여준다.

& h - 메일목록 확인하기

h 라고 입력하면 현재 mbox에 저장된 메일리스트, 즉 메일목록(헤드)만을 출력한다.

& q - 메일 종료

q 라고 입력하면 mail 실행상태에서 빠져나온다.

& n - 다음 메일 확인

n 라고 입력하면 현재 메일의 다음메일을 확인한다.

& !쉘명령어 - 쉘명령어 실행

!ls -l /etc와 같이 입력하면 mail 명령어상태에서 지정된 쉘명령어를 실행해준다.

& r 메일번호 - 답장을 보냄

r 메일번호 라고 입력하면 지정된 메일에 대하여 보낸 사람과 지정된 모든 받을 사람에게 답장을 보낸다.

& d 메일번호 - 메일을 mbox에서 삭제

d 메일번호 라고 입력하면 지정된 메일번호에 해당하는 메일을 mbox에서 삭제한다.

& u 메일번호 - 삭제시킨 메일을 복원

u 메일번호 라고 입력하면 삭제시킨 메일을 원상태로 복원한다. 즉, 삭제하지 않는다.

& s 메일번호 파일명 - 메일을 지정된 파일명에 저장

s 메일번호 파일명 이라고 입력하면 지정된 메일번호에 해당하는 메일을 지정된 파일명에 저장한다. 이때 저장위치는 계정의 홈디렉토리이다.

& m 사용자계정리스트 - 다중메일 보내기

m ID ID 라고 입력하면 메일을 받을 사용자들을 지정하여 메일을 보낸다.

& cd 디렉토리경로 - 디렉토리위치 변경

cd 디렉토리 라고 입력하면 mail 명령어상태에서 디렉토리위치를 변경한다.

특정 파일내용을 mail 명령어를 이용하여 메일로 보고 받기

실무와 관련해서 접목하면 될것 같다. Cron과 연동해서...!

echo 이용

echo "보낼내용" | mail -s "메일제목" 받을메일주소

echo "System OK" | mail -s "SystemCheck" root@uzuro.com

위와 같이 명령을 실행한 후에 아무런 에러메세지 없이 종료되었다면 메일은 성공적으로 발송된 것이다.

cat 이용

cat 보낼파일명 | mail -s "메일제목" 받을메일주소

cat result_system_check | mail -s "시스템체크 결과" root@uzuro.com 

result_system_check 파일에 시스템 체크사항을 자동으로 작성하게 하고 메일을 보내게 만들면 되겠다.