yumyum

[Linux] 메일서버 본문

ICT기반 클라우드 네트워크 해킹 침해대응전문가/Linux

[Linux] 메일서버

yumyum0603 2023. 9. 13. 17:06

메일 서버 개념

[E-mail의 송수신에서 사용되는 프로토콜]

- SMTP(Simple Mail Transfer Protocol) : 클라이언트가 메일을 보내거나, 메일 서버끼리 메일을 주고 받을 때

- POP3(Post Office Protocol) : 메일 서버에 도착되어 있는 메일을 클라이언트로 가져올때

- IMAP(Internet Mail Access Protocol) : POP3와 같음

[sendmail 서버의 자세한 작동원리]

  • MTA(Mail Transfer Agent) : 다른 MTA나 메일 사용자에게 메일을 보내거나 받는 역할을 한다. 이 과정을 RELAY라고 부르며, 바이러스와 스팸메일에 대한 필터링 기능을 갖고있다. 25번 포트를 사용하는 SMTP에 의해 이뤄진다. 

        ex) Sendmail, Postfix, Omail, Zimbra, Exchange Server 2010 등    

  • MSA (Mail Submission Agent) : MUA로부터 메일메시지를 받아 메일 전송을 위해 MTA와 협력하는 소프트웨어. 들어오는 메일을 관장하는 MTA가 나가는 메일을 관장하는 MSA의 기능을 수행해 혼용 사용하지만, MTA와 MSA기능을 나눈 경우에 공식적으로 MTA는 25번, MSA는 587번 포트를 사용, 25번을 공용으로 사용한다.
  • MUA (Mauk User Agent) : 메일을 다운로드 하거나 MTA로 업로드, 생성, 읽기를 위해 사용되는 소프트웨어. 25번 포트를 사용하는 SMTP에 의해 접속이 이뤄지며, 인증과정을 거쳐야 한다.

ex) Thunderbird, Evolution, Outlook

  • MDA(Mail Delivery Agent), LDA(Local Delivery Agent) : MTA로부터 메일을 받아 사용자의 메일서버의 저장 디렉토리로 운반하는 역할. 메일서버 디렉토리에 잇는 내용을 수신 MUA가 읽어 로컬 PC에 다운로드.  IMAP,POP3 프로토콜을 사용한다.

ex) Dovecot, Courier, Cyrus


[메일서버]

네임서버가 완성 되어있어야 구성 가능

<server> -> 호스트 네임

# yum -y install sendmail

# vi /etc/hostname -> 호스트 이름 설정

mail.benmin.com

# vi /etc/hosts -> 호스트 설정

192.168.111.100 mail.benmin.com -> 추가

# vi /etc/sysconfig/network

HOSTNAME=mail.benmin.com

# vi /etc/mail/local-host-names

mail.benmin.com

# reboot

---------------------------------------------------------------------------------------

<core> -> 호스트 네임

# yum -y install sendmail

# vi /etc/hostname -> 호스트 이름 설정

mail.jake.com

# vi /etc/hosts -> 호스트 설정

192.168.111.200 mail.jake.com -> 추가

# vi /etc/sysconfig/network

HOSTNAME=mail.jake.com

# vi /etc/mail/local-host-names

mail.jake.com

# reboot

---------------------------------------------------------------------------------------

<server> -> 마스터 네임 서버 (yulim,nyj 만들기)

# yum -y install bind bind-chroot

# vi /etc/named.conf

any;

none;

any;

zone "yulim.com" IN {

type master ;

file "yulim.zone";

allow-update { none; };

};

zone "nyj.com" IN {

type master ;

file "nyj.zone";

allow-update { none; };

};

# cd /var/named/

# touch yulim.zone

# vi yulim.zone

$TTL 3H

@ SOA @ root. ( 2 1D 1H 1W 1H )

IN NS @

IN A 192.168.111.100

IN MX 10 mail.benmin.com.

mail IN A 192.168.111.100

 

 

# cp yulim.zone nyj.zone

# vi nyj.zone

$TTL 3H

@ SOA @ root. ( 2 1D 1H 1W 1H )

IN NS @

IN A 192.168.111.100

IN MX 10 mail.nyj.com.

mail IN A 192.168.111.100

# named-checkconf

# named-checkzone yulim.com yulim.zone

# named-checkzone nyj.com nyj.zone

# systemctl stop firewalld

# systemctl restart named

# systemctl enable named

# nslookup

> server 192.168.111.100

> mail.yulim.com

> mail.nyj.com

# vi /etc/sysconfig/network-scripts/ifcfg-eno16777728

-> DNS1 부분, 내 서버 ip로 수정

# vi /etc/resolv*

-> 내 ip로 수정

<core><클라이언트>

# vi /etc/resolv*

192.168.111.100

# nslookup mail.yulim.com

# nslookup mail.nyj.com

# yum -y install bind-utils -> nslookup 안될 때 설치

<윈도우>

도메인 네임 서버 변경

---------------------------------------------------------------------------------------

<서버>

# yum -y install sendmail-cf dovecot -> dovecot 설치

# vi /etc/mail/sendmail.cf 

85 Cwlocalhost -> Cwbenmin.com

264 Addr=127.0.0.1 부분삭제

Cw도메인 : 도메인 이름 정의

MaxMessage Size=용량 :1개 메일의 본문과 첨부파일을 합친 제한 용량 (바이트)

Mloca 설정내용: 전체 메일공간을 '설정내용'으로 제한한다

# systemctl restart sendmail -> 해놓고 다음 설정

# vi /etc/mail/access

benmin.com RELAY

jake.com RELAY

192.168.111 RELAY -> 추가

# makemap hash /etc/mail/access < /etc/mail/access  -> 전자에게 access 시켜주는 명령어

# vi /etc/dovecot/dovecot.conf   (dovecot은mra에 해당한다.)

24행 주석 제거 portocols = imap pop3 lmtp

30행 주석 제거 listen = *, ::

33행 주석 제거 base_dir = /var/run/dovecot

# vi /etc/dovecot/conf.d/10-ssl.conf

8행 ssl=required -> ssl=yes

# vi /etc/dovecot/conf.d/10-mail.conf

25행 주석제거 mail_location = mbox:~/mail:INBOX=/var/mail/%u

121행 주석제거 mail_access_groups = mail -> 내용도 수정

166행 주석제거 lock_method = fcntl

# vi /etc/dovecot/conf.d/10-auth.conf

10행 disable_plaintext_auth = no -> 주석지우고 수정 (평문전송도 전송할것임)

# useradd benmin

# passwd benmin

1234

# systemctl restart sendmail

# systemctl enable sendmail

# systemctl restart dovecot

# systemctl enable dovecot

---------------------------------------------------------------------------------------

<클라이언트>

# yum -y install evolution

https://centos.pkgs.org/7/nux-dextop-x86_64/geary-0.4.1-1.el7.nux.x86_64.rpm.html

# wget http://ftp.acc.umu.se/pub/GNOME/sources/evolution/3.6/evolution-3.6.4.tar.xz

<선더버드 클라이언트>

# yum -y install thunderbird 

(프로그램>인터넷 에서 썬더버드 설치한것을 실행할 수 있다.)

[계정설정]

계정 yulim@yulim.com

PW 1234

자동설정 -> pop3

수동설정 -> 110 암호화안함 자동검색

25 암호화안함 자동검색

계정 (benmin@benmin.com 클릭해서 홈으로)

계정 설정 보기-> 보내는 서버SMTP 확인 -> 인증방식 없음

-----------------------------------------------------

<에볼루션 클라이언트>

1. 프로그램 오피스 에볼루션

2 .신상정보

이름 민병욱 주소 benmin@benmin.com

3. 메일받기

서버종류 POP

서버 mail.benmin.com

포트 995

사용자이름 min

암호화방식 ssl 특정

3. 메일보내기

서버종류 smtp

서버 mail.benmin.com

포트 25

4. 계정요약

이름 min 메일

5. 이 암호를 키모음에 추가 [해제]

 

 

 

***dns 변경

centos -> # vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

rocky -> # vim /etc/resolv.conf
              # nmtui

---------------------------------------------------------------------------------------

[웹메일]

# cd /

wget http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/20/Everything/x86_64/os/Packages/s/squirrelmail-1.4.22-13.fc20.noarch.rpm

 

** wget -> 인터넷에서 가져와서 설치할 때

 

# yum -y localinstall squirrelmail* -> local 설치

 

# chown apache.apache -R /usr/share/squirrelmail/

# chown apache.apache -R /var/lib/squirrelmail/

# chown apache.apache -R /var/spool/squirrelmail/

# chown apache.apache /etc/squirrelmail/config.php

-> 소유권 변경

# /usr/share/squirrelmail/config/conf.pl -> 설정 변경

2 server setting

1 yulim.com

A,4 IMAP mail.yulim.com

8 server software -> other

S 저장, R 메인으로 이동

10 Language

1 ko_KR

2 Charset euc-kr

S 저장, R 메인으로 이동

S 저장, Q 나가기

language 설정

# vi /etc/httpd/conf/httpd.conf

Alias /webmail /usr/share/squirrelmail -> 제일 위에 추가, 긴 주소를 간단한 주소로 바꿈

# systemctl restart httpd -> 데몬 restart

# systemctl enable httpd

# vi /var/named/benmin.zone -> dns에 www 추가

www IN A 192.168.111.100

# systemctl restart named > 데몬 restart

# systemctl enable named

웹 브라우저

www.benmin.com/webmail

보안예외사항 추가 !!

================================================================================

[설정 심화]

<postfix 설치>

# cat /etc/resolv.conf -> dns 설정 확인

# systemctl restart named

# ps -ef | grep named -> dns 데몬 동작 확인

# host -v benmin.com -> dns 구동 확인

# yum -y install postfix -> sendmail과 같은 역할 패키지 설치

# rpm -qa | grep postfix

# ls /etc/postfix -> 설정 파일들 확인

# ls /var/log/maillog -> 로그 위치 확인

# systemctl stop sendmail

# alternatives --set mta /usr/sbin/sendmail.postfix

-> sendmail를 postfix로 대체

# systemctl restart postfix

# systemctl enable postfix

# systemctl ststus postfix

# lsof -i tcp:25

# netstat -natlp | grep master

# ps -ef | grep master

# grep smtp /etc/serviese

# grep pop3 /etc/services

# firewall-cmd --permaent --add-port=25/tcp

# systemctl stop firewalld -> 방화벽 배웠으니 끄고 시작

------------------------------------------------------------------------

<postfix 설정>

# nslookup

> server ms.benmin.com -> dns 서버에 정의 된 이름 확인

> server mail.benmin.com

# vi /etc/postfix/main.cf

75 myhostname = ms.benmin.com

83 mydomain = benmin.com

99 myorigin = $mydomain

116 inet_interfaces = all

119 inet_protocols = all

164 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

264 mynetworks = 192.168.111.0/24, 127.0.0.0/8

419 home_mailbox = Maildir/

572 smtpd_banner = $myhostname ESMTP

# systemctl restart postfix

# yum -y install telnet -> 생략해도 ㅇㅇ

# telnet localhost 25

------------------------------------------------------------------------

<dovecot 설치,설정>

# yum -y install dovecot

# rpm -qa | grep dovecot

# vi /etc/dovecot/dovecot.conf

24 protocols = imap pop3 lmtp

30 listen = *

# vi /etc/dovecot/conf.d/10-mail.conf

30 mail_location = maildir:~/Maildir

# vi /etc/dovecot/conf.d/10-auth.conf

10 disable_plaintext_auth = no

100 auth_mechanisms = plain login

# vi /etc/dovecot/conf.d/10-master.conf

19 port = 143

40 port = 110

96 unix_listener /var/spool/postfix/private/auth {

97 mode = 0666

98 }

# vi /etc/dovecot/conf.d/10-ssl.conf

8 ssl = no

# systemctl restart dovecot

# systemctl enable dovecot

# systemctl status dovecot

# lsof -i tcp:110

# lsof -i tcp:143

# netstat -natlp | grep dovecot

# ps -ef | grep dovecot

------------------------------------------------------------------------

** centos text mod에서는 웹메일 서버가 접속이 안되는 오류가 있을 수 있다.

  mod_ssl을 깔아주면 웹메일에 들어가지지 않는 오류를 해결 할 수 있다. (centos second가 최소모드라 ssl mod가 필요하다)

 

'ICT기반 클라우드 네트워크 해킹 침해대응전문가 > Linux' 카테고리의 다른 글

[Linux] PXE  (0) 2023.09.15
[Linux] DHCP  (0) 2023.09.11
[Linux] Bridge  (0) 2023.09.07
[Linux] 포트포워딩, 브릿지  (0) 2023.09.07
[Linux] HTTPs  (0) 2023.09.06