Published Book on Amazon
All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1 | |
All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2 |
출판된 한글판 도서
최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상) | |
최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하) |
Original Book Contents
22.2 E-Mail 사용하기
22.2.1 <SSMTP> 프로그램 - 메일 전송 에이전트
우리는 보통 outlook이나 기타 도구를 이용하여 gmail.com이나 hanmail.net과 같이 자신이 사용하는 E-mail server를 통하여 다른 사람들에게 E-mail을 보낼 수 있다.
Raspberry Pi에서도 동일하게 자신이 사용하는 E-mail server를 통하여 E-mail을 보낼 수 있다. 이러한 작업을 하기 위해서는 E-mail server와 연결하여 E-mail을 보내는 MTA(Mail Transfer Agent) 프로그램이 필요하다.
우리는 Raspberry Pi에서 사용할 수 있는 MTA 프로그램 중에서 <SSMTP> 프로그램을 사용하여 작업을 할 것이다. 이 프로그램은 매우 간단한 프로그램으로 설정 내용이 간단하고 사용하기 쉽다.
이 프로그램을 설치하기 위해서 다음 명령을 수행한다.
sudo apt-get install ssmtp |
프로그램 설치가 완료되면, 해당 MTA 프로그램에 대한 설정을 해야 한다. <SSMTP> 프로그램 설치가 완료되면, <SSMTP> 프로그램에 대한 configuration 파일이 "/etc/ssmtp/ssmtp.conf" 파일에 생성되는데, 이 파일을 이용하여 설정 작업을 한다. 텍스트 파일 편집기를 이용해서 해당 파일의 내용을 수정한다.
다음은 주요 설정항목에 대한 설명이다. 메일 서버에 따라서 필요한 항목이 다를 수 있다.
■ 송신 시스템
■ Hostname= 메일 서버와 연결하는 Raspberry Pi의 hostname이다
■ 메일 server와 port 정보
■ mailhub= 메일 server의 DNS 이름과 port이다.
표준은 25 port를 사용하지만, 메일 server에 따라서 달라질 수 있다. 통상 SSL과 TLS에 대해서 port가 서로 다르다.
■ UseTLS= TLS(Transport Layer Security) 사용을 위한 설정이다
YES -- TLS 사용할 때
NO -- SSL 사용할 때
■ UseSTARTTLS= TLS(Transport Layer Security) 사용을 위한 설정이다
YES -- TLS 사용할 때
NO -- SSL 사용할 때
■ rewriteDomain= 대신 사용할 domain.
E-mail이 다른 E-mail server에서 보낸 것처럼 보이고자 할 때 사용할 domain을 지정한다.
■ 보내는 사람의 메일 계정 및 인증 방법
■ root= 보내는 사람의 mail address
■ AuthUser= 메일서버의 사용자 계정이다. 계정@메일서버
■ AuthPass= 메일서버의 사용자 계정에 대한 암호이다.
■ AuthMethod= 메일서버에 연결할 때 사용할 인증방법을 지정한다
■ FromLineOverride=메일의 보내는 사람에 대해 override를 허용할 지 여부 지정.
YES - Allow the user to specify their own From: address
NO - Use the system generated From: address
다음은 gmail.com을 이용하여 메일을 전송하기 위한 설정의 예이다.
root=username@gmail.com Hostname=raspberrypi AuthMethod=LOGIN FromLineOverride=YES UseSTARTTLS=YES |
"/etc/ssmtp/ssmtp.conf" 파일에 접근할 수 있는 권한을 제한하기 위해서 다음 명령을 실행한다.
chmod 774 /etc/ssmtp/ssmtp.conf |
여기서 부여한 권한의 의미는 다음과 같다. 이것은 파일 소유자와 소유 그룹은 모든 작업을 할 수 있지만 다른 사람은 "읽기"만 할 수 있게 한 것이다.
■ 7 -- 파일 소유자는 read, write, execute가 가능하다
■ 7 -- 파일 소유 그룹은 read, write, execute가 가능하다
■ 4 -- 기타 다른 user는 read가 가능하다.
이러한 방식으로 메일을 전송할 권한이 있는 user에게 필요한 권한을 부여할 수 있다.
<SSMTP> 프로그램의 설정 작업이 완료되면 Terminal 화면에서 곧바로 e-mail을 발송할 수 있다. <SSMTP> 프로그램을 이용하여 e-mail을 보낼 때는 다음과 같은 명령을 사용한다.
[명령 형식]
ssmtp <receiver-mail-address> |
[명령 개요]
■ <SSMTP> 프로그램을 시작한다.
■ user 권한 -- 일반 user.
[상세 설명]
■ 표준입력을 통한 메일 작성
아래와 같이 명령을 실행하면 <표준입력>을 통하여 <mail-content>를 입력하도록 한다. <표준입력>에서 메일 내용을 입력한 다음, 입력 완료를 의미하는 [Ctrl + D]를 누르면 메일발송 작업이 시작된다.
ssmtp <receiver-mail-address> > <mail-content> ß표준 입력 |
■ 입력 redirection 기능을 이용한 메일 작성
아래와 같이 입력 redirection 기능 "<<"을 이용하면 메일 내용을 보다 편리하게 입력할 수 있다. "EOF" 다음 라인부터 내용을 입력하고 입력이 완료되면 "EOF"를 입력한 다음 [Enter]를 눌러서 명령을 실행한다.
ssmtp <receiver-mail-address> << EOF <mail-content> EOF |
■ Mail 내용은 다음과 같은 구분자를 이용해서 구성한다.
■ From: -- 메일 내에서 표시되는 송신자의 메일 address
■ To: -- 메일 내에서 표시되는 수신자의 메일 address
■ Cc: -- 메일 내에서 참조 수신자의 메일 address
■ Bcc: -- 메일 내에서 숨은 참조 수신자의 메일 address
■ Subject: -- 메일의 제목
■ 본문 -- 앞의 다른 항목과 사이에 공백 line을 추가한 다음, 본문을 기술한다.
아래는 메일 내용을 구성해 본 사례이다.
To: receiver-email-address@gmail.com From: sender-email-address@gmail.com Subject: this is test subject
This is the mail body! |
[주요 option]
-auusername | Specifies username for SMTP authentication. |
-appassword | Specifies password for SMTP authentication. |
-t | Read message, searching for recipients. ``To:'', `Cc:'', and ``Bcc:'' lines will be scanned for people to send to. Any addresses in the argument list will be suppressed (not supported). |
-v | Go into verbose mode. |
[사용 Example]
다음은 Raspberry Pi에서 "gmail"을 통하여 다른 e-mail 계정으로 간단한 메일을 발송해 본 것이다.
pi@raspberrypi ~ $ ssmtp omegakim@realomega.com From: kim.dueggyu@gmail.com To: omegakim@realomega.com subject: test e-mail
This is test e-mail from Raspberry Pi. |
다음은 입력 redirection 기능을 이용하여 보다 편리하게 처리하는 사례를 본 것이다.
pi@raspberrypi ~ $ ssmtp omegakim@realomega.com << EOF From: kim.dueggyu@gmail.com To: omegakim@realomega.com subject: test e-mail This is test e-mail from Raspberry Pi. EOF |
아래는 수신자의 e-mail address를 "To:" 구분자에서 별도로 지정하지 않고, "–t" option을 사용하여 메일 본문 내용 속에 있는 "To:"에서 지정한 address를 찾아서 이용하도록 한 것이다.
pi@raspberrypi ~ $ ssmtp -t << EOF From: kim.dueggyu@gmail.com To: omegakim@realomega.com subject: test e-mail This is test e-mail from Raspberry Pi. EOF |
다음은 e-mail 수신을 outlook에서 확인한 것이다. gmail에서 보내온 e-mail이 확인된다.