Windows Server 2019 - SMTP서버 설치 및 기본 세팅

    SMTP Server

    SMTP(Simple Mail Transfer Protocol) Server는 인터넷 메일서버에서 이메일(E-MAIL)을 주고받기 위한 전송 프로토콜입니다. TCP/IP 통신 포트는 25(Port)를 사용합니다. 웹 IIS 하위 패키지가 아닌 별도의 IIS 6 관리자 콘솔을 통해서 설정이 가능합니다. 윈도우 서버에서는 메일서버로 이용하기보다는 IIS 웹서버(웹브라우저)를 통한 폼메일 이메일 발송으로 많이 이용합니다. 예시로 홈페이지에서 문의나 상담 신청서를 작성하여 보내기 버튼을 누르면 담당자에게 메일로 전달해주는 것을 생각하면 됩니다.


    STEP01 → 역할 및 기능 추가

    1-1 서버 관리자[대시보드]에서 추가 (부팅 시 기본으로 팝업창 오픈)

     

    1-2 기능 ▷ SMTP Server 선택 (필요한 관련 의존성 기능이 같이 추가됩니다.)

     

    1-3 로컬 네트워크 테스트를 하기 위한 Telnet(텔넷) Client도 같이 설치 합니다.

     

     

    STEP02 → IIS(인터넷 정보 서비스) 6.0 관리자 실행

    아직까지도 IIS와는 통합하지 않고 별도 IIS 6 관리자 콘솔을 통해 SMTP를 관리를 하는 것으로 보입니다.

     

     

    STEP03 → SMTP 동작 테스트 및 서비스

     

    3-1 SMTP 동작을 테스트 확인하기 위해 텔넷(Telnet)을 이용

    #> telnet localhost(127.0.0.1) 25

     

    3-2 서비스 이름[SMTPSVC]

    ※ 서비스 실행이 되어 있어야 SMTP가 가능합니다. 설치 시에 실행이 되어 있지만 디폴트는 수동으로 서버 재부팅해도 자동으로 실행될 수 있도록 속성에서 시작 유형[자동]으로 변경 적용 후 확인합니다.

     

     

    STEP04 → Windows 고급 방화벽 확인

    기능 추가 시 기본적으로 SMTP(25) 허용되어 있습니다. 외부에서 릴레이(전달)를 통해 메일을 주고받는다면 꼭 허용이 되어 있어야 합니다. 내부적으로만 사용한다면 보안상 반대로 규칙을 사용 안 하는 게 좋습니다.

     

     

    STEP05 → 환경 설정(속성) 설명

     

    작동 및 속성

    오른쪽 메뉴에서 [시작, 중지, 일시중지] 또는 [상단 아이콘]을 통해 작동

     

    일반[IP주소 설정 및 로깅 사용]

     

    액세스[로그인, 보안통신(TLS), 연결 제어, 릴레이 제한]

     

    메시지[SMTP 송수신 제한, 실패한 메일 보고서 발송, Badmail 디렉터리 설정]

     

    배달[발송에 대한 설정]

     

    LDAP 라우팅[패스]

    ※ LDAP(Lightweight Directory Access Protocol) 약자로 인터넷(TCP/IP) 기반의 분산 디렉터리 서비스라고 합니다.
    필자도 해당 프로토콜은 사용해본 적이 없으므로 추 후 따로 알아보도록 하겠습니다.

     

    보안

    액세스 부분에서 Windows 사용 계정만 인증하게 설정하였다면 보안에서도 윈도우 사용자의 계정으로 인증 처리할 수 있도록 별도의 추가 등록을 해주시면 됩니다.

     

     

    STEP06 → 외부 발송 테스트

    ※ 명령 프롬프트(CMD) 또는 파워쉘(Windows PowerShell)을 이용하여 텔넷(Telnet)을 통한 SMTP 발송 시도

    필자는 보기 좋은 파워쉘로 진행하도록 하겠습니다.

    ■ SMTP단계 명령어(Command) 순서

    ※ SMTP 코드 참고 사이트 [위키백과]

     

    간단히 요약하면 [2XX] 정상 응답, [3XX] 정상 응답(중립), [4XX] 일시적 거부, [5XX] 영구적인 거부

    명령어(Command) ■직접 입력할 부분 설명
    CMD#> telnet localhost 25 localhost(127.0.01) 내부 SMTP 25번포트 접근
    220 서버 호스트 이름 Microsoft ESMTP MAIL Service 코드[220] 정상 응답, 일반적으로 서버(호스트 이름)이나 메일 소프트웨어 사용 프로그램 이름 정보가 나옵니다.
    helo 송신 도메인주소
    250 서버 호스트 이름 Hello [127.0.0.1]
    접속한 SMTP 서버에 자신의 도메인 호스트 주소를 알립니다.
    코드[250] 정상 응답
    mail from:<송신자 메일 주소>
    250 2.1.0 eztest01@eztest01.com....Sender OK
    발송자의 메일 주소를 알립니다.
    코드[250] 정상 응답
    rcpt to:<수신자 메일주소>
    250 2.1.5 foxydog@foxydog.co.kr
    수신자의 메일 주소를 알립니다.
    코드[250] 정상 응답
    data
    354 Start mail input; end with <CRLF>.<CRLF>
    본문 내용(body)을 적기 위한 시작 명령어
    from:송신자 메일 주소
    to:수신자 메일주소
    subject:메일 제목
    본문 내용 입력
    웹메일(메일쓰기)생각하시면 됩니다.
    송신자/수신자/메일 제목/본문 내용 입력
    SMTP 통신 내부에서는 사이에 공백이 있으면 안됩니다.
    . 끝마침(을 해야 최종 발송 시도를 합니다.)
    250 2.6.0 <메시지ID> Queued mail for delivery 코드[250] 정상 메일 발송
    quit
    221 2.0.0 Service closing transmission channel
    SMTP 연결 종료

     

    ※ 테스트 시 주의 사항

    인터넷이 되는 서버 환경에서 외부로 메일 발송 시도 시 네이버/다음/Gmail 등의 유명 포탈 사이트로 발송 시도하지 말아 주시기 바랍니다. 대부분이 고도의 스팸 정책을 적용하고 있기 때문에 실제 도메인 주소가 없는 메일 주소로 발송 시도 할 경우 스팸으로 차단하거나 잘못하면 발송서버의 IP가 차단될 수 있으니 개인적으로 수신받을 수 있는 테스트 서버의 메일주소로 받아보는 게 좋습니다.

     

    ■ 수신확인

    제가 가지고 있는 클라우드 리눅스 메일서버에서 정상적으로 잘 수신을 받았습니다.

     

    ■ 윈도우 서버 SMTP 로그 확인

    로깅 기능을 활성화하였다면 다음과 같이 SMTP 송수신에 대한 로그를 확인할 수 있습니다.

     

    다음에는 실제 폼메일 소스를 이용하여 SMTP 메일 발송 테스트를 해보도록 하겠습니다.

    댓글

    Designed by JB FACTORY