[05] 무료로 메일서버 만들기, Windows 명령어 Script 작성, DNS 조건부 전달자

|


2015.11.09




1. 무료 호스팅 & 도메인 서비스로 메일서버 구축


아마존 무료 호스팅 -> http://aws.amazon.com/ko/free/

(단, 1년 무료이다.)


무료 도메인 서비스 -> http://dot.tk

                           -> use dns(Your own DNS) 사용 => 호스팅해서 받은 것.



[호스팅 받은 컴퓨터의 DNS 설정]


정방향 -> 내가 얻은 도메인(.tk) 추가

 -> 레코드 추가

  A (무료 호스팅해서 받은 ip)

  MX (내가 만든 A레코드)





2. Windows 명령어 Script 작성


※ cmd : 내가 로그인 한 계정의 home 디렉터리에서 실행됨



1) cmd 명령어 설명


cd [경로] : change directory


dir : directory 및 file 의 list 출력

dir [절대경로] 로도 확인 가능.


cls : 출력된 화면 clear


상대경로 : 현재 위치를 기준으로 상대적으로 이동

ex) .... => 상위 디렉터리로 2번 이동


mkdir : directory 생성


rmdir : directory 삭제


메모장에 Windows 명령어들 나열한 다음 .bat로 저장하면 명령어가 실행된다.




[문제]


1) 배치파일을 이용하여 "본인이름1~100"까지의 디렉토리를 생성하는 배치파일을 만드세요.

2) 배치파일을 이용하여 "본인이름1~100"까지의 디렉토리를 삭제하는 배치파일을 만드세요.

힌트 : for 문 사용


3) 배치파일을 이용하여 "본인이름1~100"까지의 디렉토리를 생성하고 mkdir.txt 파일 안에 

   날짜와 시간 정보를 출력하고 "본인이름1~100 폴더 생성 완료" 라는 문자열 저장

힌트 : > or >>

힌트 : echo

힌트 : date, time 환경변수



1)

for /L %%i in (1,1,100) do (

mkdir 정지웅%%i

)


2)

for /L %%i in (1,1,100) do (

rmdir 정지웅%%i

)


3)

for /L %%i in (1,1,100) do (

mkdir 정지웅%%i

echo [ %date% %time% ] 정지웅%%i 폴더 생성 완료 >> mkdir.txt

)

※ date /t >> mkdir.txt 의 방법도 가능

※ aaa > a.txt   : a.txt 에 aaa를 새로 덮어씌운다.

※ aaa >> a.txt   : a.txt 에 aaa를 추가한다.




[문제]


1) 배치파일을 이용하여 10초 후 컴퓨터가 꺼지도록 만드는 배치파일을 만드세요.

2) 배치파일을 이용하여 컴퓨터 예약 종료를 제거하는 배치파일을 만드세요.


힌트 : shutdown



1)

shutdown /s /t 10

pause


2)

shutdown /a

pause





3. DNS 조건부 전달자


Client - Local DNS - ISP DNS

                │

          Secret DNS


내부의 Client가 Local DNS는 모르는 특정 도메인에 대한 ip를 질의할 때에 그 도메인에 대한 DNS 정보를 Secret DNS에서 얻어오는 것.




[예제]


[Local DNS] - 정방향 조회 영역 설정

www.aaa.com : 100.100.100.100

전달자 설정 : Secret DNS 의 ip 입력


[Secret DNS]

www.bbb.com : 200.200.200.200


[Client]

DNS ip : Local DNS의 ip로 설정


이제 Client PC에서 ping www.bbb.com 을 하면 Local DNS 는 www.bbb.com의 ip를 모르지만

Secret DNS는 알기에 그에 맞는 ip를 대신 물어서 알려준다. 이것이 DNS 조건부 전달자이다.




And


[04] nmail(2)

|



- 2015.01.08 WinSrv




1. 메일 서버 설치 (어제 것 이어서..)



my.ini 파일 관련 에러 - 에러 대로 수정 후 C:Windows 에 해당 파일을 복사한다.

(최대 64M 까지 설정 가능하다.)


Apache 의 설정 변경 필요.

C:APM_SetupServerApacheconfhttpd.conf 에서 거의 맨 아래쪽에 있는 Virtual hosts의 주석을 풀어

Virtual hosts를 사용하도록 한다.

C:NmailPHPuploadconfighttpd_virtualhost.날짜 의 내용을

C:APM_SetupServerApacheconfextrahttpd-vhosts 파일 맨 아래쪽에 넣는다.



[Tip] Ailas (도메인/webmail) 사용


C:NmailPHPuploadconfighttpd_alias.날짜 의 내용을

C:APM_SetupServerApacheconfextrahttpd-alias 파일 맨 아래쪽에 넣는다.



그 뒤 Apache를 재시작 하여 mail.도메인 으로 접속하면 사용 가능하다.

(서버 OS에서의 해당 페이지 접속은 mail.localhost 으로 가능하다.)


만약 내 pc나 같은 네트워크 상에 있는 pc에서 접속이 되지 않는다면 이전 dns 정보와의 충돌이 있어서일 수도 있다.

cmd 창에서 아래 명령어를 실행 후 재 시도 해보자.


> ipconfig /flushdns





[DNS 문제]


dot.tk 가 접속이 되는지 확인 후 접속이 안된다면 접속 가능하도록 설정해보세요



KT 의 Super DNS 에 dot.tk 의 정보가 없다.

보조 DNS 로 SK의 DNS인 210.220.163.82 를 입력하면 된다.




And


Cent OS 6.6 에서 nmail 로 메일서버 구축하기

|


이 글에선 무료 메일 솔루션인 nmail을 통해 Cent OS를 메일서버로 활용 해보고자 한다.

nmail은 개인 및 비영리 단체에 대하여 무료로 사용할 수 있으며 영리목적으로는 30일의 테스트 용도 외엔 사용이 금지되어있다.


이 글에서는 Cent OS 6.6 minimal 버전 및 nmail-php-2.6.11_utf8 으로 진행하였다.





1. Cent OS 6.6 minimal 버전으로 설치.


각자 Real Machine 이나 Virtual Machine 에 Cent OS 6.6 을 minimal 버전으로 설치한다.

나의 경우는 Windows Server 2012 에 Hyper-V 라는 Virtual Machine 을 이용하여 설치하였다.

설치 시 사용할 언어는 English 로 설정해도 상관 없으나 키보드는 Korean 을 선택할 것을 추천한다.





2. Cent OS Nework 설정


[Tip]


vi 는 문서 편집 위한 프로그램이며, 실행 시 :se nu 를 하면 줄 번호가 생긴다.

i 를 입력하면 insert 모드, 즉 쓰기 모드가 시작되고 저장 후 종료를 원할 때엔 esc를 누른 뒤 :wq를 하면 된다.



필요 없는 내용은 지우고 메일서버에서 사용할 고정ip 등의 기본 네트워크 설정을 한다.

나의 경우는 개인적인 DNS 서버로 사용중인 DNS 서버가 있어 DNS1에 넣었다.

NETMASK 는 안적어도 ip에 따라 알아서 잡는다. 특별한 NETMASK를 사용 시 NETMASK=255.255.255.192 등과 같이 넣으면 된다.


# vi /etc/sysconfig/network-scripts/ifcfg-eth0

      1 DEVICE=eth0

      2 HWADDR=00:15:5D:64:E6:0E

      3 TYPE=Ethernet

      4 UUID=f66662d1-779f-49f7-a3d9-c3cf3daa69d0

      5 ONBOOT=yes

      6 BOOTPROTO=static

      7 IPADDR=192.168.1.10

      8 GATEWAY=192.168.1.254

      9 DNS1=192.168.1.20

     10 DNS2=168.126.63.1

     11 DOMAIN=mail.yourdomain.com


지정한 네트워크 정보 설정을 위해 네트워크 재시작

# service network restart


이 후 작업은 putty 등의 ssh 프로그램으로 원격 접속하여 사용할 것을 추천한다.

주의할 것은 설정에서 문자열  형식이 UTF-8 로 되어있지 않으면 UTF-8로 바꿔야 한다.

(그렇지 않으면 한글이 깨져 나올 수 있다.)

특히 putty를 사용하면 좋은 점은 웹 페이지에서 명령어를 복사한 뒤 putty에서 오른클릭 하면 붙여넣기가 된다는 것이다.

또한 putty 상에서 드래그를 하여 영역 선택하면 그 부분은 자동적으로 클립보드에 복사된다.





3. 필요 패키지 설치


필요 패키지 설치를 위해 yum 진행한다. 조금 시간이 걸린다.

# yum install -y httpd* php* mysql* ntp zip unzip wget


httpd* : Apache 관련 패키지

php* : php 관련 패키지

mysql* : mysql 관련 패키지

ntp : 서버 시간 동기화 패키지

zip, unzip : nmail 설치 시 필요한 패키지

wget : nmail 설치 파일 다운로드를 위한 패키지





4. Apache 설정


설정 및 관리의 편의성 때문에 메일 서버는 Virtual Machine 을 사용해서라도 단독으로 따로 돌리길 권장한다.

굳이 기존 서버에 같이 돌리겠다고 한다면 아래 Apache 설정은 달라질 것이다.

개인의 편의에 따라 아래 설정은 얼마든지 변경될 수 있다.


# vi /etc/httpd/conf/httpd.conf

     44 ServerTokens PROD

    262 ServerAdmin admin@yourdomain.com

    277 ServerName mail.yourdomain.com:80

    293 DocumentRoot "/home/nmail2/nmail"

    318 <Directory "/home/nmail2/nmail">

    760 #AddDefaultCharset UTF-8





5. php 설정


# vi /etc/php.ini

    229 short_open_tag = On





6. mysql 설정


중간에 your_password 부분에 입력하는 password 는 추 후 nmail 설치 시 입력해야 하니 기억하자.


# service mysqld restart

# mysql -u root -p mysql

Enter Password:    (초기 비밀번호는 없다. 엔터치면 진입 됨.)

mysql> update user set password=password('your_password') where user='root';

mysql> flush privileges;

mysql> exit


# vi /etc/my.cnf

      7 max_allowed_packet=64M


# service mysqld restart





7. nmail 다운로드 및 설치


# wget http://www.passkorea.net/nmailphp/nmail-php-linux-utf8.tgz

# tar xvfz nmail-php-linux-utf8.tgz

# tar xvfz nmail-php-2.6.11_utf8.tgz

# php nmail-php-2.6.11_utf8_install.php


text로 진행되는 설치 화면 중 사용자가 입력을 해야하는 부분만 발췌하였다.

이 글만 보면 뭔지 이해가 안가겠지만 위에서부터 같이 따라오는 사람은 이해할 수 있을 것이다.


- 지금 SELinux 를 비활성화(disabled)하시겠습까? [Y/n] : y


위 Nmail 라이센스 규정에 동의하십니까? [y/N] : y


  : yourdomain.com


입력하신 도메인을 사용하시겠습니까? [Y/n] : y


  [/home/nmail2] :    (엔터를 누른다)


  :     (본인이 nmail 관리 시 사용할 비밀번호 입력)

  :     (한번 더 입력)


  [localhost] :    (엔터를 누른다)


  :     (mysql 설정 시 입력했던 password 입력)


위 DNS 목록을 사용하시겠습니까? [Y/n] : y


  위 목록에서 실제 사용중인 설정파일의 번호를 입력하여 주십시오. [1-1] : 1


위 정보가 정확합니까? [Y/n] : y


 : 2047    (대용량 첨부, 웹하드 업로드시 허용할 최대 업로드 용량, 단위 : M)


# service httpd restart


# php nmail-php-2.6.11_utf8_install.php


  위 실행파일이 맞습니까? [Y/n] : y


----------------- 설치 완료 -----------------





8. 설치된 패키지 설정


필요 데몬 재시작

# service httpd restart

# service mysqld restart

# service ntpd restart


필요 데몬 시스템 재부팅 시 자동 실행되도록 설정

# chkconfig httpd on

# chkconfig mysqld on

# chkconfig ntpd on


편의성을 위해 방화벽은 끈다.

# service iptables stop

# service ip6tables stop

# chkconfig iptables off

# chkconfig ip6tables off





9. 웹 페이지 접속 및 사용자 생성하여 사용


같은 네트워크 상에 있는 pc에서 이제 메일서버의 ip주소를 웹브라우저에 입력하면 메일서버를 사용할 수 있다.

외부 망에서 접속하는 방법은 사용자의 네트워크 망 구조에 따라 다르기 때문에 생략한다.


기본 관리자 계정은 postmaster 이며 설치 중간에 입력한 password를 이용하여 접속한다.

로그인하면 후 좌측 하단에 있는 관리자메뉴를 통해 추가 회원 관리를 할 수 있다.


내부에서 외부로의 메일 송신은 바로 가능하지만 외부에서 내부로의 메일 수신은 되지 않는다.

이 것이 되기 위해선 먼저 도메인이 있어야 하며 도메인 관리 업체에 메일 관련 정보를 등록하는 등의 절차가 필요하다.



이렇게 Cent OS 에서의 nmail을 이용한 메일서버 구축에 대한 설명은 마무리 한다.

 


 

 

10. 외부 메일 수신 설정 (2015.01.12추가)

 

Windows 서버도 메일 수신이 되었으니 당연히 외부 메일 수신이 될 것이라 생각했는데 안됬다.

알아본 결과 Ceont OS 에 postfix 라는 메일 관련 데몬이 이미 돌아가고 있기 때문.

 

# chkconfig postfix off

 

이제 시스템 리부팅 한 뒤 진행하면 된다.

 

(포트 포워딩이 필요한 환경이라면 25, 110번 포트를 포트 포워딩 해주어야 한다.)


 


And