AND

=============================================================================================================================

※ 해당 내용의 경우 VMware를 이용한 로컬 네트웍 상에서 작업을 하는 내용을 안내하여 드립니당~!

[ 시스템 설정을 위한 내용 ]

설치된 Base Windows : Windows 7 Pro
설치된 Server CentOS : CentOS 5.8
설치된 VMware Program : VM workstation 8.0.1

메일 서버 패키지 파일 : sendmail, sendmail-cf
=============================================================================================================================

- 메일 서버의 개요 및 동작 원리 -
메일 사용자가 메일 클라이언트(ex:outlook)를 사용해서 메일을 보내는 경우 "e-mail"은 메일서버로 접속한 뒤 받는 사람

메일 주소가 현재 사용 가능한지 여부를 인증(SMTP)받아야 한다.

사용가능여부의 인증이 성공하면 메일서버의 MTA(Mail Transfer Agent)는 SMTP(Simple Mail Transfer Protocol)를
이용하여 받는 사람(@뒤쪽 도메인의 메일 서버 정보를 NS/DNS 서버로 부터 질의하여 검색)의 메일 서버로 전송한다.

메일을 수신한 메일서버는 지정된 디렉터리(/var/spool/mail)에 수신메일을 저장 후 수신자가 접속할 때까지 기다린다.

메일은 받는 사람이 자신의 메일 클라이언트로 접속하여 자신의 메일 계정으로 수신된 메일을 확인, 삭제 또는 다운로드 등

메일 서버로 부터 응답을 결정하여 메일 서버로부터 전송받게 된다.

- 메일 서버의 구분 -
ㄱ. SMTP 서버 (MTA) - Sendmail, Qmail ... 등
ㄴ. POP 서버 (MDA:Mail Delevery Agent) - ipop3, imap ... 등
ㄷ. Mail Client (MUA:Mail User Agent) - Outlook express, 웹메일 ... 등


[ 메일서버 참고사항(CentOS 기준) ]




이제 메일 서버를 실제로 설정하여 사용할텐데요. DNS 구성은 Host 만 추가하면 되므로 구성이 완료되어 있다는

전제하에 진행하도록 하겠습니다.

[ 메일서버 환경 설정(/etc/mail) ]

※ 메일 서버 설정 파일 : sendmail.cf, sendmail.mc


1. sendmail.cf 파일을 삭제

2. sendmail.mc 파일을 수정
(빨간색이 수정사항이며 수정전 백업은 필수!!!)

- 52 Line : dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl - dnl 삭제
- 53 Line : dnl define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl - dnl 삭제
- 116 Line : DAEMON_OPTIONS('Port=smtp, Addr=0,0,0,0, Name=MTA')dnl

3. m4 유틸리티로 sendmail.cf 파일을 생성 (2번 사항의 sendmail.mc 파일의 수정부분을 반영하여 생성됨)

- m4 sendmail.mc > sendmail.cf

4. sendmail 환경설정 (3번에서 생성한 sendmail.cf 파일로 빨간색 부분이 수정된 부분)
- Cwmail.noose.net : 메일 서버로 사용될 Domain 을 지정
- Djmail.noose.net : Telnet 을 통해 확인을 하는 경우에도 강제적으로 Domain 이 출력되게 설정


※ 1. "/etc/mail/access", "/etc/mail/local-host-names" 파일에 할당받은 도메인 명을 기록해야 함
    2. "Cw" 와 "Dj" 중 한개의 옵션만을 사용해야 한다. 두개를 같이 사용하는 경우 데몬 재시작시 오류 발생


[ 메일서버 방화벽 설정해제 ]
1. /etc/sysconfig/iptables 를 수정 (" "안쪽 부분(붉은색만)을 라인 추가해서 입력해야함!!!)
- "-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT" //SMTP가 사용하는 포트
- "-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT" //POP3가 사용하는 포트


[ 시스템 시작시 메일 서비스 자동시작 설정 ]
1. "ntsysv" 에서 아래의 두가지 서비스를 등록
- "dovecot"
- "saslauthd"
- 두가지 서비스의 "[]" 부분에 "*" 표시를 등록한다.


[ 적용한 사항의 확인 ]
1. name/sendmail 의 데몬을 재시작
# /etc/rc.d/init.d/named restart
# /etc/rc.d/init.d/sendmail restart

2. 일반 PC에서 도메인 질의
C:\>nslookup
>mail.noose.net
Server: ns.noose.net
Address: 192.168.X.128#53

Name: mail.noose.net
Address: 192.168.X.130#53

3. 일반 PC에서 25번 포트의 telnet 확인
- C:\>telnet 192.168.X.130 25 입력 후 아래의 " " 안의 메세지 내용이 출력되어야 함    //SMTP가 사용하는 포트 확인
" 220 mail.noose.net ESMTP Sendmail 8.13.8/8.13.8; Tue, 26 Apr 2011 15:20:18 +09 00 "
- C:\>telnet 192.168.X.130 110 입력 후 아래의 " " 안의 메세지 내용이 출력되어야 함     //POP3가 사용하는 포트 확인
" +OK Dovecot ready. "

4. Outlook Express 에서 메일 기능의 정상 여부 확인

AND

[ main.sh ]

pwd : /backup/shell

#vi ./main.sh

===================================================================================================

#!/bin/bash
clear
echo "=================================="
echo " 1. 사용자 관련"
echo " 2. 권한 관련"
echo " 3. 하드웨어 관련"
echo " 4. 검색 관련"
echo " 5. 시스템 종료"
echo " q. 프로그램 종료"
echo "=================================="
echo -n "메뉴를 선택 해볼래? : "
read tac1

 

echo "$tac1 을 선택하였습니다."


case $tac1 in
        1)./user/usermain.sh;;

        2)./ch/chmain.sh;;

        3)./hard/hdmain.sh;;

        4)./search/search.sh;;

        5)./sys/sysinfo.sh;;

        q)exit;;
esac

 

===================================================================================================

[ useradd.sh ]

pwd : /backup/shell/user

#vi ./useradd.sh

===================================================================================================

#!/bin/bash
clear
echo "================================"
echo "입력할 사용자 정보를 넣어주세요."
echo "================================"
echo -n "UserName 을 입력하세요 : "
read uaddname
if [ -z $uaddname ]
then
        echo "빈값을 입력하여 프로그램을 종료합니다."
        exit
else
        uaddname="$uaddname"
fi

 

echo -n "Uid 를 입력하세요 : "
read uadduid
if [ -z $uadduid ]
then
        echo "빈값을 입력하였습니다."
else
        uadduid="-u $uadduid"

fi


echo -n "Gid 를 입력하세요 : "
read uaddgid
if [ -z $uaddgid ]
then
        echo "빈값을 입력하였습니다."
else
        uaddgid="-g $uaddgid"
fi

 

echo -n "Home Directory 를 입력하세요 : "
read uaddhome
if [ -z $uaddhome ]
then
        echo "빈값을 입력하였습니다."
else
        uaddhome="-d $uaddhome"
fi

useradd $uadduid $uaddgid $uaddhome $uaddname


echo "입력하신 $uaddname 으로 생성하였습니다"
echo "================================"
echo -n "생성된 사용자 정보를 보시겠습니까?(yes/no) : "
read catuser
if [ -z $catuser ]
then
        echo "꺼져!"
        /backup/sh/main.sh
else
        if [ $catuser = "yes" ]
        then
                cat /etc/passwd | grep $uaddname
                echo -n "확인하셨습니까?"
                read
                /backup/sh/main.sh
        else
                echo "빠욤!"
                /backup/sh/main.sh
        fi
fi

 

===================================================================================================

[ usermod.sh ]

pwd : /backup/shell/user

#vi ./usermod.sh

===================================================================================================

#!/bin/bash
clear
echo "================================"
echo "수정할 사용자 정보를 넣어주세요."
echo "================================"
echo -n "UserName 을 입력하세요 : "
read umodname
if [ -z $umodname ]
then
        echo "빈값을 입력하여 프로그램을 종료합니다."
        exit
else
        umodname="$umodname"
fi

echo -n "Uid 를 입력하세요 : "
read umoduid
if [ -z $umoduid ]
then
        echo "빈값을 입력하였습니다."
else
        umoduid="-u $umoduid"
fi

 

echo -n "Gid 를 입력하세요 : "
read umodgid
if [ -z $umodgid ]
then
        echo "빈값을 입력하였습니다."
else
        umodgid="-g $umodgid"
fi

echo -n "Home Directory 를 입력하세요 : "
read umodhome
if [ -z $umodhome ]
then
        echo "빈값을 입력하였습니다."
else
        umodhome="-d $umodhome -m"
fi

usermod $umoduid $umodgid $umodhome $umodname
echo "입력하신 $umodname 으로 생성하였습니다"
echo "================================"
echo -n "수정된 사용자 정보를 보시겠습니까?(yes/no) : "
read catuser
if [ -z $catuser ]
then
        echo "꺼져!"
        /backup/shell/main.sh
else
        if [ $catuser = "yes" ]
        then
                cat /etc/passwd | grep $umodname
                echo -n "확인하셨습니까?"
                read
                /backup/shell/main.sh
        else
                echo "빠욤!"
                /backup/shell/main.sh
        fi
fi

===================================================================================================

[ userdel.sh ]

pwd : /backup/shell/user

#vi ./userdel.sh

===================================================================================================

#!/bin/bash
clear
echo "================================"
echo "삭제할 사용자 정보를 넣어주세요."
echo "================================"
echo -n "UserName 을 입력하세요 : "
read udelname
if [ -z $udelname ]
then
        echo "빈값을 입력하여 프로그램을 종료합니다."
        exit
else
        echo "홈디렉터리도 함께 삭제하시겠습니까?(yes/no) : "
        read udelmax
        if [ $udelmax = "yes" ]
        then
                userdel -r $udelname
        else
                userdel $udelname
        fi
fi


echo "입력하신 $udelname 사용자를 삭제하였습니다"
echo "================================"
echo -n "삭제된 사용자 정보를 보시겠습니까?(yes/no) : "
read catuser
if [ -z $catuser ]
then
        echo "꺼져!"
        /backup/sh/main.sh
else
        if [ $catuser = "yes" ]
        then
                cat /etc/passwd | grep $udelname
                echo -n "삭제되셨습니까?"
                read
                /backup/sh/main.sh
        else
                echo "빠욤!"
                /backup/sh/main.sh
        fi
fi

===================================================================================================

'Program > Shell-Script' 카테고리의 다른 글

Shell Script (기초)  (0) 2014.08.20
AND