Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

메일 시스템 본문

운영체제/Linux - CentOs

메일 시스템

세레프 2023. 4. 10. 13:08

 서버는 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 프로그램으로, 이러한 서비스를 제공받는 프로그램을 클라이언트라고 한다. 쉽게 말하면, 서비스를 제공하는 프로그램이 설치되어 있는 운영체제는 서버, 서비스를 제공받는 프로그램이 설치되어 있는 운영체제를 클라이언트라고 한다.

  1. web: apache, IIS(windows에서만 사용)
  2. mail : SMTP(sendmail, postfix, qmail), pop3, imap
  3. name : BIND
  4. FTP: vsftpd, proftp, wu_ftp
  5. telnet: telnet
  6. SSH : ssh
  7. DB : MySQL, MariaDB
  8. etc : NFS, SAMBA ....

 위의 리스트는 서버 프로그램을 기능별로 구분한 것으로, 해당 프로그램을 개별적으로 운영체제에 다운로드해야 하며, 설치하면 클라이언트에게 해당 기능을 제공할 수 있다.

 

서버 관련 명령어들
yum -y install 프로그램 : 프로그램을 설치하는 명령어

systemctl [ start / stop / restart ] [데몬] : 프로그램을 실행, 정지, 재시작하는 명령어

systemctl 
[ enable / disable] [데몬] : 운영체제를 부팅할 때, 프로그램 활성화, 비활성화 하는 명령어

setenforce [ 0 / 1 ] : SELinux(linux의 자체적으로 가지고 있는 커널기반 방화벽)을 비활성화 / 활성화하는 명령어

 

 메일 시스템

 Mail system다른 서버와 메일을 송수신할 수 있는 시스템으로, 송신 프로토콜인 SMTP과 수신 프로토콜인 pop3, IMAP가 있다. 해당 시스템의 클라이언트는 outlook, express(window용)와 Evolution(Linux)이다.

 

 SMTP메일 송신할 때 사용하는 송신 프로토콜로, 클라이언트에서 서버로 메일을 송신할 때와 서버와 서버사이의 메일 송신할 때 사용한다. 특히, 서버 내부에서 메일을 사용할 때에는 송신 프로그램만 있어도 사용이 가능하다.

 

 SMTP는 도메인을 통해 해당 IP주소에 메일을 송신하지만 메일을 수신하는 기능은 없다. 그래서 수신 프로토콜인 pop3와 IMAP가 필요한 것이다. 

 

 pop3IMAP메일을 수신할 때 사용하는 수신 프로토콜로, SMTP를 통해 송신된 메일을 서버에서 클라이언트로 수신할 때 사용한다.  pop3사용자가 메일을 읽어오면 서버에서 메일을 삭제한다. 그래서 적은 용량을 사용한다. 하지만 IMAP 사용자가 메일을 읽어와도 서버에서 메일을 보관한다. 그래서 클라이언트에 문제가 생기더라도 메일을 서버쪽에서 다시 호출할 수 있다.

 

Sendmail

 sendmail 서버는 SMTP를 사용하는 메일 송신 서버 프로그램으로, port 25번을 이용해서 클라이언트에게 받은 메일을 해당 도메인의 사용자에게 전송한다.

 

Sendmail 프로그램의 데몬, 환경설정파일

  • 환경 설정 파일 : /etc/mail/sendmail.cf
  • 데몬 :  sendmail

 

dovecot

 dovecot서버는 pop3와 IMAP 둘다 사용하는 메일 수신 서버 프로그램으로, pop3으로 수신할 때에는 TCP port 110번을 이용하며, IMAP으로 수신할 때에는 TCP port 143번을 이용한다. 

 

dovecot 프로그램의 데몬, 환경설정파일

  • 환경설정 파일
    • 주환경설정파일 : /etc/dovecot/dovecot.conf
    • 인증관련 파일 : /etc/dovecot/conf.d/10-auth.conf
    • 메일 관련 파일 : /etc/dovecot/conf.d/10-mail.conf
  • 데몬 : dovecot

 

프로그램 설치

  • yum -y install sendmail* : 송신 서버프로그램 sendmail 설치하는 명령어
  • yum -y install dovecot* : 수신 서버프로그램 dovecot 설치하는 명령어

 

DNS에 MX레코드 추가

 서버는 메일을 송신하기 전에 도메인 명의 IP주소를 확인해야 하는데, 이때 DNS의 MX레코드를 확인한다. MX레코드메일을 받는 메일 서버 주소를 나타내는 레코드로, 각각의 MX레코드에 지정된 메일 서버 주소 A레코드로 메일 서버 IP주소를 부여해야 한다.

  • 도메인 등록
zone "server.co.kr" IN {
        type master;
        file "server.co.kr.zone";
        allow-update { none; };
};

zone "client.co.kr" IN {
        type master;
        file "client.co.kr.zone";
        allow-update { none; };
};
  • 도메인 레코드(정보) 등록
$TTL    0
@       IN      SOA     server.co.kr.   admin.server.co.kr.             (

                        20230326        ;Serial
                        1D              ; Refresh
                        1H              ; Retry
                        1W              ; Expire
                        1W              ; Minimum TTL
)

        IN      NS      server.co.kr.
        IN      A       192.168.158.128
www     IN      A       192.168.158.128
        IN      MX      10      mail.server.co.kr.
mail    IN      A       192.168.158.128
$TTL    0
@       IN      SOA     client.co.kr.   admin.client.co.kr.             (

                        20230326        ;Serial
                        1D              ; Refresh
                        1H              ; Retry
                        1W              ; Expire
                        1W              ; Minimum TTL
)

        IN      NS      client.co.kr.
        IN      A       192.168.158.150
www     IN      A       192.168.158.150
        IN      MX      10      mail.client.co.kr.
mail    IN      A       192.168.158.150

 메일서버는 여러 개로 운영되는 경우가 많기 때문에, DNS에 우선순위를 붙혀서 작성해야 한다.

 

방화벽 해제

"메일 시스템"을 통해 다른 서버에게 메일을 보내기 위해서는 서버끼리 서로 접근할 수 있어야 한다. 접근하기 위해선 서버 운영체제의 방화벽을 해제할 필요가 있다. 만약 방화벽이 설정 되어있으면, 방화벽에 SMTP, pop, IMAP 포트가 설정되어 있지 않아서 해당 포트로 서버에 접근이 불가능하게 된다.

  • systemctl stop firewalld : 방화벽을 정지시키는 명령어
  • setenforce 0 : SELinux(linux의 자체적으로 가지고 있는 커널기반 방화벽)을 비활성화하는 명령어

 방화벽을 해제하고 host명령어로 도메인의 IP 주소를 출력하면 다음과 같이 나타난다.

[root@localhost mail]# host server.co.kr
server.co.kr has address 192.168.158.128
server.co.kr mail is handled by 10 mail.server.co.kr.
[root@localhost mail]# host client.co.kr
client.co.kr has address 192.168.158.150
client.co.kr mail is handled by 10 mail.client.co.kr.

 

Sendmail 주요 설정파일 설정

  • 주 환경설정 파일(/etc/mail/sendmail.cf) 수정
메일 서버가 사용할 도메인 지정
포트를 사용 할 수 있는 IP주소 변경

 

  •  수신 허용 도메인 설정 파일(/etc/mail/local-host-name) 수정

 해당 파일에는 메일을 받을 호스트명을 입력한다. 이때, 여러 개의 호스트를 적을 경우 한줄에 하나의 호스트명만 적어야 한다.

 

  • 호스트, 도메인의 접근 제어 파일(/etc/mail/access) 수정

  해당 파일은 메일 서버로 접근하는 호스트나 도메인을 제어할 때 사용하는 파일로, 4가지의 속성으로 제어한다.

RELAY OK REJECT DISCARD
접근 허용 항시 허용 메일 거부 메일 거부, 거부 메세지 전송

설정이 완료 되었으면, "makemap hash access < access" 통해 DB파일로 복사한다.

 

 

호스트 네임 변경 

  • 호스트 네임 파일(/etc/hostname) 수정

 해당 파일은 해당 서버의 호스트 네임을 나타내는 파일로, 메일을 송수신 하기 위해서는 호스트명이 존재해야 한다. 따라서 기존의 "localhost.localdomain"을 삭제하고 호스트명으로 변경해야 한다.

 

  • 호스트 파일(/etc/hosts) 수정

 해당 파일은 도메인명의 IP주소를 찾을 때, 도메인 서버보다 먼저 해당 파일을 확인 하는 파일이며, 해당 파일에 해당 서버의 호스트의 IP주소와 호스트명를 적으면 된다.

 

  • 호스트 네임 지정파일(/etc/sysconfig/network) 수정

 해당 파일은 호스트 네임을 영구적으로 변경하기 위해서 사용한다. 

 

 

dovecot 주요 설정파일 설정

  • 주 환경설정파일(/etc/dovecot/dovecot.conf) 설정
# Protocols we want to be serving.  
protocols = imap pop3 lmt

# A comma separated list of IPs or hosts where to listen in for connections. 
# "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.
# If you want to specify non-default ports or anything more complex,
# edit conf.d/master.conf. 
listen = *, ::

# Base directory where to store runtime data.
base_dir = /var/run/dovecot/
  • protocols = imap pop3 lmt : dovecot에서 사용할 프로토콜 설정
  • listen = *, :: : 접근을 허용하는 IP 혹은 host 설정
  • base_dir = /var/run/dovecot/ : 프로그램이 설치된 디렉토리 위치

 

  • 인증관련 파일(/etc/dovecot/conf.d/10-auth.conf) 설정
# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you're connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
# See also ssl=required setting.
disable_plaintext_auth = no

 SSL/TLS를 통한 인증의 여부에 대한 설정으로, no라고 함으로써 인증과정을 거치지 않는다.

 

  • 메일관련 파일(/etc/dovecot/conf.d/10-mail.conf) 설정
mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u:INDEX=MEMORY

 메일이 저장되는 경로및 파일명 지정하는 설정이다.

 

 

Mail Server 실행 

  • systemctl restart sendmail : 송신 메일 서버 재시작하는 명령어
  • systemctl restart dovecot : 수신 메일 서버 재시작하는 명령어

 위의 명령어가 정상적으로 작동이 되면, server유저 쪽에서 client쪽으로 메일을 보내면 정상적으로 보내지는 것을 확인 할 수 있다.

[root@server etc]# mail client@client.co.kr
Subject: server -> client
hello!
.
EOT
[root@client mail]# cat client
From root@server.server.co.kr  Mon Apr 10 13:04:44 2023
Return-Path: <root@server.server.co.kr>
Received: from server.server.co.kr ([192.168.158.128])
	by client.client.co.kr (8.14.7/8.14.7) with ESMTP id 33A44hhj004530
	for <client@client.co.kr>; Mon, 10 Apr 2023 13:04:44 +0900
Received: from server.server.co.kr (localhost [127.0.0.1])
	by server.server.co.kr (8.14.7/8.14.7) with ESMTP id 33A44hSq004299
	for <client@client.co.kr>; Mon, 10 Apr 2023 13:04:43 +0900
Received: (from root@localhost)
	by server.server.co.kr (8.14.7/8.14.7/Submit) id 33A44hv1004292
	for client@client.co.kr; Mon, 10 Apr 2023 13:04:43 +0900
From: root <root@server.server.co.kr>
Message-Id: <202304100404.33A44hv1004292@server.server.co.kr>
Date: Mon, 10 Apr 2023 13:04:43 +0900
To: client@client.co.kr
Subject: server -> client
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

hello!

'운영체제 > Linux - CentOs' 카테고리의 다른 글

데이터 베이스 관리 서버(DBMS)  (0) 2023.04.09
WEB 서버(HTTP)  (0) 2023.04.03
도메인 네임 시스템(DNS)  (0) 2023.04.02
동적 IP 할당 서버(DHCP)  (0) 2023.03.27
파일 전송 시스템(FTP)  (0) 2023.03.26
Comments