yumyum
[Linux] 메일서버 본문
메일 서버 개념
[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 나가기
# 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
웹 브라우저
보안예외사항 추가 !!
================================================================================
[설정 심화]
<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 |