본문 바로가기
Old Posts/Linux

[Linux] 명령행(터미널)에서 메일 보내기 - sendmail, mail(mailx) 명령 사용법 및 예제

by A6K 2021. 6. 9.

모니터링 스크립트를 작성하고 crontab을 이용해서 주기적으로 실행하도록 설정하는 경우, 문제가 생겼을 때 메일을 통해서 원격으로 리포트를 받아보길 원할 때가 있다. 리눅스에서는 이런 경우 메일 전송을 해주는 유틸리티를 이용해서 모니터링 결과를 메일로 전송할 수 있다.

sendmail 설치

CentOS 기준 yum을 이용해서 sendmail을 설치해준다.

$ sudo yum install sendmail sendmail-cf -y

그리고 sendmail 서비스를 실행해준다.

$ sudo systemctl start sendmail.service
$ sudo systemctl enable sendmail.service

 

mailx 설치

CentOS 기준, yum을 이용해서 mailx를 설치해준다.

$ sudo install mailx -y

설치가 완료되고 mail 명령을 이용해서 메일을 전송할 수 있다. 

mail 명령 옵션

mail 명령의 대표적인 옵션은 다음과 같다.

  • -s : 메일 제목
  • -r : 발신자 주소
  • -c : 참조 목록
  • -b : 숨은 참조
  • -a : 첨부 파일

mail 명령 사용법 및 예제

가장 기본적인 사용법은 다음과 같다.

$ mail -s "메일 제목" user@example.com

이 명령을 실행하면 전송할 메일의 본문을 입력할 수 있다. 메일의 본문을 모두 입력하고 [Ctrl] + D 를 누르면 입력이 끝나고 메일이 전송된다. 

$ mail -s "메일 제목" user1@example.com user2@example.com

여러명의 수신인을 입력하려면 이런식으로 하면 된다.

혹은 명령어의 끝에 'heredoc' 문법(<<<)으로 본문을 입력하거나 파이프라인으로 본문을 넘겨줄 수도 있다.

$ mail -s "메일 제목" user@example.com <<< '메일 본문'
$ cat mail_contents.txt | mail -s "메일 제목" user@example.com

아마도 스크립트 작성시 이런 형태를 많이 사용할 것이다.

$ mail -s "메일 제목" user@example.com < /dev/null

제목만 있는 '냉무' 메일을 보내려면 /dev/null을 이용하면 된다.

$ mail -s "메일 제목" -a attachment.pdf user@example.com <<< '메일 본문'

-a 옵션으로 파일 경로를 주면 메일에 첨부파일 형태로 추가가 된다.

댓글