본문 바로가기
메가IT아카데미 국기과정/리눅스와 시스템보안

[2-11] Email 서버

by 한님폐하 2022. 9. 12.
  • SMTP : 이메일을 이메일 서버에게 전송할때 사용(포트 번호 TCP 25)
  • POP3 : 이메일 서버에게 이메일을 받아 올때 사용(포트 번호 TCP 110)

 

1. Sendmail

1-1. Sendmail 패키지 설치와 활성화

yum -y install sendmail
rpm -qa sendmail
rpm -ql sendmail | egrep -v '/usr/lib|/usr/share|/man/'
systemctl enable --now sendmail
systemctl status sendmail

 

1-2.  Sendmail 서비스 관련 정보 확인

pgrep -a sendmail
ps -ef | grep sendmail
cat /etc/services | grep ^smtp
netstat -nltp | grep sendmail

/etc/aliases			# 메일 엘리어스 설정 파일 
/etc/mail/sendmail.cf		# 메일 주 설정 파일(sendmail 주 설정 파일)
/etc/mail/sendmail.mc		# sendmail.cf에 대한 설정 보조 파일
/etc/mail/access		# 메일 중계 기능/스팸 메일 차단 설정 파일
/etc/mail/virtusertable		# 메일 가상 메일 설정 파일
/etc/mail/local-host-names	# 메일 서버 도메인 기록 파일
/etc/mail/trusted-users		# 메일 신뢰 사용자 지정 파일
/etc/mail/domaintable		# 다중 메일 서버를 위한 도메인 기록 파일
/etc/mail/spamassassin/		# 스팸 메일 등록 설정 파일 위치 디렉토리
/var/spool/mqueue/		# 메일 송신측의 사용자 메일 임시 저장 디렉토리
/var/mail/<사용자이름>		# 메일 수신측의 사용자 메일 저장 파일
/var/spool/mail/<사용자이름>

 

1-3. Email 서버 구성

vi /etc/mail/sendmail.cf
Cwhannimpeha.com		# 자신의 메일 서버 도메인 이름 또는 가상 도메인 이름을 설정한다.
Cwmail.hannimpeha.com
Fw/etc/mail/local-host-names	# cat local-host-names
Djmail.hannimpeha.com		# Sendmail 자신의 호스트명을 알아내지 못하는 경우, Dj로 지정된 도메인으로 동작할 수 있게 해주는 설정이다.
FR-o /etc/mail/relay-domains	# cat /etc/mail/relay-domains
Kvirtuser hash -o /etc/mail/virtusertable.db	# 메일러 테이블, 가상유저 테이블, 엑세스 테이블 지정
CPREDIRECT
Kaccess hash -T<TMPF> -o /etc/mail/access.db
O EightBitMode=pass8		# 한글 처리 지정
O AliasFile=/etc/aliases	# 메일 엘리어스 지정, '/etc/aliases' 파일에 지정되어 다른 계정으로 메일이 전송될 수 있게 하는 기능이다. 
O MaxMessageSize=0		# 메일 용량 제한 지정이 없거나, '0'으로 설정하면 제한이 없다는 의미이다. 이때, 단위는 Bytes 이다.
Mlocal,     P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
            T=DNS/RFC822/X-Unix,
            A=procmail -t -Y -a $h -d $u, M=1024000	# Mlocal 설정 부분의 M 옵션을 통해 메일 공간 용량을 설정한다. 
O ForwardPath=$z/.forward.$w:$z/.forward		# '.forward' 파일이 사용자 홈 디렉토리에 존재할 경우, 해당 사용자에게 오는 이메일들은 '.forward' 파일에 지정된 이메일 주소로 전달된다.
O DaemonPortOptions=Port=smtp,Addr=0.0.0.0, Name=MTA	# Addr=127.0.0.1으로 설정되어 있으면, 메일을 보낼수 있는 클라이언트는 로컬에서만 가능하다. 
O QueueDirectory=/var/spool/mqueue			# 사용자가 보낸 메일은 '/var/spool/mqueue' 디렉토리에 저장되었다가 메일 전송이 완료되면 삭제된다.
# /var/spool/mqueue : 보낸 메일을 임시적으로 저장하는 공간, /var/spool/mail/$USER : 받은 메일을 저장하는 공간(사용자 별 파일)
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b	# 텔넷으로 메일서버의 25포트로 접속 했을때 출력되는 샌드메일 정보를 설정하는 옵션이다. 배너 그래빙 공격을 방지하기 위해서 보안상 수정하는 것을 권장한다.
# $j : Dj 명령으로 설정된 호스트명으로 Dj로 설정된 호스트명이 없을 경우에는 로컬 호스트명이 대신 표시된다.
# $v : Sendmail 소스의 version.c에 있는 Sendmail 버전으로 표시되고, Sendmail 버전을 다르세 출력되도록하려면 소스를 수정해 주어야 한다.
# $Z : DZ로 설정된 Sendmail 버전으로 표시된다.
# $b : 접속을 했을때 때의 시간을 표시한다.
# O SmtpGreetingMessage=$Z; $b 	# for 보안

 

1-4. 메일 릴레이 기능

  • 자신의 네트워크가 아닌 다른 네트워크상의 호스트에서 자신의 메일 서버를 이용하여 메일을 전송하고자 할 경우에는 원천적으로 외부로 메일이 전송이 되지 못하도록 하는 기능이다.
  • '/etc/mail/access.db' 파일 안에 지정되어 있는 네트워크 주소에 대해서만 메일을 전송할 수 있기 때문에 자신의 네트워크 주소 정보를 RELAY로 설정해야 한다. 
vi /etc/mail/local-host-names 
hannimpeha.com
mail.hannimpeha.com

vi /etc/mail/access
Connect:localhost.localdomain       RELAY
Connect:localhost           RELAY
Connect:127.0.0.1           RELAY
Connect:hannimpeha.com          RELAY
Connect:mail.hannimpeha.com     RELAY
Connect:192.168.2           RELAY
makemap hash access.db < access
strings access.db

 

[참고] '/etc/mail/access' 동작 유형

  • OK(무조건 허용)
  • RELAY(중계 기능 허용)
  • REJECT(허용 거부, 사용자에게 알림 거부 메세지 0)
  • DISCARD(허용 거부, 사용자에게 알림 거부 메세지 X)
  • SKIP
  • ERROR:### 반응문자열

 

2. Dovecot

2-1. Dovecot 패키지 설치와 활성화

yum -y install dovecot
rpm -qa | grep dovecot
rpm -ql dovecot | egrep -v '/usr/lib|/usr/libexec|/usr/share|/usr/lib64'
systemctl enable --now dovecot 
systemctl status dovecot

 

2-2. Dovecot 서비스 관련 정보 확인

pgrep -a dovecot
ps -ef | grep dovecot
cat /etc/services | egrep '^pop|^imap' 
netstat -nltp | grep 110
cd /etc/dovecot/conf.d

 

2-3. POP3 활성화 및 모든 시스템에 대해서 이메일 요청을 수신할 수 있도록 설정한다.

vi /etc/dovecot/dovecot.conf		# POP3 활성화 및 모든 시스템에 대해서 이메일 요청을 수신할 수 있도록 설정
protocols = imap pop3 lmtp submission
listen = *, ::

vi /etc/dovecot/conf.d/10-mail.conf	# 사용자 메일 박스 관련 설정한다.
maill_location = mbox:MEMORY:INBOX=/var/spool/mail/%u:INDEX=MEMORY

vi /etc/dovecot/conf.d/10-ssl.conf	# SSL 기능을 비활성화 한다.
ssl = no

vi /etc/dovecot/conf.d/10-auth.conf 	# 암호화된 텍스트 사용을 활성화한다.
disable_plaintext_auth = no

 

3.  'mailx'를 이용한 이메일 

yum -y install mailx
mailx user1@hannimpeha.com
mailx	# mailx -u user1

 

4. 'Evolution'을 이용한 이메일

yum -y install evolution

'메가IT아카데미 국기과정 > 리눅스와 시스템보안' 카테고리의 다른 글

[2-14] NTP 서버  (0) 2022.09.12
[2-13] DHCP 서버  (0) 2022.09.12
[2-10] DNS 서버  (0) 2022.09.12
[2-9] Apache 웹서버-3  (0) 2022.09.12
[2-8] Apache 웹서버-2  (0) 2022.09.12