ftp 서버를 셑팅하여 쓸때 접속하여서 특정폴더에 접속이 잘안되는 문제가 생길시에
아래와 같은 환경을 고려해볼수있습니다.

FTP 서버가 사용하는 포트는 2개 입니다.
하나는 로그인과 디렉토리 검색을 하기위해 사용되는 정보포트와 실제적으로 데이터를
업다운로드하는데 쓰이는 데이터 포트입니다.

FTP 서비스는 패시브모드(Passice-mode)와 액티브모드(Active-mode) 2가지를 지원합니다.

Active-mode 는 클라이언트 기반 접속으로 클라이언트에 선점되지 않은(1024이상)의
포트에서 웹서버쪽에 21번 포트로 FTP를 접속합니다.
클라이언트에서 서버쪽으로 port 명령어를 보내는 것으로 랜덤포트를 이용하여 서버 포트로
접속하는 것으로 서버포트는 항상 21번 포트로 접속됩니다.

따라서 Active 모드 접속시에 문제점이 발생되는 경우는 대부분이 클라이언트측에 있습니다.
FTP 클라이언트는 서버의 데이터포트로 실제 연결을 생성하지 않고 단지 서버에게
자신이 리스닝하는 포트를 이야기하고 서버 클라이언트가 이야기한 포트로 연결을 맺습니다.

만일 자신이 공유기나 마스커레이드를 통해 FTP 서버로 접속을 시도하게 될때 접속이 안되는 경우에
대부분은 서버로의 접속후에 클라이언트쪽으로 접속을 요청할때 사설아이피를 못찾아서
실패하는 경우입니다.

이는 서버에 Passive 모드접속을 허용하지 않게끔 설정해두어서 생기게되는 경우로
서버설정에 변경없이 꼭접속을 하기를 원한다면 공유기를 떼고 다이렉트로 접속해 보면됩니다.

이에 공유기나 마스터레이드 같은 사설사용자들을 위해 생겨난 방식이 Passive 모드입니다.

Passive-mode 는 서버쪽 21번 포트로 접속시, 클라이언트의 랜덤 포트가 아니라 서버쪽 랜덤포트를
이용하게됩니다.
서버는 클라이언트에게 pasv 명령어를 보내며, 클라이언트는 승인하게 됩니다.
문제는, 패시브모드의 경우 서버쪽에 1024 에서 65535 포트 사이를 랜덤하게 할당하며,
네트워크 세션이 있을때 마다 신규포트를 이용하게 됩니다.

이때, 서버쪽에 방화벽을 운영하거나 대량접속서비스가 운영중일때는 네트워크 자원이 부족하게 되어
접속장애가 있을수 있습니다.

즉 사용자가 공유기를 사용하거나 하는 환경에서는 Passive 모드를 사용하게 되는데
서버에 방화벽등이 설정되어있으면 해당포트가 방화벽에의해 차단되므로 접속이 잘안되거나
특별히 파일갯수가 많은 폴더를 선택시 연결이 끉어질수있습니다.

해결방법은 경우에 따라 달라지는데 (간단한것부터)
1.사용자가 공유기등을 사용한다면 Passive 모드로 연결해볼것
2.사용자가 공유기등을 사용하지 않는데 서버에 접속이 잘안될경우에는 Active 모드로 연결해볼것
3.위에 경우에도 잘안되면 사용자가 공유기들을 사용하는데 서버에서는 방화벽을 사용할경우
서버에서 Passive 모드를 사용할수있게 아래와 같이 셑팅을 해볼것

Passive-Mode를 사용하기 위한 포트 고정방법
 
1) Window 시스템
 
Windows 2000 Server 및 Windows Server 2003 모두  PassivePortRange 값을 이용하여 조정이 가능하다.
Windows Server 2003 의 경우는 메타베이스를 수정
1. 인터넷 정보 서비스 관리] - [로컬 컴퓨터] - [속성 ] - [메타베이스 직접 편집 허용]에 체크
 
2. C:\WINDOWS\system32\inetsrv 밑에 metabase.xml 을 메모장으로 연다.
 
3. 고정해야될 패시브 데이타 포트항목을 아래 라인과 같이 추가한다.
PassivePortRange="5001-5001"
..................................................................................
..................................................................................
..................................................................................
<IIsFtpService Location ="/LM/MSFTPSVC"
  AdminACL="XXXXXXXX"
  AllowAnonymous="TRUE"
  AnonymousOnly="FALSE"
  AnonymousUserName="IUSR_SERVER-X62W0LSZ"
  AnonymousUserPass="XXXXXXXXX"
  ConnectionTimeout="120"
  DownlevelAdminInstance="1"
  ExitMessage=" "
  LogAnonymous="FALSE"
  LogExtFileFlags="XXXXXXXXX"
  LogFileDirectory="C:\WINDOWS\system32\LogFiles"
  LogFilePeriod="1"
  LogFileTruncateSize="20971520"
  LogNonAnonymous="FALSE"
  LogOdbcDataSource="TSLOG"
  LogOdbcPassword="XXXXXXXXXX"
  LogOdbcTableName="FTPLog"
  LogOdbcUserName="InternetAdmin"
  LogPluginClsid="{FF160663-DE82-11CF-BC0A-00AA006111E0}"
  LogType="1"
  MSDOSDirOutput="TRUE"
  MaxClientsMessage=" "
  MaxConnections="100000"
  PassivePortRange="5001-5001"
 >
</IIsFtpService>
..................................................................................
..................................................................................
..................................................................................

4. 편집한 metabase.xml 파일을 저장한다
 
5. IIS 를 다시한번 재시작한다.
 
6. Ipsec 이나 방화벽이 설정되어있다면 tcp 5001을 추가한다.
 

Windows 2000 Server 의 경우는 레지스트리 값을 추가
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msftpsvc\Parameters\
에서 REG_SZ 타입의 PassivePortRange 값이름을 추가한다.
값으로는, 5500-5700 을 설정한다.


2) Linux 시스템
 
먼저 패시브 모드를 사용하기 위해서는 서버에 ip_conntrack 모듈이 있어야 한다.
ip_conntrack 은 연결추적 모듈이다. 몇번 IP 가 몇번 포트를 통해서 접속했는지에 대한 정보가 담겨있다.
정보가 담겨있는 위치는 /proc/net/ip_conntrack 이다.
[root@smileserv ~]# cat /proc/net/ip_conntrack
........................................................................................................................
........................................................................................................................
........................................................................................................................
udp      17 27 src=219.78.47.179 dst=111.111.111.241 sport=7957dport=8630 packets=1 bytes=90 src=111.111.111.241 dst=219.78.47.179sport=8630 dport=7957 packets=1 bytes=81 mark=0 use=1
udp      17 7src=58.172.208.159 dst=111.111.111.241 sport=55210 dport=8630 packets=2bytes=306 src=111.111.111.241 dst=58.172.208.159 sport=8630 dport=55210packets=2 bytes=411 [ASSURED] mark=0 use=1
udp      17 114src=111.111.111.1111 dst=222.222.222.22 sport=33181 dport=161packets=34 bytes=2692 src=222.222.222.22 dst=111.111.111.236 sport=161dport=33181 packets=34 bytes=2875 [ASSURED] mark=0 use=1



패시브 모드를 사용하기 위한 vsftp.conf 설정

[root@smileserv ~]# vi /etc/vsftpd/vsftpd.conf
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
........................................................................................................................
........................................................................................................................
## 데이터 전송을 위해서 Passive mode를 사용할 것인지 설정 (기본값 = YES)
## => Active Mode로 접근할 수 없는 사용자들을 위해 활성화
pasv_enable=YES
 
## 패시브 모드로 연결시 할당될 최대 및 최소 포트를 설정 (기본값 = 0)
## => 일반적으로 50000~60000 포트를 지정 (기본값 = 0)
## 기본값인 0은  well-known port를 제외한 무작위 포트를 이용하게 됩니다.
pasv_min_port=50000
pasv_max_port=50001
.......................................................................................................................
........................................................................................................................

패시브 모드를 사용하기 위한 proftpd.conf

[root@smileserv ~]# vi /etc/proftpdproftpd.conf
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
........................................................................................................................
........................................................................................................................
AllowForeignAddress on
# 30000 ~ 32000 Port 를 사용해서 패시브 포트 지정
PassivePorts 50000 50001  
.......................................................................................................................
........................................................................................................................

실제로 바뀐부분이 적용되는지를 확인해 본다.
[root@smileserv ~]# netstat -atnp |grep vsftpd   ==> FTP 접속전
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      21363/vsftpd 

 
[root@smileserv ~]# netstat -atnp |grep vsftpd   ==> FTP 접속중
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      21363/vsftpd  
tcp        0      0 192.168.0.222:21          192.168.0.4:3621           ESTABLISHED 21374/vsftpd  
tcp        0      0 192.168.0.222:21          192.168.0.4:3622           ESTABLISHED 21377/vsftpd  
 
 
[root@smileserv ~]# netstat -atnp |grep vsftpd  ==> PASV 고정전 데이타 전송중
tcp        0      0 218.236.115.222:34795       0.0.0.0:*                   LISTEN      21427/vsftpd  
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      21414/vsftpd  
tcp        0      0 192.168.0.222:21          192.168.0.4:1090           ESTABLISHED 21422/vsftpd  
tcp        0      0 192.168.0.222:21          192.168.0.4:1091           ESTABLISHED 21425/vsftpd  
tcp        0  87765 192.168.0.222:34795       192.168.0.4:1106           ESTABLISHED 21427/vsftpd 
 

[root@smileserv ~]# netstat -atnp |grep vsftpd  ==> PASV 고정후 데이타 전송중
tcp        0      0 218.236.115.222:50001        0.0.0.0:*                   LISTEN      21379/vsftpd  
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      21363/vsftpd  
tcp        0 116800 192.168.0.222:50001        192.168.0.4:3666           ESTABLISHED 21379/vsftpd  
tcp        0      0 192.168.0.222:21          192.168.0.4:3621           ESTABLISHED 21374/vsftpd  
tcp        0      0 192.168.0.222:21          192.168.0.4:3622           ESTABLISHED 21377/vsftpd  

설정된 정보가 잘 반영되는것이 확인된다.
 
주의 ) 익스플로러를 통해서 FTP 접속은 패시브 모드방식이다.

Posted by 빨강토끼
,
프로그래머라서 이메일서버에 대하여 전문분야가 아니고
회사에서 사용하는 메일서버또한 별도로 사용하고 있지만
필요에 의하여 메일서버를 셑팅할일이 있어서 이것저것 사용해본 것을 정리해보았습니다.
무료이고 윈도우서버에서 가능한것들입니다.

MailEnable
http://www.mailenable.com/default.asp

현재사용하고 있는 메일서버입니다.
스텐다드 버젼을 무료로 배포하고 있습니다.
상용에서 파생된거라서 장단점은
장점으로는 사용하기 편하다. 최신버젼으로 따끈따끈하다.안정적이다.
단점으로는 고급기능을 지원하지 않는다.(웹메일등)

Macallan mail solution
http://macallan.club.fr/index.htm

맥켈란 이란 이름은 술이름이라고 하네요....
유명한 프로그램같다는 느낌이 듭니다.
이것저것 따로 깔아주면 원하는 만큼의 고급기능들을 사용할수있습니다.
하지만 제가 직접 사용해본적이 없어서....
죄송합니다.

WinWebMail Server
http://www.winwebmail.net/index.html

프로그램명에서 아시다시피 웹메일솔루션입니다.
중국거같던데....

Mercury
http://www.pmail.com/

가장 오랜기간동안 사용한 이메일서버입니다.
역사도 오래됐고 기능도 많지만 단일프로그램으로서 셑업과정이 비교적 간단하지만
(이것저것 옵션으로 깔건별로없다.)
하지만 사용이 번거롭다라는...

NMail 3.7
http://www.passkorea.net/download/List.aspx?cat=2

대표적인 무료이메일서버라고 생각됩니다.
메뉴얼도 같이 다운로드 하셔서 사용하시면 됩니다.
한국서버프로그램이라서 간단하게 사용하기에 편리하고
사이트에서 QnA도 할수있지만 왜 오래동안 사용하지 않았나 저도 기억이 잘안납니다.


FreeSMTP
http://www.softstack.com/scrfreesmtp.html

로컬에서 간단히 메일을 보낼수있는 프로그램입니다.
이메일프로그램에서 보내는 서버를 localhost 로 셑팅하여 사용하실수있습니다.
받는건? 안들듯? 이유는? POP3 에관한게 언급이 안되어있습니다.

IIS에 기본smtp 가 있죠? 같은 역활인듯합니다.
메일을 로컬에서 보내기만하는...
하지만 사용하시는 분에 따라서 유용하게 사용하실수있을겁니다.

외부에서 이서버를 통해 메일을 보낼수있을까요?
(이게 일명 릴레이서버?)
이것도 아마 안될것 같습니다.
혹시 되시는 분은 알려주세요.

--- 첨부 ---

http://kr.blog.yahoo.com/mark_vigor/1264

google 서버를 통하여서도 메일서비스를 사용하실수있습니다.

Posted by 빨강토끼
,

메일발송후 반송되는 경우  

 

▶ SERVER REPLY: 501 Denied domain name
; 도메인주소를 잘못 입력 or 수신측에서 도메인을 수신거부한 경우

 

▶ 421 Server too busy.
; 수신측 서버의 응답지연. 수신서버의 트래픽등으로 메일을 수신 받지 못하는 상황에서 발송자에게 리턴 메일을 보냄.

 

▶ 421-Microsoft ESMTP MAIL Service, Version: 5.0.2195.5600 ready at  Service not available, closing transmission channel
; MS사의 smtp 서버의 장애로 인해 메일을 수신받지 못하는 상황에서 리턴된 메시지.

 

▶ 421 4.3.2 Your IP(218.236.206.104) is filtered and this connection will be closed. You must register your IP to spammaster@hanafos.com By SpaceLee, the Lord of mail server.
; 우리쪽 (mail.hanafos.com) 서버로 메일을 발송시 필터링 조건에 위배되어 스패머로 인식되고 필터링 되어 발신자에게 리턴되는 메시지.

 

▶ 441 4.4.1 No answer from host
; 수신측 서버의 응답이 없어서 리턴된 메시지.

 

▶ 451 4.4.0 DNS resolving error
; 수신측 서버의 도메인을 못찾아 리턴된 메시지.

 

▶ 451 4.3.0 Other or undefined mail system status
; 수신측 메일 시스템의 프로토콜이 틀리거나 수신 smtp 서버가 아닐경우 리턴되는 메시지.

 

▶ 451 4.3.0 Temporary system failure. Please try again later.
; 수신 서버의 일시적인 장애로 인해 메일을 수신받지 못해 리턴된 메시지.

 

▶ 451 4.4.2 Bad connection (io timeout)
; 수신 서버의 응답이 없어서 응답시간이 초과 되어 리턴된 메시지.

 

▶ 451 Relay Server Not Ready.
; 수신측 서버에서 릴레이 기능이 안돼어 리턴된 메시지.

 

▶ 452 4.4.5 Insufficient disk space; try again later
; 수신서버의 디스크용량이 부족하여 메일을 수신받지 못해 리턴된 메시지.

 

▶ 452 4.4.5 ... Insufficient disk space; try again later
; 수신자(leo@buffgame.com)의 메일함 용량이 부족하여 메일을 수신받지 못해 리턴된 메시지

 

▶ 500 Syntax Error, Command Unrecognized EHLO mo02.hanafos.com
; 발송자의 메일 발송기(아웃룩, 유도라 등등)에서 메일발송시 수신측 메일 서버에서  SMTP 명령어를 인식하지 못해 리턴된 메시지.

 

▶ 500 5.5.1 Command unrecognized: "XXXX mo02.hanafos.com"
; 수신서버가 SMTP 명령어를 인식 하지 못함. (위와 동일).

 

▶ 501 5.1.8 Sender domain must exist(honorstech.com)
; 수신측 도메인(honorstech.com) 이 존재 하지 않아 리턴된 메시지.

 

▶ 502 Not implemented
; 수신측 서버가 smtp 명령어를 인식 하지 못해 리턴된 메시지.

 

▶ 505 Authentication required
; 수신측 서버가 릴레이 인증 등을 허용하지 않아 리턴된 메시지.

 

▶ 512 5.1.2 Bad destination system address
; 수신 서버의 장애나 네트웍 트래픽등으로 인헤 수신서버가 응답이 없을 때 리턴된 메시지.

 

▶ 550 5.1.1 Suspended user  
; 수신자의 사용자의 계정이 중단 상태.

 

▶ 550 5.1.2 ... Unsupported mail destination
; 수신 서버가 응답이 지연되어 리턴된 메시지.

 

▶ 550 5.7.1 ... Access denied.(211.202.13.144)
; 수신자(gyunu@chollian.net)가 발신자의 메일주소를 수신 거부한 상태.

 

▶ 550 5.7.1 ... Relaying denied. IP name lookup failed 211.202.13.144]
; 수신 서버에서 발신자의 IP에 대해 릴레이 거부를 하여 메일을 보내지 못해 리턴된 메시지.

 

▶ 550 Requested action not taken: mailbox unavailable
; 수신자의 메일함을 찾지 못해 리턴된 메시지.

 

▶ 550 Mail is reject ( filtering reject )
; 수신 서버에서 발신자의 메일 주소나 IP를 필터링 하여 거부되어 리턴된 메시지.

 

▶ 550 5.1.1 ... User unknown
; 수신자 (hkaprk@jeill.co.kr)계정을 찾지 못해 리턴된 메시지.

 

▶ 550 5.7.1 Unable to relay for lyc410@hanafos.net
; 수신 서버에서 릴레이 거부를 하여 리턴된 메시지.

 

▶ 550 Invalid recipient lobster@fernand.com
; 수신자 계정을 찾지 못해 리턴된 메시지 .

 

▶ 550 RCPT ERROR. Mailbox doesn't exist
; 수신자 메일함이 존재 하지 않아서 리턴된 메시지.

 

▶ 553 5.3.0 ... spam
; 발송자의 계정이 수신서버 상에서 스패머로 등록이 되어 메일 수신 거부를 해서 리턴된 메시지

 

▶ 553 sorry, your envelope sender is in my badmailfrom list
; 발신자의 메일 주소가 수신서버상에서 블랙리스트에 올라 거부되어 리턴됨.

 

▶ 553 sorry, that domain isn't in my list of allowed rcpt hosts
; 발신자의 메일 도메인주소 자체가 수신 서버에서 차단되어 리턴된 메시지.

 

▶ 553 5.1.8 <uni@honorstech.com>... Domain of sender address uni@honorstech.com does not exist
; 발신자의 도메인에 대해 수신서버에서 체크 하여 없는 도메인일 경우 리턴시킨 메시지.

 

▶ 553 5.0.0 We do not accept mail from spammers - If you have questions,please email admin@www.narun.net.
; 발신자의 메일 계정이 스패머로 수신서버에서 등록이 되어 리턴된 메시지.

 

▶ 553 5.0.0 Your message may contain the Win32.Klez worm!!- If you have questions,please email postmaster@ecweb-1.blueweb.co.kr.
; 발신자의 메일에서 Win32.Klez 라는 웜바이러스가 발견되어 리턴된 메시지.

 

▶ 553 sorry, your envelope sender is enlisted as spammer.
; 발신자의 메일 주소가 수신서버상의 스패머 리스트에 등록 되어 리턴된 메시지.

 

▶ 553-This target address is not our MX service
; 수신자의 주소가 수신서버에서 서비스 안하는 도메인일 경우 리턴된 메시지.

 

▶ 554 5.3.2 Rejected by mailbox host. REPLY:(250 ... Sender ok)
; 수신자가 발송자의 메일 계정에 대해 수신 거부를 하여 리턴된 메시지 .

 

▶ 554 5.3.0 Mail have traversed Too many hops. Reject it.
; 발신자가 메일을 보낼 때 동보메일로 수신자의 메일 계정을 수신서버의 제한량 이상 넣어 보내어 리턴된 메시지.

 

▶ 554 5.3.2 Rejected by mailbox host. REPLY:(550 5.1.1 unknown or illegal alias: kgng_h_w@samsung.com)
; 수신자가 발송자의 메일 계정에 대해 수신거부를 설정하여 리턴된 메시지.

 

▶ 554 1048035239.13309.hanmir accept failed. [code=-1]
; hanmir 서버에서 응답이 안돼어 리턴된 메시지.

 

▶ 554 delivery error: dd Sorry, your message to bk6218@yahoo.co.kr cannot be delivered.  This account is over quota. - mta111.mail.yahoo.co.kr
; 수신자의 메일함 용량 초과로 인해 리턴된 메시지.

 

▶ 554 5.1.0 Sender Denied
; 발신자의 계정을 수신서버에서 수신 거부함.

 

▶ 554 : Recipient address rejected: Access denied
; 수신자가 발신자의 계정에 대해 수신 거부를 설정함. 

Posted by 빨강토끼
,