• 흐림동두천 1.0℃
  • 흐림강릉 1.3℃
  • 서울 3.2℃
  • 대전 3.3℃
  • 대구 6.8℃
  • 울산 6.6℃
  • 광주 8.3℃
  • 부산 7.7℃
  • 흐림고창 6.7℃
  • 흐림제주 10.7℃
  • 흐림강화 2.2℃
  • 흐림보은 3.2℃
  • 흐림금산 4.4℃
  • 흐림강진군 8.7℃
  • 흐림경주시 6.7℃
  • 흐림거제 8.0℃
기상청 제공

qmail에서 사용하는 tcpserver options 정리

tcpserver options
D. J. Bernstein
TCP/IP
ucspi-tcp
tcpserver는 TCP 접속을 받아들인다.
사용법
   tcpserver opts host port prog

opts는 getopt-style의 일련의 옵션이다. host와 port는 하나의 변수이며, prog는 하나 또는 그 이상의 값으로 이루어진다.
tcpserver는 TCP 클라이언트의 접속을 기다리다가, 접속시 네트워크에서 설명자(descriptor) 0을 읽고 설명자(descriptor) 1을 쓰고 prog를 실행한다. 또한, 여러가지 환경 변수를 설정한다.

서버의 주소는 host와 port에 의해 주어지며, port는 /etc/services의 서비스 이름 또는 번호가 사용될 수 있다; 만약 이것이 0이라면 tcpserver는 자유로운(빈) TCP 포트를 선택할 것이다. host의 값은 0이 될수 있으며 이것은 어떠한 로컬 IP 주소의 연결도 허용한다; 점으로 나누어진 십진수 IP 주소일 경우에는 그 주소만의 접속을 허용한다; 호스트 이름이 사용될 경우 qualification을 통한 dns_ip4_qualify를 사용해 얻어낸 첫번째 IP 주소만을 허용한다.

tcpserver는 SIGTERM를 받으면 종료한다.


옵션
-q: 아무런 오류를 표시하지 않는다.

-Q: (기본값) 오류를 표시함.

-v: 오류와 상태 메세지를 표시함.
-c n: 동시 접속 숫자를 제한 한다. 만약 n 수 만큼의 prog가 동시에 실행되고 있다면 그중 하나의 실행이 종료될 때까지 새 접속을 연기 시킨다.

-x cdb: tcprules에 의해 컴파일된 cdb 룰 파일을 사용한다. tcpserver가 실행되고 있을때 tcprules를 재실행 시킬수 있다.

-X: -x cdb 옵션과 사용될때 cdb가 없는 경우에도 접속을 허용한다. 보통 tcpserver는 cdb가 없을 경우 모든 접속을 drop 시킨다.

-B banner: 접속이 시작될때 곧바로 banner를 네트워크로 보낸다. tcpserver는 banner를 보낸 후에 $TCPREMOTEHOST를 확인하고 그 다음 $TCPREMOTEINFO, cdb 순서대로 체크한다. 이 기능은 클라이언트가 서버로 부터의 greeting 메세지를 기다리는 각 프로토콜의 지연 시간을 줄일 수 있다.

-g gid: gid로 그룹 ID를 전환한 후 연결을 준비한다.

-u uid: uid 유저 ID를 전환한 후 연결을 준비한다.

-U: -g $GID -u $UID 와 동일하다. 즉, $GID, $UID가 동일 할 경우 사용될 수 있다. 보통 $GID와 $UID는 envuidgid에 의해 설정된다.

-1: 연결이 준비된 후에 로컬 포트 번호를 표준 출력으로 프린트 한다.

-b n: n개의 backlog TCP SYN를 허용한다. 어떤 시스템에서는 n이 5가 최대값이 될 수 있다. SYN cookie를 지원하는 시스템에서는 backlog는 의미가 없다.

-o: IP 옵션을 내버려 둔다. 만약 클라이언트가 IP 소스 경로를 따라 패킷을 보내면 같은 경로로 패킷을 되돌려 보낸다.

-O: (기본값) IP 옵션을 사용하지 않음. 클라이언트는 IP 소스 경로를 통해 접속하고 데이터를 보낼수 있지만, 패킷을 기본 경로를 통해 보내진다.

-d: (기본) 원격 호스트가 느리게 반응할때는 데이터 전송을 약간 지연 시킨다. 이것은 기본값이며 미래에는 필요 없을 지도 모른다.

-D: 데이터 전송을 지연하지 않는다; enable TCP_NODELAY.
데이터 얻기 옵션:
-h: (기본) 접속하려는 원격 호스트 이름을 DNS에서 찾고 $TCPREMOTEHOST 환경 변수로 설정한다.

-H: 원격 호스트 이름을 DNS에서 찾지 않는다; $TCPREMOTEHOST 환경 변수의 값을 지운다. TCP 53번 포트 사용시에는 반듯이 이 옵션을 사용해야 한다.

-p: Paranoid. 원격 호스트 이름을 DNS에서 찾은 후에 실제 접근하는 IP주소와 대조하여 동일 하지 않다면 $TCPREMOTEHOST 환경 변수값을 지운다.

-P: (기본) 위 Paranoid 옵션을 끔.

-l localname: 로컬 호스트 이름을 DNS에서 찾지 않음; localname을 $TCPLOCALHOST 환경 변수 값으로 사용한다. 일반적으로 localname의 값은 0으로 설정한다. TCP 53번 포트 사용시에는 반듯이 이 옵션을 사용해야 한다

-r: (기본) $TCPREMOTEINFO값의 획득을 접속하는 원격 호스트에 시도한다.

-R: -r의 반대로 $TCPREMOTEINFO값의 획득을 시도하지 않는다. TCP 53번과 113번 포트 사용시에는 반듯이 이 옵션을 사용해야 한다

-t n: $TCPREMOTEINFO값을 얻기 위한 시도후 n초안에 결과가 없으면 포기한다. 기본값: 26.