반응형

개요

Mail Server : Mail System 설치

 

Mail Server 구축 / 메일 송신 서비스 설치 (sendmail)

Centos 7 운영체제를 설치해준다.

최소모드로 설치 후 네트워크 설정을 해준다.

 

#yum list sendmail*             // 설치 가능한지 확인

 

#yum -y install sendmail sendmail-cf             // sendmail 과 설정 샘플 파일 설치

 

#file /etc/mail/sendmail.mc                    // text 파일이긴 한데 macro script 프로그램 파일이다. vi로 수정이 가능한데 바로 적용할 수 없다. m4라는 유틸리티를 사용해야 한다.

 

#vi /etc/mail/sendmail.mc

118행을 보면 Addr에 loopback IP 로 되어있다. 즉, 자기 자신만 메일을 보낼 수 있게 되어있다.

메일보내려면 웹 브라우저에서 보내야 하기 때문에 이 loopback IP 를 누구나 접속할 수 있게 0.0.0.0 을 넣어준다.

 

#m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf                 // mc 파일을 리다이렉션을 통해 configuration 파일로 적용(바로 저파일에 서 수정해도 상관없음)

 

#vi /etc/mail/sendmail.cf

89행을 보면 Cwlocalhost 를 Cwkhsec.edu으로 바꿔준다. Cw는 이 도메인에서 이 메일서버를 쓰겠다는 의미이다.

 

#vi /etc/mail/access            // 메일 서버끼리 통신을 하려면 이 설정을 해줘야 한다. 메일 주고 받기가 가능한 목록을 지정해주고 메 일을 주고받게 되어있다. 메일 보안에서는 중요하다

이런식으로 추가해 준다.

- 네이버를 여기에 넣어도 네이버에서 우리를 막아놨기 때문에 메일이 안 간다. (네이버 정책)

 

#makemap hash /etc/mail/access < /etc/mail/access               // access 파일을 바꿀 때 마다 해줘야 한다.

 

access 파일은 중요하기 때문에 변조되면 안된다. 그래서 text 파일을 그대로 쓰지 않고, text 파일을 DB화 한다.

makemap 명령어로 sendmail 의 설정파일을 database 파일인 것처럼 파일을 만들어준다.

무결성 체크도 중요하기 때문에 hash format maps로 변환을 해준다.

 

#systemctl start sendmail

#systemctl enable sendmail

#firewall-cmd --permanent --zone=public --add-port=25/tcp

#firewall-cmd --reload

#netstat -lnt

25번 포트가 저렇게 되어있어야 한다.

 

 

메일 수신 서비스 설치 (dovecot)

#yum -y install dovecot

 

#vi /etc/dovecot/dovecot.conf

 

24행 protocols = imap pop3              // 메일을 받을 때 어떤 프로토콜을 사용하는지 imap 하고 pop3 사용을 해준다. 포트는 각각 하나는 암호화 된 통신 나머지 하나는 암호화 안된 통신 총 4개가 열린다.

 

30행 listen = *, ::             // 모든 IP를 열어준다.

33행 base_dir = /var/run/dovecot/                   // 메일이 도착하면 메일파일 저장 경로

 

우리는 암호화 키가 없기 때문에 설정 파일을 건드려준다. (실제 서버에서는 암호화 통신을 해야한다)

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

 

10행 disable_plaintext_auth = no

 

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

 

9행 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                // fcntl 리눅스 파일 제어 함수, /var/mail/사용자 파일을 보호

#systemctl start dovecot

#systemctl enable dovecot

#firewall-cmd --permanent --zone=public --add-port=110/tcp
#firewall-cmd --permanent --zone=public --add-port=143/tcp
#firewall-cmd --permanent --zone=public --add-port=993/tcp
#firewall-cmd --permanent --zone=public --add-port=995/tcp
#firewall-cmd --reload

 

 

메일 서버 이름 설정

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

mail.khsec.edu

#vi /etc/sysconfig/network

HOSTNAME=mail.khsec.edu

#vi /etc/resolv.conf

nameserver 192.168.XXX.XXX              // 설정한 DNS 껐다키면 사라지기 때문에 네트워크 설정에서 DNS1=설정한ip, DNS2=8.8.8.8 로 설정해 준다.

nameserver 8.8.8.8

 

원래 서버는 재부팅을 안하기 때문에 이렇게 해도 상관없는데 우리는 서버를 끄기 때문에 네트워크 설정에서 바꿔주는 것이 좋다.

 

 

메일 보내기 테스트 (cmd 사용)

- 메일 서버에 사용자 2명 추가

#useradd khsec
#passwd 비밀번호
#useradd test5
#passwd 비밀번호

 

 

- 메일 주소

khsec@mail.khsec.edu

test5@mail.khsec.edu

#cd /var/spool/mail/

#tail -f khsec                      // 메일 내용이 실시간으로 보임

 

 

cmd

telnet mail.khsec.edu 25                              // 메일 송신(smtp) 접속

mail from:"test5@mail.khsec.edu"                  // 보내는 사람 주소

rcpt to:"khsec@mail.khsec.edu"                     // 받는 사람 주소

data                    // 메일 내용 작성 시작

hi test5                // 메일 내용

test mail               // 메일 내용

bye                     // 메일 내용

.                         // 메일 작성 종료

quit                    // 메일(smtp) 접속 종료

 

 

메일 받기 테스트 (cmd 사용)

telnet mail.khsec.edu 110              // 메일 수신(pop3) 접속

user khsec                 // 메일 계정 ID 입력

pass 비밀번호            // 메일 계정 pw 입력

list                   // 메일 목록 확인

+OK 1 messages:

1 543                          // 1개의 메일이 있음

retr1                 // 메일 목록 중 1번 메일을 보여달라고 요청

반응형
반응형

개요

html 은 IE / 크롬처럼 브라우저에서 실행된다.

JSP, PHP, ASP 는 웹 서버에서 실행된다.

Apache 웹 서버는 사용자가 요청한 파일이 나한테 있는지 없는지 찾아준다. 만약 파일이 있으면 사용자에게 html 로 전송한다.

JSP, PHP, ASP 는 해석해서 실행해줄 엔진이 필요하다.

나는 PHP 사용할 것이기 때문에 웹 서버에 PHP 파서를 설치해줘야 한다.

 

 

DB Server

#mysql u root p            //MySQL 접속 후 패스워드 입력


>show databases;          // DBMS 안에 어떤 DB가 있는지 보여준다


>use mysql;                  // mysql 사용한다


>show tables;               // 어떤 테이블이 있는지 보여준다


>select * from user;        // user 테이블에 계정정보가 저장되어 있다


>select user from user;      // 사용자 id 만 보여준다

 

root 를 사용하면 만약 프로그램이 해킹 당했을 때 이 DB 는 날라간다.

별도의 사용자를 생성해서 이 사용자에게 특정 DB에만 권한을 줘서 들어갈 수 있게 해준다.


>select user,authentication_string from user;        // root 의 패스워드를 확인, 암호화 되어 있다


>CREATE DATABASE wordpress;         // DB 생성


>CREATE USER webadmin@'web서버 내부 통신용 ip' IDENTIFIED BY '비밀번호';          //계정생성


>GRANT ALL PRIVILEGES ON wordpress.* TO webadmin@'web서버 내부 통신용 ip';          // 권한 부여


>FLUSH PRIVILEGES;

 

 

Web Server

web server에는 MySQL Client가 없기 때문에 설치를 해줘야 한다.

 

#yum -y install mysql

 

#mysql -s 192.168.XXX.XXX(DB 서버 주소) -u webadmin -p      // 접속이 안된다.

 

Web Server 와 DB Server 에서 se리눅스를 꺼준다. 실제 서버에서 끄면 안된다.

명령어 setenfroce 0

 

#mysql -s 192.168.XXX.XXX(DB 서버 주소) -u webadmin -p     // 패스워드를 입력하면 접속이 된다

 

Web Server wordpress 설치

#wget wordpress 홈페이지에서 다운로드 주소 복사해서 설치

 

#tar -xzvf latest.tar.gz         // 압축풀기

 

#yum -y install rsync          // 떨어져 있는 두 개의 서버 간 디렉터리 동기화 해주는 유틸리티 프로그램


#rsync -avP ~/wordpress/ /var/www/html/


#mkdir /var/www/html/wp content/uploads


#chown -R apache:apache /var/www/html/*         // 웹 서버의 동작은 apache 실행권한으로 실행되므로 소유권을 apache로 바꿔준다.


#cd /var/www/html

 

#rm -f index.html            // 전에 테스트로 만든 html 파일 삭제

 

#cp wp-config-sample.php wp-config.php            // 샘플 설정파일을 실제 설정파일로 복사해준다.

 

#vi wp-config.php

 

define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'webadmin' );
define( 'DB_PASSWORD', '비밀번호' );
define( 'DB_HOST', 'DB서버 IP' );

 

:wq 저장 후 종료

 

PHP 설치 (7.4 버전)

#dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm 

 

#dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

 

#dnf module list php

 

#dnf -y module enable php:remi-7.4

 

#dnf -y install php php-cli php-common

 

#php -v               // 설치된 php 버전확인

 

#yum -y install php-fpm php-gd php-pdo php-mbstring php-pear

 

#vi /etc/php.ini     // php 설정파일 수정

 

short_open_tag = Off 를 On 으로 바꿔준다.

 

#yum -y install php-mysqlnd

 

#systemctl enable php-fpm

 

#systemctl start php-fpm

 

#systemctl restart httpd

 

 

Wordpress Install

http://www.khsec.edu/wp-admin 들어가서 설치해준다.

반응형
반응형

중복 데이터 제거 (Distinct)

select distinct 필드명 from emp 테이블명 [where 조건]

 

ex) 직급 종류를 알고 싶은 경우

select distinct job from emp order by job

 

 

연산함수 (집계 함수)

sum(필드명) : 합계, 숫자타입의 필드에만 적용

 

avg(필드명) : 평균, 숫자타입의 필드에만 적용

 

count(필드명), count(*) : 개수

 

max(필드명) : 최대값

 

min(필드명) : 최소값

 

ex) deptno(부서번호) 가 10인 부서원들의 월급의 합

select sum(sal) as 월급합 from emp where deptno=10

 

ex) 부서번호가 10인 부서의 사원 수

select count(*) as 사원수 from emp where deptno=10

 

 

그룹화 문법 (group by)

select 필드명 from 테이블명 [where 조건] group by 필드명(그룹화 기준 필드) [order by 기준필드명]

 

group by 도 중복제거 효과가 있다.

distinct 와 group by 차이점

    - distinct : 그룹화, 중복제거는 할 수 있지만 그룹별 집계를 낼 수 없다.

    - group by : 그룹화, 그룹별 집계를 낼 수 있다.

 

그룹별 집계 (group by 와 집계함수 사용)

ex) job별 월급의 최대값, job으로 그룹화 지은 후에 각각 그룹의 월급 최대값

select job,max(sal) as 최대월급 from emp group by job

 

ex) 사장이 아닌 직급에 대해서 job별 월급의 최대값 구하세요

select job, max(sal) as 최대월급 from emp where job != '사장' group by job

 

 

그룹별 집계결과로 조건 (having 조건)

select 필드명 from 테이블명 [where 조건] group by 필드명(그룹화 기준 필드) [having 조건] [order by 기준필드명]

 

[where 조건] : 그룹화 시키기 전의 조건

[having 조건] : 그룹별 집계결과로 조건

 

ex) 사장이 아닌 직급에 대해서 job별 월급의 최대값, 최대값이 300 이상인 그룹만 검색

select job,max(sal) as 최대월급 from emp where job != '사장' group by job having max(sal)>=300

 

 

 

order by 에서는 별칭으로 쓸 수 있지만

having은 집계함수 원본을 써야한다.

반응형

'<DB>' 카테고리의 다른 글

[SQL] Create 문, Insert 문  (0) 2020.07.29
[SQL] Select 문 (2)  (0) 2020.07.22
[SQL] Select 문 (1)  (0) 2020.07.21
DataBase 정의와 DBMS 정의  (0) 2020.07.20

+ Recent posts