Raspberry Pi_Kor_22.2.1 SSMTP 프로그램 – 메일 전송 에이전트


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
mailhub=smtp.gmail.com:587               
rewriteDomain=gmail.com

Hostname=raspberrypi
AuthUser=username@gmail.com
AuthPass=password

AuthMethod=LOGIN

FromLineOverride=YES
UseTLS=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이 확인된다.


 

 

Leave a Reply