메일 서버를 구축하기 위해서 먼저 필요한 패키지를 다운
a. sendmail : 메시지를 보내는 역할을 수행, 다른 메일 서버와의 송수신을 진행
b. dovecot : 받은 메일을 사용자에게 전달하는 역할 수행
설치 : dnf install -y sendmail dovecot

패키지 실행
systemctl enable --now sendmail dovecot

systemctl status [패키지 이름] 으로 패키지 상태를 확인 가능

설정 파일 수정
설정 파일 수정할 게 좀 많이 복잡할 수도 있다. 천천히 따라오면 된다.
/etc/mail/sendmail.cf 수정
server 1는 dong.com 으로 server 2는 hyun.com 으로 변경 

변경 후 
/etc/mail/local-host-names 수정
메일용 서버라는 호스트 이름을 추가한다. 호스트 이름을 추가하게 된다면 이 도메인으로 들어오는 메일을 자체적으로 처리하게 된다.
server 1 : mail.dong.com
server 2 : mail.hyun.com


hostname 변경
클라이언트가 이메일을 받을 때 이메일을 보내는 서버의 신뢰성을 파악하기 위해서 hostname을 메일 서버와 동일한 이름으로 변경한다.
hostnamectl set-hostname mail.dong.comhostnamectl set-hostname mail.hyun.com
/etc/mail/access 파일
특정 도메인 또는 IP 에 대해서 정책을 설정 하여 접근을 제어해주는 역할을 수행한다.
현재 실습 중인 2개의 가상 머신은 현재 192.168.111.0/24 네트워크에 존재하기 때문에 네트워크 주소를 추가해주고, 또한 자신과 상대방의 메일 서버 도메인 주소도 추가해주면 된다.
만약 다른 네트워크 ex) 10.0.1.0/24 네트워크 주소를 사용하는 다른 메일 서버의 접근을 허용하고 싶다면 해당 메일서버의 도메인 주소와, 네트워크 주소를 추가시키면 된다.
dong.com RELAY
hyun.com RELAY
192.168.111. RELAY
변경사항을 적용하기 위해서 makemap hash /etc/mail/access < /etc/mail/access 명령을 실행하여 access.db를 업데이트 해야한다.
etc/dovecot/dovecot.conf 파일 수정

/etc/dovecot/conf.d/10-ssl.conf 파일 수정
ssl = yes
/etc/dovecot/conf.d/10-mail.conf 파일 수정


systemctl restart sendmail dovecot

바로 수정해주자.이렇게 되면 현재 메일 서버는 구축이 완료된 상태이다. 이제 도메인 서버를 구축을 수행하자.
도메인 서버를 구축하기 위해서 먼저 필요한 패키지를 다운
dnf -y install bind

패키지 실행
systemctl enable --now named

도메인 설정 파일 수정

zone "hyun.com" IN {
tpye master;
file "hyun.com.zone";
allow-update { none; };
};
zone "dong.com" IN {
tpye master;
file "dong.com.zone";
allow-update { none; };
};
zone "111.168.192-in-addr.arpa" IN {
type master;
file "my.rev";
allow-update { none; };
};

/var/named 디렉토리 내부에 해당 구역 파일 추가
named.empty 파일을 이용하여 도메인 구역 파일을 추가한다.
cp -p /var/named/named.empty /var/named/dong.com.zone
cp -p /var/named/named.empty /var/named/hyun.com.zone
cp -p /var/named/named.empty /var/named/my.rev
그리고 해당 파일들에서 메일 서버 도메인 설정을 추가
dong.com.zone
hyun.com.zone
my.rev 
문법 오류 검사를 하는 방법은 아래와 같다.
named.conf 파일 검사 : named-checkconf
zone 파일 검사 : named-checkzone [존 이름] [존 파일 위치] 
/etc/reslove 파일에서 nameserver의 값을 DNS서버를 설치한 192.168.111.111로 수정한다. 해당 수정은 영구적이지 않다. 가상머신을 재시작하는 경유 다시 기본값으로 변경되기 때문에 만약 고정적으로 변경하고 싶다면 nmcli con 명령을 이용해 ipv4.dns 옵션을 변경해주면 된다.

systemctl restart namedfirewall-cmd --add-service={imap,smtp,pop3,dns}firewall-cmd --add-service={imaps,smtps,pop3s}firewall-cmd --runtime-to-permanent
firewall-cmd --list-all
dnf -y install php*dnf -y install httpd
systemctl enable --now httpdfirewall-cmd --add-service=httpfirewall-cmd --runtime-to-permanent

wget https://github.com/roundcube/roundcubemail/releases/download/1.6.10/roundcubemail-1.6.10-complete.tar.gztar xfz roundcubemail-1.6.10-complete.tar.gzmv roundcubemail-1.6.10 roundcubemailchown -R apache.apache roundcubemaildnf -y install mariadb-serversystemctl enable --now mariadbmysqlMariaDB [(none)]> CREATE DATABASE rcmdb;
MariaDB [(none)]> GRANT ALL ON rcmdb.* TO hyun@localhost identified BY '1234';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exitRoundcube 설치 마법사 실행 : http://[Server ip 주소 입력]/roundcubemail/installer
생성한 데이터베이스 이름과 사용자 아이디 비밀번호 입력
SMTP 설정을 다음과 같이 수정
마지막으로 내려서 생성 실행 후 아래 그림에 있는 데이터를 복사햐여서 /var/www/html/roundcubmail/config/config.inc.php 파일에 저장

다음 페이지로 이동후 SMTP 테스트와 IMAP 테스트를 수행해서 잘되는 것을 확인
IMAP에서 서버의 유저 데이터를 입력하면 된다.


추가적으로 1시간동안 위의 테스트가 안되서 이것저것 확인해보았었는데 설정상 문제는 없었는데 selinux가 켜져있어서 문제가 발생했었다. selinux가 켜져있는지 확인하고 꺼주자!
이제 <메일 서버 ip 주소>/roundcubemail 로 링크를 들어가게 된다면 로그인이 가능하게 된다.
이번 포스팅에서는 웹 메일 서버를 구축해 보았다.