본문 바로가기

CentOS/Study

[Study27]쉬운 Linux 사용자 커뮤니케이션 - mail / wall

반응형

mail 명령어

Linux에서 전자우편을 보내거나 확인하는 방법 중 하나는 mail 명령어를 사용하는 것입니다. System V 계열의 Unix에서는 이 명령어를 mailx라고도 부릅니다. 기본적으로 사용자 ID를 명시하지 않으면, 단순히 mail 명령어를 실행하여 수신된 메일함에 있는 메일을 확인할 수 있습니다. 메일은 사용자 ID 이름으로 만들어진 파일에 저장됩니다.

하지만 mail 명령어는 여러 가지 옵션을 사용하여 더 많은 기능을 수행할 수 있습니다. 예를 들어, -s 옵션을 사용하여 메일 제목을 추가하거나, -a 옵션을 사용하여 파일을 첨부할 수 있습니다. 또한, mail 명령어를 실행하는 대신 mailx 명령어를 사용하여 더 간편하게 메일을 작성하고 보낼 수 있습니다. 이러한 옵션과 명령어를 사용하면 전자우편을 더욱 유연하게 활용할 수 있습니다.

# mail
bash: mail: 명령을 찾을 수 없습니다...   8버전에서는 mail명령어가 기본적으로 설치되어 있지 않기 때문에 설치해주어야 한다.
'mailx' 명령을 제공하는 'mail' 패키지를 설치하시겠습니까? [N/y] y

 * 큐 대기 중...
 * 패키지 목록을 불러오고 있습니다....
다음 패키지를 설치해야 합니다:
 mailx-12.5-29.el8.x86_64	Enhanced implementation of the mailx command
변경 사항을 수행하시겠습니까? [N/y] y

 * 큐 대기 중...
 * 인증 대기 중...
 * 큐 대기 중...
 * 패키지 목록을 불러오고 있습니다....
 * 패키지 다운로드 중...
 * 데이터 요청 중...
 * 변경 사항 시험 중...
 * 패키지 설치 중...
No mail for root

# mail
No mail for root

메일 명령어를 사용하려면 먼저 mail 패키지가 설치되어 있어야 합니다. mail 명령어를 실행하면 현재 로그인한 사용자의 메일함에 도착한 메일을 확인할 수 있습니다.

 

[명령어 형식]

Linux에서 전자우편을 보내거나 확인하는 방법 중 하나는 mail 명령어를 사용하는 것입니다. mail 명령어를 실행하여 수신된 메일함에 있는 메일을 확인할 수 있습니다. 메일은 사용자 ID 이름으로 만들어진 파일에 저장됩니다.

mail 명령어는 여러 가지 옵션을 사용하여 더 많은 기능을 수행할 수 있습니다. 예를 들어, -s 옵션을 사용하여 메일 제목을 추가하거나, -a 옵션을 사용하여 파일을 첨부할 수 있습니다. 또한, mail 명령어를 실행하는 대신 mailx 명령어를 사용하여 더 간편하게 메일을 작성하고 보낼 수 있습니다. 이러한 옵션과 명령어를 사용하면 전자우편을 더욱 유연하게 활용할 수 있습니다.

mail 명령어를 사용하려면 먼저 mail 패키지가 설치되어 있어야 합니다.

명령어 설명
mail 메일함 확인
mail user01 특정 사용자에게 메일 보내기
mail -u user01 특정 사용자 메일함 확인
mail -s "Test Mail" user01 제목을 명령어 입력 시 포함하여 메일 보내기

 

[명령어 옵션]

옵션 설명
-s mail의 제목을 먼저 기재한다.
-u 관리자는 해당 사용자의 mail을 열어 볼 수 있다.

 

[참고]

/test/report.txt 파일의 내용을 입력받아 admin@example.com으로 메일을 보내는 명령어입니다.

# mail -s "OK: linuxXXX" admin@example.com < /test/report.txt

 

메일 테스트를 하기 전 작업

메일을 보내기 전에, /etc/hosts와 /etc/resolv.conf 파일을 수정해야 합니다.

 

/etc/hosts 파일 수정

우선 /etc/hosts 파일을 열어 수정합니다.

# vi /etc/hosts

다음과 같이 수정합니다.

[수정전]
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

[수정후]
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.200  server1.example.com     server1
192.168.10.252  server2.example.com     server2

 

/etc/resolv.conf 파일 수정

/etc/resolv.conf 파일을 열어서 수정합니다.

# vi /etc/resolv.conf

다음과 같이 수정합니다.

search example.com
nameserver 168.126.63.1

 

postfix 설치

mail 명령어를 사용하기 위해서는 mail 패키지가 설치되어 있어야 합니다. 아래 명령어를 입력하여 postfix 패키지를 설치합니다.

# dnf -y install postfix mailx

 

postfix 재시작

postfix를 사용하기 위해서는 postfix 서비스를 재시작해야 합니다.

# systemctl restart postfix

 

postfix 상태 확인

postfix 서비스가 정상적으로 시작되었는지 확인합니다.

# systemctl status postfix

이제 mail 명령어를 사용할 수 있습니다.

 

user01 사용자에게 mail보내고 확인하기

Step 1: 메일 보내기

# mail user01 /* 받는 사람의 메일 주소(EX: user01@naver.com) */
Subject: test mail
user01 Hi~~
<CTRL + D> or <.>

mail user01 명령어를 사용하여 user01에게 메일을 보낼 수 있습니다. 메일 제목은 Subject: 다음에 작성하고, 내용은 입력 후 CTRL + D 또는 .을 입력하여 종료합니다.

Step 2: 메일 확인하기

# mail
No mail for root (현재 root에는 메일이 없다.)

mail 명령어를 입력하면 현재 로그인한 사용자의 메일함에 도착한 메일을 확인할 수 있습니다. No mail for root라는 메시지가 나오면 아직 메일함에 메일이 없는 것입니다.

Step 3: 메일 내용 수정하기

# mail user01 /* 받는 사람의 메일 주소(EX: user01@naver.com) */
Subject: test mail
user01 Hi~~

Hello,

I am writing to you today in regards to the test mail you have received. I hope this message finds you well. I wanted to take the opportunity to touch base with you and ensure that you have received the test mail successfully.

As a reminder, the command "# mail" allows you to check whether you have any received mail. If there is no mail for root, the response will be "No mail for root."

If you have any questions or concerns, please do not hesitate to reach out to me directly.

Best regards,
[Your Name]

<CTRL + D> or <.>

 

다른 사용자의 mail 확인하기

관리자(root) 사용자는 모든 사용자의 메일 확인이 가능하며, 이메일 서버 관리, 사용자 권한 관리, 백업과 복구, 시스템 모니터링 등의 작업을 수행할 수 있습니다. 반면에 일반 사용자(fedora)는 자신의 메일 확인만 가능합니다.

또한, 이메일 서버 관리를 위해서는 관리자 권한이 필요하며, 관리자 권한을 설정하기 위해서는 이메일 서버를 설치한 사용자 중에서 root 계정으로 로그인하여 설정해야 합니다. 이메일 서버를 설치한 후 root 계정으로 로그인하여 관리자 권한을 설정하고, 나머지 사용자 계정을 추가하면, 이메일 사용자 계정이 생성됩니다. 이메일 사용자 계정은 사용자의 이름, 비밀번호, 이메일 주소 등을 포함하고 있으며, 각 사용자마다 메일함을 할당할 수 있습니다. 이메일 사용자 계정을 추가한 후에는 각 사용자가 사용할 수 있는 이메일 클라이언트 소프트웨어를 설치하고, 계정 정보를 입력하여 사용할 수 있습니다.

또한, 이메일 사용자 계정을 관리할 때에는 보안에 유의하여야 합니다. 사용자의 비밀번호는 주기적으로 변경하고, 암호화된 연결을 사용하여 이메일을 보내고 받을 수 있도록 설정해야 합니다. 이러한 보안 조치를 취하지 않으면, 사용자의 개인 정보가 유출될 수 있으며, 해커가 이메일 서버를 공격하여 중요한 정보를 탈취할 수도 있습니다.

Step 1: mail -u [사용자 ID] 명령어를 사용하여 해당 사용자의 메일함을 확인합니다.

# mail -u user01

Step 2: & [메일 번호] 명령어를 사용하여 특정 메일을 선택합니다.

& 1

Step 3: 메일 내용을 확인하고, & 명령어를 사용하여 메일함으로 돌아갑니다.

&

Step 4: 메일함으로 돌아간 후, 다른 메일을 확인하거나 quit 명령어를 사용하여 mail 명령어를 종료합니다.

& 2
& quit

위 과정은 user01의 메일함에서 첫 번째 메일을 선택한 후, 해당 메일 내용을 확인하고 메일함으로 돌아가 다음 메일을 선택하는 과정입니다.

실제 예제 코드는 아래와 같습니다.

# mail -u user01
& 1
&
& 2
& quit

위 코드 예제는 user01의 메일함에서 첫 번째 메일을 선택한 후, 해당 메일 내용을 확인하고 메일함으로 돌아가 다음 메일을 선택하는 과정입니다. & 명령어를 사용하여 메일함으로 돌아갈 수 있습니다. 마지막으로 quit 명령어를 사용하여 mail 명령어를 종료합니다.

 

제목을 포함하여 mail 전송하기

mail 명령어를 사용하여 이메일을 보낼 때, 이메일 제목을 포함하려면 아래와 같이 입력합니다.

# mail -s "test" user01 /* -s: Subject, mail의 제목을 포함하여 mail 창 열기 */

위 코드를 입력하면 이메일 창이 열립니다. 이메일 내용을 작성한 후, 다시 Enter 키를 누릅니다. 그 다음, 새 줄에 마침표(.)를 입력하고 Enter 키를 누릅니다. 마지막으로, EOT를 입력하고 Enter 키를 누르면 이메일이 전송됩니다.

이메일이 전송되었는지 확인하려면, 아래의 명령어를 사용합니다.

# mail -u user01

위 명령어를 입력하면 user01의 메일함이 나타납니다. 이메일이 전송되었다면, 메일함에 표시됩니다.

 

첨부 파일이 있는 이메일 보내기

첨부 파일이 있는 이메일을 보내려면, 아래와 같은 코드를 입력합니다.

# mail -s "TEST" user01 < /etc/hosts

위 코드는 /etc/hosts 파일을 첨부 파일로 하여 user01에게 이메일을 보냅니다.

이메일이 전송되었는지 확인하려면, 아래의 명령어를 사용합니다.

# mail -u user01

위 명령어를 입력하면 user01의 메일함이 나타납니다. 이메일이 전송되었다면, 메일함에 표시됩니다.

 

외부 메일 전송

외부 메일 서버로 메일을 보내려면 다음 명령어를 사용합니다.

# mail -s "test mail(EX: linuxXXX)" XXXXXX@gmail.com < /etc/hosts
-> 웹에서 확인

위 명령어는 리눅스 환경에서 사용하는 명령어입니다. mail은 이메일을 보내는 명령어입니다. -s 옵션은 제목을 지정하는 옵션입니다. XXXXXX@gmail.com은 받는 사람의 이메일 주소를 입력합니다. 마지막으로 < /etc/hosts는 본문 내용을 입력하는 것입니다. 이러한 방법으로 외부 메일 서버로 메일을 보낼 수 있습니다.

 

다중 사용자에게 메일 보내기

메일을 다수의 사용자에게 보내는 경우가 종종 있습니다. 이를 위해서는 위 코드와 같이 몇 가지 작업이 필요합니다.

먼저, email.list 파일을 작성해야 합니다. 이 파일에는 메일을 보낼 사용자의 이메일 주소를 한 줄에 하나씩 작성합니다. 이후, 아래의 코드를 실행합니다.

# cat email.list
root
user01
fedora
......

# for email in `cat email.list`
do
mailx -s "OK: linux2XX" admin@example.com < report.txt
done

이 코드는 email.list 파일에 작성한 모든 사용자에게 메일을 보냅니다. 보낼 메일 내용은 report.txt 파일에 있는 내용을 활용합니다. 이를 통해 효과적으로 다수의 사용자에게 메일을 보낼 수 있습니다.

 

메일 확인하기

명령어 설명
t <message list> 메일 내용 보기
n 다음 메일로 이동하여 내용 보기
e <message list> 메일 수정하기
f <message list> 메일 헤더 보기
d <message list> 메일 삭제하기
s <message list> file 메일을 파일에 추가하기
u <message list> 삭제한 메일 복원하기
R <message list> 메일 보낸 사람에게 회신하기
r <message list> 메일 보낸 사람과 수신자에게 회신하기
pre <message list> 메일을 /usr/spool/mail로 다시 보내기
m <user list> 특정 사용자에게 메일 보내기
q 메일함을 저장하고 종료하기
x 메일함을 저장하지 않고 종료하기
h 현재 메일 헤더 보기
! 셸로 이동하기
cd [directory] 디렉터리로 이동하기

메시지 목록은 정수, 동일한 범위 또는 사용자 이름으로 구성됩니다. 생략 된 경우, Mail은 마지막으로 입력 된 메시지를 사용합니다.

사용자 목록은 공백으로 구분 된 사용자 이름 또는 별칭으로 구성됩니다. 별칭은 홈 디렉토리의 .mailrc에 정의됩니다.

 

명령어 설명
h 목록보기
d 1-3 1번부터 3번 메일 삭제
5 번호 입력 -> 특정 번호 메일 읽기
q 한 번 읽은 메일은 q 로 종료하면 저장이 되기 때문에 나타나지 않음. x 로 종료하면 읽은 메일도 다시 나타난다.

위와 같은 명령어들을 사용하여 메일을 보내고 확인할 수 있습니다. 또한, 여러분이 메일을 보내는 이유와 목적, 그리고 받는 사람들의 정보를 고려하여, 적절한 인사말과 함께 자세한 정보를 추가해 보시는 것을 추천합니다. 메일의 내용을 구체적으로 작성하고, 필요한 정보들을 더함으로써, 더 의미 있는 메일을 작성할 수 있습니다.

예를 들어, 만약 여러분이 비즈니스 관련 메일을 보내는 경우, 해당 메일의 목적과 정보를 구체적으로 제시해야 합니다. 또한, 받는 사람의 이름과 직함을 정확히 표기하여, 신뢰성 있는 메일을 작성할 수 있습니다. 이러한 작업은 메일의 효과성을 높이고, 관계를 유지하는 데 큰 도움이 될 것입니다.

 

wall 명령어

'wall' 명령어는 접속 중인 모든 사용자에게 메시지를 전송하는 데 사용됩니다. 이 명령어는 예를 들어 시스템 재시작 전에 미리 접속 중인 사용자들에게 메시지를 보내는 등의 경우에 사용됩니다. 이렇게 함으로써 사용자들은 시스템 재시작에 대한 예고를 받아 불편함을 최소화할 수 있습니다. 이 명령어를 사용하여 모든 사용자에게 중요한 정보나 경고 메시지를 전달할 수 있으므로 유용하게 활용할 수 있습니다.

 

[명령어 형식]

# wall "test messages"

이 명령어는 시스템에서 모든 사용자에게 메시지를 보내는 기능을 제공합니다. 이 기능을 사용하면 서버 관리자가 모든 사용자에게 빠르게 메시지를 전달할 수 있습니다. 예를 들어, 서버 유지 보수를 위해 서버 다운타임이 필요한 경우, wall 명령어를 사용하여 모든 사용자에게 사전에 알릴 수 있습니다. 이를 통해 사용자들은 서버 다운타임에 대한 불편함을 최소화 할 수 있습니다.

 

wall 명령어 실습

[TERM1] user01 사용자 윈도우

# telnet localhost
user01 사용자의 윈도우

[TERM2] 관리자 윈도우

# wall "hello welcome to linux"

이번 예제에서는 "wall" 명령어를 사용하는 방법을 연습해보겠습니다. 먼저, user01 사용자를 위한 창을 열기 위해 "telnet localhost" 명령어를 사용합니다.

그 다음, 관리자 권한으로 두 번째 창을 열어 "hello welcome to linux"라는 메시지를 모든 사용자에게 전송하기 위해 "wall" 명령어를 사용합니다.

이 명령어를 연습함으로써, 사용자들은 서로 효과적으로 의사소통하며 중요한 정보를 공유할 수 있습니다.

 

wall 명령어 실습

# wall < /etc/hosts 

# wall
hello welcome to linux
<CTRL + D>

이 연습에서는 wall 명령어를 사용하는 방법을 연습해보겠습니다. wall 명령어는 현재 시스템에 로그인한 모든 사용자에게 메시지를 보내는 데 사용됩니다. 특히 중요한 공지나 경고를 모든 사용자에게 빠르게 전달하는 데 유용합니다.

먼저, 문서에서 제공하는 예제를 살펴보겠습니다. 첫 번째 명령어인 wall < /etc/hosts는 입력 리디렉션 기능을 사용하여 /etc/hosts 파일의 내용을 모든 사용자에게 메시지로 보내는 것입니다. 시스템에서 파일에 저장된 정보를 모든 사용자에게 빠르게 전달해야 하는 경우 유용합니다.

두 번째 명령어인 wall은 모든 사용자에게 사용자 지정 메시지를 보내는 데 사용됩니다. 예제에서는 메시지가 간단히 "hello welcome to linux"입니다. 메시지를 작성한 후 CTRL + D를 눌러 메시지 입력이 완료되었음을 알리고 메시지를 전송해야 합니다.

전반적으로, wall 명령어는 시스템 관리자가 시스템의 모든 사용자에게 중요한 정보를 빠르게 전달해야 할 때 유용한 도구입니다. 그러나 불필요한 혼란이나 방해를 일으키지 않도록 조심해서 사용해야 합니다.

 

긴급한 작업 공지시

시스템 유지보수 작업을 진행할 때, 가장 중요한 것 중 하나는 예기치 못한 문제가 발생할 때 적시에 대응할 수 있는 대처 계획을 갖추는 것입니다. 그러나 작업 공지를 하는데에도 몇 가지 중요한 사항이 있습니다.

작업 공지에는 다음과 같은 내용이 포함되어야 합니다.

 

- 어떤 작업을 수행할 것인지 명확한 설명

- 작업을 완료하기 위해 필요한 시간과 남은 시간에 대한 정보

- 작업이 완료될 때까지 시스템에 대한 영향

 

즉, 작업 공지는 시스템의 안정성과 가동 시간을 보장하기 위한 핵심적인 역할을 합니다.

예를 들어, "fsck CMD"나 "dump CMD"와 같은 긴급한 작업을 수행할 때에는, 시스템의 안정성을 보장하기 위해 작업 공지를 하여 시스템 사용자들이 이를 인지하도록 해야 합니다. 이 때, 작업 공지에는 작업의 내용뿐만 아니라 작업이 언제 시작되고 언제 끝나는지에 대한 정보도 포함되어야 합니다.

따라서, 작업 공지를 올바르게 작성하여 시스템의 안정성과 가동 시간을 보장하는 것이 매우 중요합니다.

긴급한 작업(EX: fsck CMD, dump CMD)를 수행할 때, 다음과 같은 몇 가지 지침을 따르는 것이 좋습니다.

1. 작업을 시작하기 전에, 다른 사용자들이 현재 작업 중인지 확인하세요.
2. 작업 내용을 지속적으로 업데이트하며, 다른 사용자들에게 작업 진행 상황을 알리세요.
3. 작업이 완료될 때까지 기다리세요. 작업이 길어질 수 있으니, 여유를 가지고 대기하세요.

위의 지침을 지키면서, 긴급한 작업을 수행하실 때는 다음과 같은 명령어를 사용하세요.

# wall < /etc/MESS/work.txt
..... 10분 .....
# wall < /etc/MESS/work.txt
..... 20분 ......
#

반응형