본문 바로가기
Linux/Rocky Linux

[Rocky Linux] 10. 메일 서버 설치 및 운영하기

by 박기린 2024. 12. 11.
본 내용은 대학 강의시간에 배운 내용을 따로 정리하는 글로, 독자를 구체적으로 정하지 않고 썼습니다.
따라서 읽기에 많은 불편함이 있습니다.

다른 글을 읽으시는 것을 적극 권장드립니다.

메일서버 구현을 위한 네임서버 구현

4개의 가상머신을 모두 초기화하고 실행

먼저 Server부터.

dnf -y install sendmail

센드메일 패키지를 설치한다.


gedit /etc/hostname

이 파일을 열면 빈 파일이 나온다.

맨 위에,

mail.naver.com 을 적어준다.


 

gedit /etc/hosts

 

192.168.111.100  mail.naver.com

hosts 파일에 위 텍스트를 입력하고 저장한다.


 

gedit /etc/mail/local-host-names

 

mail.naver.com

똑같이 내용을 추가하고 저장.

 
 
 

 

gedit /etc/sysconfig/network
HOSTNAME=mail.naver.com

위 내용을 추가하고 저장.

총 4개의 파일 수정 후, reboot 하기

컴퓨터 이름이 mail.naver.com으로 바뀌면서,

터미널 이름에서 맨 앞의 ‘mail’로 컴퓨터 이름이 보인다.

 

 

이제 Server(b)로 간다.

dnf -y install sendmail

똑같이 sendmail 패키지를 설치한다.

그리고 Server랑 동일하게 4개의 파일을 수정한다.

(gedit x, nano o)

ip주소는 192.168.111.200

주소는 mail.daum.net으로

이후 reboot를 한다.

Server와 동일하게 컴퓨터 이름이 mail로 뜬다

이제 두 개의 메일서버가 완성됐으니, Server 가상머신에 추가로 ‘네임서버’를 만들 차례이다.

Server가상머신으로 이동한다.


 

dnf -y install bind bind-chroot

위 두 패키지를 설치한다.

 

 



gedit /etc/named.conf

11행 - 127.0.0.1 → any

12행 - ::1 → none

19행 - localhost: → any

33행 - yes → no

맨 밑에,


 

zone "naver.com" IN {
	type master;
	file "naver.com.db"
	allow-update { none;};
}

zone "daum.net" IN {
	type master;
	file "daum.net.db"
	allow-update { none;};
}

위 내용 추가.

 

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
	listen-on port 53 { any; };
	listen-on-v6 port 53 { none; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
	memstatistics-file "/var/named/data/named_mem_stats.txt";
	secroots-file	"/var/named/data/named.secroots";
	recursing-file	"/var/named/data/named.recursing";
	allow-query     { any; };

	/* 
	 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
	 - If you are building a RECURSIVE (caching) DNS server, you need to enable 
	   recursion. 
	 - If your recursive DNS server has a public IP address, you MUST enable access 
	   control to limit queries to your legitimate users. Failing to do so will
	   cause your server to become part of large scale DNS amplification 
	   attacks. Implementing BCP38 within your network would greatly
	   reduce such attack surface 
	*/
	recursion yes;

	dnssec-validation no;

	managed-keys-directory "/var/named/dynamic";
	geoip-directory "/usr/share/GeoIP";

	pid-file "/run/named/named.pid";
	session-keyfile "/run/named/session.key";

	/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
	include "/etc/crypto-policies/back-ends/bind.config";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
	type hint;
	file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

zone "naver.com" IN {
	type master;
	file "naver.com.db";
	allow-update { none;};
};

zone "daum.net" IN {
	type master;
	file "daum.net.db";
	allow-update { none;};
};

수정된 파일의 모습.

 

 

cd /var/named/
touch naver.com.db daum.net.db

도메인 db파일 생성

각 db 파일에

 

 

$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

naver.com.db

 

 

$TTL 3H
@ SOA @ ROOT. ( 2 1D 1H 1W 1H )
	IN NS @
	IN A 192.168.111.200
	IN MX 10 mail.daum.net.
	
mail IN A 192.168.111.200

daum.net.db

이렇게 내용을 추가한다.

 

 

named-checkconf
named-checkzone naver.com naver.com.db
named-checkzone daum.net daum.net.db

문제가 있는지 체크하는데, named.conf에 문제 발생

빼먹은 ; 재입력.

 

 

 

이제 잘 작동함

 
 

 

systemctl restart named
systemctl enable named

이제 네임서버를 재실행, 재부팅시 부팅 지정

 
 

 

systemctl stop firewalld
systemctl disable firewalld

실습을 위해 방화벽 끄기

 

 

 

nslookup으로 네임서버랑 메일서버 작동확인

이제 4개의 가상머신이 네임서버를 Server의 네임서버를 따르게 만들어야 한다.

 

 

 

[server]

gedit /etc/NetworkManager/system-connections/ens160.nmconnection

dns주소를 192.168.111.100으로 변경

 

 

reboot

재부팅하기

 

 

 

[client]

su -c 'gedit /etc/resolv.conf'

nameserver주소 변경하기.

(재부팅하면 다시 위 과정을 거쳐야 함.)

 

 

 

잘 작동

 

 

 

[serverb]

client와 동일하게 진행 (gedit 대신 nano

 
 

 

reboot

재실행하기.

 

 

 

[WinClient]

powershell을 킨다.

 

netsh interface ip set dns "Ethernet0" static 192.168.111.100

위 코드 입력

꼭 파워셀을 관리자 권한으로 실행하기

 

 

잘 설정됨.

 

 


메일서버 구현하기

 

Server로 이동

dnf -y install sendmail-cf dovecot

두 패키지를 설치


 

gedit /etc/mail/sendmail.cf

85행 - Cwlocalhost → Cwnaver.com

268행 - O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA → O DaemonPortOptions=Port=smtp, Name=MTA

 

gedit /etc/mail/access

위 파일의 하단에

 
 

naver.com RELAY
daum.net RELAY
192.168.111 RELAY

추가

 
 
 
makemap hash /etc/mail/access < /etc/mail/access

지금까지 작업한 내용 적용하기

이제 dovecot을 설정할 차례

 
 

 

gedit /etc/dovecot/dovecot.conf

24행의 주석 풀기

30행의 주석 풀기

33행의 주석 풀기

 
 

 

gedit /etc/dovecot/conf.d/10-ssl.conf

8행의 require → yes

 
 

 

gedit /etc/dovecot/conf.d/10-mail.conf

25행 주석 지우기

121행 주석 지우고, = 뒤에 ‘mail’ 넣기

166행 주석 지우기

lee라는 유저를 만든 후,

 
 

 

systemctl restart sendmail
systemctl enable sendmail
systemctl restart dovecot
systemctl enable devecot

재시작

이제 client 가상머신으로 이동.

메일앱인 에볼루션

 

 

 

 

환영합니다, 백업에서 복구는 그냥 ‘다음’누르고 넘기기

 

 

 

 

신상정보에 아까 생성한 사용자 이름 넣기

서버종류를 POP으로 변경하고

서버는 네이버 메일, 사용자이름은 lee로 변경

포트는 995

암호화 방식은 TLS

 

 

 

 

받기 옵션은 넘기고, 메일 보내기 옵션

SMTP - mail.naver.com - 포트 25 - 암호화없음

 

 


계정요약 마무리 확인

 

 

 

보내기받기 클릭, 경고문은 무시하고 계속 허용

 

 

 

아까 생성한 유저의 이름과 비밀번호 입력

키모음에추가 체크는 해제하기.

 

 

 

자신에게 테스트메일 보내기

 

 

 

 

잘 받아지면 끝.

 

 

 

[server b]

server 가상머신과 동일하게 진행하는데, gedit 대신 nano를 사용한다. 그런데 nano의 행번호는 기본적으로 출력이 안 되는데 ‘nano -c’를 이용해서 행번호를 확인하면서 진행하면 된다.

 

 

 

 

[WinClient]

https://download-installer.cdn.mozilla.net/pub/thunderbird/releases/52.8.0/win32/ko/

썬더버드 설치하기

 

 

 

건너뛰고 기존 메일 사용하기

 

 

 

아까 생성한 계정을 입력한다.

 

 

 

POP3로 지정하고 완료

 

 

 

주소는 기본값으로 둔 채, 보안 예외 확인하기 클릭

 

 

 

계정이름 우클릭 하고 ‘설정’

 

 

 

보내는 서버 - 이메일 편집

 

 

 

포트 25 - 없음 - 인증 없음

 

 

 

 

전송을 한 후,

 

 

 

Client 가상머신으로 가면, 아까 윈도우에서 보낸 메일을 확인할 수 있다. (보내기/받기)누르기

 

 


라운드큐브 메일서버

웹메일서버 구축을 위한 파일을 다운 받기 위해, 잠시 네임서버를 외부인터넷으로 변경하기

 
nano /etc/resolv.conf
 
 
https://cafe.naver.com/thisislinux/7527

 

위 링크에서 php, 라운드큐브 파일 다운

 

 

 

다시 네임서버를 내부로

 
 

 

cd 다운로드/
tar xfz php74.tgz
cd php74/
dnf -y install *.rpm

압축 해제 후, 내부의 rpm 파일 전체를 설치한다.

 
 

 

systemctl restart httpd
systemctl enable httpd
systemctl restart mariadb
systemctl enable mariadb

http서버와 db를 재실행, 재부팅시 자동 작동 활성화

 
 

 

tar xfz roundcubemail-1.3.10-complete.tar.gz 

이제 라운드큐브 파일을 압축해제

 

 

 

 


 

mv roundcubemail-1.3.10 /var/www/html/roundcube
chmod 777 /var/www/html/roundcube/temp/
chmod 777 /var/www/html/roundcube/logs/

위 파일을 ‘/var/www/html/roundcube’ 위치로 이동

그리고 내부 파일에 권한을 수정

그리고 db를 수정한다.

 
 

mysql

> CREATE DATABASE emailDB;

> GRANT ALL ON emailDB.* TO 'emailAdmin'@'localhost' IDENTIFIED BY '1234';
# 사용자 이름 emailAdmin, 비밀번호 1234

> FLUSH PRIVILEGES;
# 변경사항 적용

> EXIT

; 꼭 넣기

emailAdmin과 localhost에 ‘’ 꼭 넣기

이제 파이어폭스를 켜서

 
 

 

mail.naver.com/roundcube/installer/

주소를 들어간다.

 

 

 

그러면 인스톨러 페이지가 뜬다.

 

 

 

이부분이 ok가 나오면 된다.

페이지 맨 아래의 next 누르기

 

 

 

원하는 이름으로 지정해주고,

Database Setup 부분으로 간다.

 

 

 

아까 db에 지정했던 계정을 넣어줌

그리고 맨 밑의 create config 버튼 누르기

 

 

 

 

노란 안내문구의 ‘download’를 클릭

 

 

 

파일을 저장한 후,

 
 
 

 

mv /root/다운로드/config.inc.php /var/www/html/roundcube/config/
chmod 707 /var/www/html/roundcube/config/config.inc.php

config파일을 roundcube 페이지로 옮기고, 권한을 수정한다.

 

 

 

 

continue를 누르고 나온 페이지에서, initialize database 클릭

 

 

 

그러면 자동으로 확인이 됨.

 

 

 

 

SMTP 테스트

 

 

 

 

lee 계정입력

그리고 check login

 

 

 

로그인 테스트 완료

이제 client 가상머신으로 이동

client 가상머신에서 firefox 들어간 후,

 
 

 

http://mail.naver.com/roundcube/

위 사이트로 이동

 

 

 

 

lee로 로그인

 

 

 

메일 작성해보기

 

 

 

스스로에게 보낸 메일이 잘 받아지는 것을 확인

 

 

 

에볼루션의 메일앱에서도 똑같이 잘 받아진다.

 

2mb를 넘어가면 전송이 안 되는 문제가 있다.

이건 php서버를 수정해야 한다.

다시 server가상머신으로 이동한다.

 
 

 

gedit /etc/php.ini

388행에서 30(초)을 300으로

 

 

 

694행에서 8M을 500M으로

 

 

 

846행에서 2M을 500M으로

이처럼 설정하면 최대 500메가까지 업로드가 가능하다.

잘 적용되게 시스템 REBOOT하기.

 

 

 

이제 500MB 다운이 가능

 

반응형