변경사항 : 컴파일 옵션을 make slx SSLTYPE=unix 로 해야 php에서 imap 연동 테스트 시
PHP Notice: Unknown: Server disables LOGIN, no recognized SASL authenticator (errflg=2) in Unknown on line 0
와 같은 에러가 발생하지 않음.
컴파일이 완료되면 imapd 디렉토리에 imapd가 ipopd디렉토리에는 ipop2d, ipop3d가 생성되며, ipop2d는 잘 쓰지 않으므로 복사하지 않아도 됩니다.
================================================================================= % 오류 발생시 낮은 Imap 버전을 최신버전의 리눅스 OS 에 설치시 Openssl 경로가 맞지 않아 아래와 같이 오류가 발생할수 있습니다.
osdep.c:231:20: error: x509v3.h: No such file or directory osdep.c:232:17: error: ssl.h: No such file or directory osdep.c:234:17: error: pem.h: No such file or directory osdep.c:235:20: error: buffer.h: No such file or directory osdep.c:236:17: error: bio.h: No such file or directory osdep.c:237:20: error: crypto.h: No such file or directory osdep.c:238:18: error: rand.h: No such file or directory . . .
등등..
그럴경우 오류나는 부분의 윗줄을 잘 살펴보면 이와 같이 소스파일에 설정된 SSL 경로를 확인할 수 있습니다.
Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. +OK POP3 localhost.localdomain v2000.70 server ready user pyd0927 +OK User name accepted, password please pass 123123 +OK Mailbox open, 0 messages quit +OK Sayonara Connection closed by foreign host.
리눅스에서 디스크 용량을 확인할 때 df 명령어로 확인했을 때 용량이 컸는데 du 명령어로 확인하니까 용량이 작았다. 파일을 삭제했는데 df에 반영이 되지 않은 것이다.
예를 들어, /var 용량의 경우 df 명령어로 확인했을 때 사용중인 공간이31G였다고 하면 du 명령어로 확인해보니 사용중인 공간이10G밖에 되지 않는다.
이 문제가 발생하는 이유는 보통 시스템을 오래 켜 둔 상태에서 발생한다고 한다. 그 이유는 특정 프로세스가 file descriptor 를 연 후에 file descriptor 가 가리키는 파일을 지웠는데 그 프로세스가 여전히 파일을 읽고 쓰고 있는 것이다.
따라서 lsof 명령어를 통해 문제가 있는 프로세스를 찾을 수 있다. 우선, 문제가 있는 디렉토리의 열린 파일 목록을 검색한다.
# lsof
또는 해당 디렉토리 검색
# lsof [DIRECTORY]
grep 명령어로 deleted 만 검색
# lsof | grep deleted
lsof 명령어를 통해 확인해보면NAME마지막에(deleted)라고 되어있는 프로세스를 확인할 수 있다.
이 경우에는 파일을 지웠지만 아직까지 남아있어 용량을 차지하고 있는 프로세스다. 따라서 해당 프로세스의 PID를 kill 명령어를 통해 죽이면 된다.
# kill -9 [PID]
그리고 다시 확인해보면 정상으로 돌아와있는 것을 확인할 수 있다.
df 명령어의 경우 특정 상황에서 정확한 실제 용량을 반영해주지 못하는 경우가 발생한다. 따라서 lsof 명령어를 통해 문제 있는 프로세스를 찾아 죽이는 방법을 통해 정상적으로 돌아오게 할 수 있지만 시스템 재시작이 가능하다면 재시작하는 것도 하나의 방법이 될 수 있다.
[에러발생] checking for libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0… no configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:
No package 'libzip' found No package 'libzip' found No package 'libzip' found
yum 으로 설되는 libzip libzip-devel 패키지의 버전이 요구 버전 보다 낮아서 libzip 을 compile 설치 해야 함.
그러나 libzip 을 cmake 하기 위해서 또 필요한 cmake 버전이 낮아서 cmake도 컴파일로 설치를 해야 함.
- libzip 필요 CMake 버전 관련 에러 메세지 CMake Error at CMakeLists.txt:1 (cmake_minimum_required): CMake 3.0.2 or higher is required. You are running version 2.8.12.2
tar zxvf cmake-3.21.1.tar.gz cd cmake-3.21.1 ./configure --prefix=/usr/local/cmake-3.21.1 make && make install ln -s /usr/local/cmake-3.21.1 /usr/local/cmake
tar zxvf libzip-1.7.3.tar.gz cd libzip-1.7.3 /usr/local/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/libzip-1.7.3 make && make install ln -s /usr/local/libzip-1.7.3 /usr/local/libzip export PKG_CONFIG_PATH=/usr/local/libzip/lib64/pkgconfig (PHP가 컴파일 진행중인 창에서 실행할 것)
MySQL 서버의 time out 설정은 크게 3가지가 있습니다. mysqld time out - connect_timeout (bad handshake timeout) - interactive_timeout (interactive 모드에서 connection time out) - wait_timeout (none interactive 모드에서 connection time out)
connect_timeout, interactive_timeout 은 튜닝과 좀 거리가 멀고, 실제로 바쁜 서버라면, 반드시 wait_timeout 을 따로 튜닝하여 설정해줘야 합니다.
[connect_timeout] 이 설정은 mysqld 와 mysql client 가 연결(connection)을 맺기 위해서mysqld 가 연결 패킷을 기다리는 최대 시간입니다. 즉 TCP 연결을 맺는 과정(3-way handshake)에서, connect_timeout 동안에도연결 패킷이 들어오지 않으면 연결이 실패(취소가 아님)되고,bad handshake 로 응답합니다.
*참고) - 연결 실패 : 연결 과정중에서 fail 되는 경우 (Aborted_connects) - 연결 취소 : 연결이 된 상태에서 강제로 close 된 경우 (Aborted_clients)
다시 말하면 mysqld 와 mysql client 가 TCP 연결을 맺는 최대 시간으로이 시간보다 큰 경우는 모두 Aborted_connects 에 해당됩니다.(단위는 초) 연결 실패율(POF) = ( Aborted_connects * 100 / Connections ) 연결이 실패되는 경우 - 연결 패킷에 올바른 연결 정보가 없는 경우 - 특정 user 가 권한이 없는 데이터베이스에 접근할 경우 - mysqld 접근 password 가 틀린 경우 - connect_timeout 보다 긴 연결 과정
연결 실패율(POF)이 높은 경우는, 대부분 권한이 없는 데이터베이스 연결이나, 틀린 password 를 사용할 경우가 많습니다. 기본값은 대부분 5(초)로 설정되어 있으며, 따로 튜닝할 필요는 없습니다. mysqld 의 --warnings 옵션 사용과 xxx.err 파일에 기록됩니다.
[interactive_timeout] interactive 모드에서 time out 을 말합니다. interactive 모드는 'mysql>' 과 같은 프롬프트 있는 콘솔이나 터미널 모드를말합니다. mysqld 와 mysql client 가 연결을 맺은 다음, 다음 쿼리까지 기다리는최대 시간을 의미합니다. 설정된 interactive_timeout 까지도 아무런 요청(쿼리)이 없으면 연결은취소되고, 그 이후에 다시 요청이 들어오면 연결은 자동으로 맺어집니다.
interactive_timeout 안에 다시 요청이 들어오면 wait time은 0으로 초기화됩니다(CLIENT_INTERACTIVE).
ERROR 2006: MySQL server has gone away No connection. Trying to reconnect... Connection id: 12002 Current database: xxx
이와 같은 연결 취소는 Aborted_clients 에 누계되고, wait_timeout 의결과도 함께 포함됩니다 기본 값은 28800(8시간) 초로 설정되어 있는데 상당히 관대한 설정입니다. 약 1시간(3600) 정도로 설정하는 것을 권장합니다.
[wait_timeout] 이 설정은 제일 중요한 파라메터 항목입니다. interactive 모드가 아닌 경우에 해당되며,mysqld 와 mysql client 가 연결을 맺은 후, 다음 쿼리까지 기다리는최대 시간을 의미합니다. 즉 대부분 PHP 나 C, PERL, python 등등의 API 를 이용한 client 프로그램모드를 말합니다. interactive_timeout 과 마찬가지로 wait_timeout 까지 아무런 요청(쿼리)이없으면 연결은 취소되고 그 결과는 Aborted_clients 에 누계됩니다. wait_timeout 안에 다시 요청이 들어오면 wait time 은 0 으로 초기화 됩니다.(SESSION.WAIT_TIMEOUT) 연결 취소율(POC) = ( Aborted_clients * 100 / Connections ) 연결이 취소되는 경우(강제 종료됨) - 종료(exit) 되기전 mysql_close() 가 없는 경우 - wait_timeout 이나 interactive_timeout 시간까지 아무런 요청(쿼리)이 없는 경우
기본 값은 interactive_timeout 과 마찬가지로 28800(8시간) 초로 설정되어있는데, 역시 너무 관대한 설정이라고 할 수 있습니다. 앞에서 연결 취소율(POC)을 계산해 보면, MySQL 서버가 어느 정도 비율로 강제종료하는지 알 수 있습니다. 예를 들어 POC 가 1 % 이라면, 100 개의 커넥션당 하나 정도는 mysql_close()없이 강제 종료(exit)되고 있다는 의미입니다. 이 값이 0 %에 가까울수록 좋습니다. 이 의미는 클라이언트 프로그램에서모두 정상적으로 종료했다는 의미입니다.
no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
ASUS 무선 공유기 접속 문제
krazyeom@MBP:~$ ssh admin@192.168.219.5 Unable to negotiate with 192.168.219.5 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1