[이것이 리눅스다(CentOS 8)] 10장. 메일 서버 설치와 운영

2023. 4. 3. 18:39·🐧 Linux/이것이 리눅스다(CentOS 8)

📝 메일 서버

  • 메일 서버란 프로토콜을 통해 클라이언트와 클라이언트 간의 메일 송수신을 지원하는 서버이다.
    • SMTP(Simple Mail Transfer Protocol): 클라이언트가 메일을 보내거나, 메일 서버끼리 메일을 주고 받을 때 사용하는 프로토콜
    • POP3(Post Office Protocol): 메일 서버에 도착되어 있는 메일을 클라이언트로 가져올 때 사용하는 프로토콜
    • IMAP(Internet Mail Access Protocol): POP3와 같음

 

📜 센드메일

  • 센드메일(sendmail)이란 리눅스에서 제공하는 패키지 중 전자메일(E-mail)을 전송하기 위해 사용되는 프로그램으로써, 간단하게 설치하여 사용할 수 있다.
  • 즉, 전자메일을 송수신하는 메일 서버에 설치되는 프로그램을 의미한다.

센드메일의 동작 원리

 

📜 메일 서버 구축 실습

메일 서버를 구현할 네트워크 환경 구성도

  • 메일 서버를 구축해보도록 할 것이며, 실습 구성도는 위와 같다.
  • Server와 Server(B) 두 개의 가상머신에 메일 서버를 구축하여 각각의 도메인 이름을 mail.daum.net, mail.naver.com으로 지정할 것이며, 그에 대응하는 메일 클라이언트는 WinCilent와 Cilent 가상머신이다.
    • 도메인 이름으로 daum.net과 naver.com을 사용해도 문제가 없는 이유는 사설 네트워크 안에서 이루어지는 활동이기 때문이다.
  • Server 가상머신의 경우 메일 서버와 더불어 네임 서버의 기능을 수행한다.

 

📄 메일 서버에 sendmail 및 dovecot 설치

  • 우선 아래 명령어를 통해 각각의 메일 서버에 sendmail과 dovecot 패키지를 설치해준다.
  • sendmail은 메일을 보내는 기능을 하고, dovecot은 메일을 받아오는 기능을 수행한다.
    • sendmail: 클라이언트 -> 서버
    • dovecot: 서버 -> 클라이언트
# dnf -y install sendmail
# dnf -y install sendmail-cf
# dnf -y install dovecot

 

📄 메일 서버 기본 설정 및 구축

  • 이제 현재 서버를 mail.naver.com 또는 mail.daum.net의 도메인 이름을 사용하는 메일 서버로 만들어주어야 한다.
  • 이를 위해 먼저 /etc/hostname 파일을 아래와 같이 수정해준다.
# nano /etc/hostname

  • 다음으로 /etc/hosts 파일에 아래와 같이 구문을 추가해준다.
# nano /etc/hosts

  • 다음으로 /etc/mail/local-host-names 파일에 아래와 같이 구문을 추가해준다.
# nano /etc/mail/local-host-names

  • 다음으로 /etc/sysconfig/network 파일에 아래와 같이 구문을 추가해준다.
# nano /etc/sysconfig/network

  • 이후 hostname 명령어를 통해 현재 서버의 호스트명을 출력해보면 정상적으로 설정된 것을 확인할 수 있다.

  • 다음으로 /etc/mail/sendmail.cf 파일로 이동하여 85행의 'Cwlocalhost'로 되어있는 부분을 아래와 같이 수정해준다.

  • 추가로 267행의 Addr 옵션을 삭제해준다.

  • 다음으로는 /etc/mail/access 파일에 아래와 같은 구문을 추가해준다.

  • 위 과정은 메일을 전달하는 기능(RELAY)을 우리가 만든 메일 서버에 추가하는 것이다.
  • 이후 위 설정 내용을 저장하기 위해 아래와 같은 명령어를 수행한다.
# makemap hash /etc/mail/access < /etc/mail/access
  • 다음으로 /etc/dovecot/dovecot.conf 파일을 열어 24행과 30행, 33행의 주석을 해제해준다.

  • 다음으로 /etc/dovecot/conf.d/10-ssl.conf 파일을 열어 8행의 ssl = required 구문을 다음과 같이 수정한다.

  • 다음으로 /etc/dovecot/conf.d/10-mail.conf 파일을 열어 25행과 121행, 166행의 주석을 해제해주고, 121행의 경우 구문 뒤에 아래와 같이 문장을 추가해준다.

  • 이렇게 하면 현재 서버를 mail.naver.com을 도메인으로 하는 메일 서버로 구현하는 기본적인 설정 및 구축은 끝났다.
  • 위 과정과 마찬가지로 Server(B) 가상머신에 대한 센드메일, dovecot 설치 및 설정을 수행한다.

 

📄 네임 서버 구축

  • 이후 위의 실습 구성도와 동일하게 Server 가상머신에 네임 서버를 추가로 구축해준다.
  • 네임 서버 구축 과정은 이전 포스팅에서 진행했기 때문에 생략하겠다.
  • 다만 다른 점이 있다면 캐시 DB에 저장될 zone 파일을 설정할 때 아래와 같이 작성해주어야 한다.
$TTL 3H
@ SOA @  root. ( 2 1D 1H 1W 1H )
  IN  NS @
  IN  A  192.168.111.100
  IN  MX 10 mail.naver.com.

mail IN A 192.168.111.100
  • 여기서 IN MX 10 mail.naver.com.의 의미는 이메일이 캐시 DB로 요청될 경우 이를 mail.naver.com을 도메인 이름으로 하는 메일 서버로 전달한다는 의미이다.
  • mail.daum.net 역시 위와 동일한 방법으로 설정해준다.
  • 설정을 완료했다면 아래 명령어를 통해 설정 파일에 문법 오류가 없는지 확인하고, 서비스를 시작시킨 뒤 마무리한다.
# named-checkconf
# named-checkzone naver.com naver.com.db
# named-checkzone daum.net daum.net.db

# systemctl restart named
# systemctl enable named
  • 추가로 이번에는 아예 방화벽을 끈 상태로 실습하기 위해 아래 명령어를 수행해주었다.
# systemctl stop firewalld
# systemctl disable firewalld
  • 이후 nslookup 명령어를 통해 간단히 테스트해보면 아래와 같다.

  • 네임 서버 구축을 완료했으니 해당 서버를 기본 네임 서버로 사용하도록 각각의 가상머신에 존재하는 /etc/sysconfig/network-scripts/ifcfg-ens160 파일 및 /etc/resolv.conf 파일의 네임 서버 IP 주소를 알맞게 변경해준다.

 

📄 메일 송수신 테스트

  • 위에서 구축한 메일 서버를 이용한 메인 송수신 테스트를 위해 먼저 메일 서버에 사용자를 등록한다.
    • 실제 메일 서버에 회원가입하는 개념과 동일하다.
  • 우선 각각의 메일 서버에 아래와 같은 방식으로 한 명씩 사용자를 추가해주었다.
# useradd lee
# passwd lee
  • 이후 클라이언트 시스템으로 접속하여 [현재활동] -> [에볼루션]을 실행하여 아래와 같이 메일 서버에 등록해주었다.

  • 이후 다른 클라이언트 시스템에서 위 사용자의 전자 메일 주소로 이메일을 전송하면 정상적으로 전달되는 것을 확인할 수 있다.
  • 즉, 우리가 구축한 메일 서버가 잘 동작한다는 것을 확인할 수 있다.

📝 웹 메일의 설치 및 사용

  • 웹 브라우저에서 메일을 사용하는 것을 '웹 메일'이라고 부른다.
  • 위에서 메일 서버를 구축하여 제대로 동작하는 것까지 확인하였으니 여기서는 이를 웹 기반으로 동작시켜 웹 메일처럼 사용하도록 구현해본다.

 

📜 라운드 큐브

  • 라운드 큐브(Roundcube)는 PHP로 작성되었으며, Sendmail 및 IMAP 서버(Dovecot)를 기반으로 하는 웹 메일 프로그램이다.
  • 반드시 아파치 웹 서버(httpd) 및 PHP가 설치되어 있어야 한다.
  • 라운드 큐브를 사용하면 일반적인 웹 메일과 거의 동일하게 사용할 수 있다.

 

📄 라운드 큐브 설치

  • 우선 라운드 큐브를 설치한다.
  • 참고로 라운드 큐브를 사용하기 위해서는 해당 메일 서버가 아파치 웹 서버가 되어야 하기 때문에 아래와 같은 패키지들을 함께 설치해준다.
# dnf -y install httpd mariadb-server php php-mysqlnd php-gd php-mbstring php-pecl-zip php-xml php-json php-intl
  • 이후 아래와 같이 서비스를 시작시킨다.
# systemctl restart httpd
# systemctl restart mariadb
# systemctl enable httpd
# systemctl enable mariadb
  • 이렇게 완전히 아파치 웹 서버로 만든 후에 라운드 큐브 프로그램을 다운로드 받기 위해 아래 명령어를 수행한다.
# wget https://github.com/roundcube/roundcubemail/releases/download/1.3.10/roundcubemail-1.3.10-complete.tar.gz
  • 이후 해당 파일의 압축을 푼다.
# tar xfz roundcubemail-1.3.10-complete.tar.gz
  • 압축을 풀고 나서 파일 이름을 간단하게 바꾸어주고, 해당 프로그램은 모든 사용자가 접근하여 사용할 수 있도록 해야하기 때문에 아래와 같은 명령어들을 수행해주었다.
# mv roundcubemail-1.3.10 roundcube
# chmod 777 roundcube/temp/
# chmod 777 roundcube/logs/

 

📄 데이터베이스 생성

  • 이제 메일을 저장하기 위한 라운드 큐브용 DB를 만들어야 하므로 위에서 설치한 mariaDB로 접속하여 아래 명령어들을 차례로 수행해주었다.
# mysql

> CREATE DATABASE emailDB;
> GRANT ALL ON emailDB.* TO 'emailAdmin'@'localhost' IDENTIFIED BY '1234';
> FLUSH PRIVILEGES;
> exit
  • 위 명령어은 단순히 'emailDB'라는 데이터베이스를 만들고, 해당 데이터베이스에 대한 모든 권한을 갖고 있는 사용자 'emailAdmin'을 생성한 것이다.(비밀번호는 '1234')

 

📄 라운드 큐브 설정 및 테스트

  • 이제 라운드 큐브로 접속하여 몇 가지 설정을 진행해주어야 한다.
  • 이를 위해 웹 브라우저에서 mail.naver.com/roundcube/installer로 접속한다.

Checking PHP extensions 부분이 모두 'OK'로 표시되어 있어야 함

  • 이후 아래로 스크롤하여 'NEXT' 버튼을 클릭한 뒤, 라운드 큐브 설정을 진행한다.
  • 'product_name'의 경우 원하는 이름을 입력하면 된다.

  • Database setup 부분은 아래와 같이 설정해준다.

  • 나머지 설정은 생략하고 아래로 스크롤하여 'CREATE CONFIG' 버튼을 통해 설정을 완료한다.
  • 이후에 나오는 화면에서 'Download' 버튼을 클릭하여 라운드 큐브 설정 파일을 다운로드한다.

  • 다음으로 위에서 다운로드한 파일을 /roundcube/config 폴더로 옮겨주고, 속성을 변경해주었다.
# mv /root/다운로드/config.inc.php /var/www/html/roundcube/config/
# chmod 707 /var/www/html/roundcube/config/config.inc.php
  • 이후 다시 웹 브라우저로 돌아와 'CONTINUE' 버튼을 클릭하고, 이후에 나오는 화면에서 'Initialize database' 버튼을 클릭하여 설정 파일대로 데이터베이스를 초기화한 뒤, 아래에 있는 테스트를 진행한다.

  • 아래와 같이 발신자와 수신자의 이메일을 입력한 뒤 테스트 버튼을 클릭하면 테스트 결과를 확인할 수 있다.

결과가 'OK'로 나온다면 정상

  • 바로 아래에 있는 테스트 역시 사용자 이름과 비밀번호를 입력하여 테스트를 수행해본다.

결과가 'OK'로 나온다면 정상

 

📄 클라이언트 테스트

  • 이제 실제 클라이언트로 접속하여 라운드 큐브를 테스트해보자
  • 마찬가지로 웹 브라우저를 열고 mail.naver.com/roundcube로 접속하면 로그인 화면이 출력되며, 로그인을 하고나면 우리가 흔히 사용하는 웹 메일과 비슷한 화면이 출력되게 된다.

  • 이후 기본 메일 서버와 동일하게 메일을 송수신해보면 정상적으로 전달되는 것을 확인할 수 있다.

 

📄 첨부파일 용량 설정

  • 추가로 라운드 큐브는 첨부파일을 함께 보낼 경우 첨부파일의 최대 용량을 2MB로 제한하고 있어, 이보다 큰 용량의 첨부파일은 보낼 수가 없는데 이를 수정하기 위해서는 웹 서버의 설정을 바꿔주어야 한다.
  • 이를 위해 메일 서버 컴퓨터로 돌아와 /etc/php/ini 파일을 열어 383행의 max_execution_time과, 672행의 post_max_size 그리고 825행의 upload_max_filesize를 적당한 값으로 늘려준다.

저작자표시 (새창열림)

'🐧 Linux > 이것이 리눅스다(CentOS 8)' 카테고리의 다른 글

[이것이 리눅스다(CentOS 8)] 13장. FTP 서버 설치와 운영  (0) 2023.04.05
[이것이 리눅스다(CentOS 8)] 12장. 웹 서버 설치와 운영  (0) 2023.04.05
[이것이 리눅스다(CentOS 8)] 09장. 네임 서버 설치와 운영  (0) 2023.04.03
[이것이 리눅스다(CentOS 8)] 08장. 원격지 시스템 관리하기  (0) 2023.04.02
[이것이 리눅스다(CentOS 8)] 07장. 쉘 스크립트 프로그래밍  (0) 2023.04.02
'🐧 Linux/이것이 리눅스다(CentOS 8)' 카테고리의 다른 글
  • [이것이 리눅스다(CentOS 8)] 13장. FTP 서버 설치와 운영
  • [이것이 리눅스다(CentOS 8)] 12장. 웹 서버 설치와 운영
  • [이것이 리눅스다(CentOS 8)] 09장. 네임 서버 설치와 운영
  • [이것이 리눅스다(CentOS 8)] 08장. 원격지 시스템 관리하기
Baeg-won
Baeg-won
  • Baeg-won
    좋았다면 추억이고 나빴다면 경험이다.
    Baeg-won
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🍃 Spring, Spring Boot
        • 스프링 프레임워크 기초
        • 스프링 핵심 원리 - 기본편
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편
        • 스프링 MVC
        • 실전! 스프링 부트와 JPA 활용1 - 웹 애플리..
      • 🥑 Web Technoloy
      • 🚗 Backend Toy Project
        • 스프링 부트 게시판
        • Photogram
        • Baeg-won Clothing Gallery
      • 🥇 Problem Solving
        • Breadth-First Search
        • Depth-First Search
        • Backtracking
        • Simulation
        • Two-pointer
        • Binary Search
        • Greedy
        • Dynamic Programming
        • Minimum Spanning Tree
        • Dijkstra
        • Floyd warshall
      • ☕ Java
        • 명품 자바 에센셜
        • Applications
      • 🍦 JavaScript
        • JavaScript 기초
      • 🐧 Linux
        • 이것이 리눅스다(CentOS 8)
      • 📟 Database
        • 혼자 공부하는 SQL
      • 🧬 Data Structure
      • 🎬 HTML
      • 🎤 Tech Interview
      • 📌 etc
        • Unity 2D Raising Jelly Game
        • C++
        • 영어 쉐도잉
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Baeg-won
[이것이 리눅스다(CentOS 8)] 10장. 메일 서버 설치와 운영
상단으로

티스토리툴바