쉘스크립트

E-Mail 사용하기

트리스탄1234 2022. 7. 6. 13:25
728x90
반응형

요즘은 일상 생활이 거의 e-mail을 통해서 이루어 지기 때문에 리눅스에서도 e-mail사용이 필요하게 되었 습니다. 그럼 이번 Chapter에서는 리눅스에서 e-mail사용하는 방법에 대해서 알아 보도록 하겠 습니다.

Linux시스템은 Unix 환경에서 파생이 되었 습니다. 아래 그림은 Linux에서 e-mail 환경 구조 입니다.

Linux에서의 e-mail 시스템은 구 Unix에서 사용되는 이메일 시스템을 구현할 때 사용되었으며 Linux 환경으로 옮겨졌습니다.

e-mail에서의 주요 기능은 아래와 같이 3가지가 있습니다.

■ The Mail Transfer Agent (MTA)

■ The Mail Delivery Agent (MDA)

■ The Mail User Agent (MUA)

The Mail Transfer Agent

MTA는 e-mail 시스템에서 핵심 sw 입니다. mail을 보낼 상대방이 local 즉 동일 서버인 경우에는 MTA는 로컬 mailbox나 로컬 MDA로 메세지를 전달을 합니다. 로컬이 아니라 원격 메일 서버에 보낼 경우에는 원격 서버의 mta와 통신 링크를 생성을 해야 하는데, 이를 위해 아래와 같은 2가지 방법이 있습니다.

■ Direct delivery

■ Proxy delivery

인터넷에 직접 연결이 되어 있는 경우 메시지를 직접 전달 하기도 하고 이 경우에는 MTA가 DNS를 이용하여 목적지의 IP를 알아낸 후 해당 SMTP를 이용한 TCP 세션을 만든 후 전달을 합니다.

하지만 요즘은 보안상의 이유로 직접 전달 보다는 Proxy 서버를 이용한 간적적으로 전달을 하는 방식을 많이 사용을 하고 있ㅅ 습니다.

반응형

MTA SW중에 인기 있는 프로그램은 sendmail과 Postfix가 있습니다.

The Mail Delivery Agent

MDA 프로그램은 로컬 사용자를 대상으로 하는 메시지를 전달하는 것입니다. MTA로 부터 메세지를 전달 받고 정확히 어디로, 어떻게 전달할지를 결정을 합니다.

아래 그림은 MDA 다이어그램 입니다.

MDA가 메세지를 전달하는 메일 저장소는 아래와 같은 3가지 Type이 있습니다.

■ /var/spool/mail or /var/mail files

■ $HOME/mail files

■ Maildir-style mailbox directories

대부분의 리눅스 배포판은 /var/spool/mail or /var/mail 디렉토리를 사용하고 각 사용자마다 한개읠 파일을 사용하게 됩니다.

The Mail User Agent

지금까지 원격 호스트에서 로컬 호스트, 그리고 개인에 대한 이메일 트래픽을 추적했습니다. 사용자의 사서함. 프로세스의 다음 단계는 개별 사용자가 자신의 전자 메일을 볼 수 있도록 허용하는 것입니다.

MUA 프로그램은 사용자들에게 그 자신의 메일박스에 있는 메세지를 읽을수 있는 방법을 제공 하는 것 입니다.

다양한 Open Source중 가장 인기가 많은것은 Malix 입니다.

아래는 Malix의 사용 방법을 예제로 보여 줍니다. .

$ mail
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/rich": 2 messages 2 new
›N 1 atest@testbox Fri Feb 1 17:42 16/664 This is a test
N 2 atest@testbox Fri Feb 1 17:43 16/676 This is another
test
==>mail 명령은 메일박스에 있는 메일의 상태를 리스트 해 줍니다.
& 1 ==> 리스트된 메일의 번호를 입력하면 해당 메일의 내용을 표시해 줍니다.
Message 1:
From atest@testbox Fri Feb 1 17:42:56 2008
Date: Fri, 1 Feb 2008 17:42:56 -0500
From: atest@testbox
To: rich@localhost.localdomain
Subject: This is a test
This is a test message.
& d ==> 해당 메일을 삭제를 합니다.
& q ==> mail프로그램을 종료 합니다.
Held 1 message in /var/mail/rich
$mail Barbara ==> Barbara에게 보낼 메일을 작성 합니다.
Subject: This is a test message
This is a test message that I’m sending to Barbara.
.
Cc:
$

Graphical e-mail clients

앞서 살펴본 프로그램들은 텍스트 기반의 MUA 프로그램들 입니다. 하지만 요즘은 다양한 그래픽 기반의 MUA프로그램들을 제공하고 있고 그 중 유명한 프로그램은 아래와 같습니다.

■ KMail for the KDE windows environment

■ Evolution for the GNOME windows environment

메일서버 셋팅하기

그럼 아제 메일 서버를 사용하기 위해 서버 셋팅하는 방법을 살펴 보도록 하겠 습니다. 메일을 보내기 전에 사용하고 있는 Linux 시스템에서 MTA가 실행이 되고 있는지 확인을 해야 합니다.

sendmail

주요 실행 프로그램은 sendmail입니다. 일반적으로 백그라운드 모드에서 실행되며 원격 메일 서버에서 SMTP 연결을 수신 대기하고 다음에서 아웃바운드 메시지를 전달합니다.

sendmail을 제외 하고도 MTA를 구동하기 위한 설정파일들과 그 설정 옵션값들이 있습니다.

이 설정파일과 옵션에 대해서는 아래표를 참고 하시기 바랍니다.

구성 파일은 sendmail에 목적지 메일 주소를 조작하여 메시지를 전달할 위치와 방법을 결정합니다. 구성 파일의 기본 위치는 /etc/mail/sendmail.cf입니다.

sendmail.cf파일은 수신된 메세지를 분석하고 취할액션으로 구성된 rule로 구성이 되어 있습니다.

아래표는 sedmail에서 사용하는 configuration 파일들의 종류와 목적 입니다.

룰은 위의 각 Configuration file에 정의된 3가지 종류의 Helper가 있습니다. 그 helper는 아래와 같습니다.

■ Class: Rule이 특정 유형을 식별하는 데 도움이 되는 일반적인 메세지의 구문을 정의

■ Macors : 긴 문자열의 입력을 단순화하도록 설정된 값입니다.

■ sendmail: 프로그램의 동작을 위한 파라메터를 설정하기 위한 옵션 정의.

구성 파일은 일련의 클래스, 매크로, 옵션 및 규칙 집합으로 구성됩니다. 각 기능은 구성 파일에서 단일 텍스트 줄로 정의됩니다.

텍스트 라인의 시작에 위치하는 동작 문자는 해당라인이 어떻게 이용이 되는지를 표시 합니다.

아래표는 그 문자와 용도를 표시 설명한 표 입니다.

Postfix

sendmail과 같이 많이 사용되는 MTA프로그램으로 Postfix가 있습니다. 여기에 대해 간단히 알아 보도록 하겠 습니다. 아래는 Posix의 다이어 그램 입니다.

마스터 프로그램은 Posix의 전반적인 운영을 제어하기 위해 사용이 됩니다. 그리고 Posix의 다른 프로세스를 시작하는 역활을 담당 합니다.

아래의 코어 프로그램의 종류와 설명을 나타낸 표 이빈다.

install.cf: 구성 파일을 사용하여 사용된 설치 매개변수를 검색할 수 있습니다.

main.cf : Posix의프로그램의 동작을 제어하는 설정 파일 입니다. 아래는 기본 설정 파일 값 입니다.

# ===================================================================
#service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (50)
# ===================================================================
smtp inet n - n - - smtpd
pickup fifo n - n 60 1 pickup
cleanup unix - - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trac unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp -o fallback_relay=
showq unix n - n--showq
error unix - - n--error
local unix - n n--local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n-1anvil
scache unix - - n - 1 scache

Sending a Message with Mailx

셸 스크립트에서 전자 메일 메시지를 보내는 데 사용할 수 있는 주요 도구는 Mailx입니다. 프로그램. 대화식으로 사용하여 메시지를 읽고 보낼 수 있을 뿐만 아니라 메시지를 보내는 방법을 지정할 수도 있습니다.

mailx의 사용 구문은 아래와 같고 사용가능한 파라메터는 아래표와 같습니다.

■mail [-eIinv] [-a header] [-b addr] [-c addr] [-s subj] to-addr

아래는 몇가지의 메일 프로그램 사용 예제 입니다.

$ echo "This is a test message" | mail -s "Test message" rich
$ mail
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/rich": 1 message 1 new
›N 1 rich@testbox Fri Feb 1 19:12 16/664 Test message
&
Message 1:
From rich@testbox Fri Feb 1 14:12:03 2008
Date: Fri, 1 Feb 2008 19:12:02 -0500
From: rich ‹rich@testbox›
To: rich@localhost.localdomain
Subject: Test message
This is a test message
&
$ cat factmail
#!/bin/bash
# mailing the answer to a factorial
MAIL=`which mail`
factorial=1
counter=1
read -p "Enter the number: " value
while [ $counter -le $value ]
do
factorial=$[$factorial * $counter]
counter=$[$counter + 1]
done
echo The factorial of $value is $factorial | mail -s "Factorial
answer" $USER
echo "The result has been mailed to you."
$ ./factmail
Enter the number: 5
The result has been mailed to you.
$
$ mail
Mail version 8.1.2 01/15/2001. Type ? for help.
"/var/mail/rich": 1 message 1 new
›N 1 rich@testbox Fri Feb 1 19:24 16/671 Factorial answer
&
Message 1:
From rich@testbox Fri Feb 1 14:24:33 2008
Date: Fri, 1 Feb 2008 19:24:33 -0500
From: rich ‹rich@testbox›
To: rich@localhost.localdomain
Subject: Factorial answer
The factorial of 5 is 120
&

그럼 좀 더 장문의 메일을 보내는 예제를 살펴 보겠 습니다.

$ cat diskmail
#!/bin/bash
# sending the current disk statistics in an e-mail message
date=`date +%m/%d/%Y`
MAIL=`which mail`
TEMP=`mktemp tmp.XXXXXX`
df -k › $TEMP
cat $TEMP | $MAIL -s "Disk stats for $date" $1
rm -f $TEMP
$ ./diskmail rich
$ mail
Mail version 8.1.1 6/6/93. Type ? for help.
"/var/spool/mail/rich": 1 message 1 new
›N 1 rich@test2.dfas.mil Mon Feb 3 14:15 15/594 "Disk stats
for 02/03/"
&
Message 1:
From rich Mon Feb 3 14:15:57 2008
Delivered-To: rich@test2.dfas.mil
To: rich@test2.dfas.mil
Subject: Disk stats for 02/03/2008
Date: Mon, 3 Feb 2008 14:15:57 -0500 (EST)
From: rich@test2.dfas.mil (Rich)
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 3526172 1464476 1882576 44% /
/dev/hda6 16002168 6570168 8619116 43% /home
&

mutt프로그램 사용하기.

client프로그램으로 첨부 파일을 보낼 수 있는 프로그램이 mutt 입니다.

설치방법은 아래와 같습니다.

1) www.mutt.org 사이트에서 최신 버전을 다운로드 받습니다 .

2) 아래 명령을 이용하여 압축을 해제 합니다.

tar -zxvf mutt-1.4.2.3.tar.gz

3) 새로 생성된 디렉토리로 이동을 합니다.

cd mutt-1.4.2.3

4) 실행하기 위한 파라메터를 설정하기 위해 configure 파일을 실행 합니다.

./configure

5) 컴파일을 위해 make를 실행 합니다.

make

mutt사용 하기

mutt를 사용하는 방법과 예제를 살펴 봅시다.

사용방법은 아래와 같습니다.

mutt -s Subject -a file recipients

사용예제를 살펴 봅시다.

# echo "Here’s the log file" | mutt -s "Log file" -a /var/log/messages rich

아래표는 mutt의 명령어 파라메터에 대한 옵션표 입니다.

그럼 오늘은 여기까지 포스팅을 하도록 하겠 습니다.

728x90
반응형

'쉘스크립트' 카테고리의 다른 글

관리자를 위한 Shell Script  (1) 2022.07.06
Web 사용하기  (1) 2022.07.06
Database 이용하기  (0) 2022.07.06
Advance gawk  (0) 2022.07.06
진화된 sed  (1) 2022.07.06