2014년 7월 11일 금요일

gmail에서 보낸 메일이 안 들어 올 때

gmail 보낸 메일이 들어 오지 않는다.

메일서버의 로그를 확인 해 봤도, 받았다는 로그가 보이지 않는다.

한 하루 반정도 지나니까 리턴메일이 왔다.
This is an automatically generated Delivery Status Notification

THIS IS A WARNING MESSAGE ONLY.

YOU DO NOT NEED TO RESEND YOUR MESSAGE.

Delivery to the following recipient has been delayed:

     test@test.com

Message will be retried for 2 more day(s)

Technical details of temporary failure:
Google tried to deliver your message, but it was rejected by the server for the recipient domain xxxxxxxxxxxxxx. [xxx.xxx.xxx].

The error that the other server returned was:
454 TLS missing certificate: error:0200100D:system library:fopen:Permission denied (#4.3.0)

----- Original message -----

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;

...

검색해 보니 TLS 셋팅 안되어 있어서 발생한 문제.

아마도 저번에 587 포트를 열어 놓은 적이 있는 데, 아마도 그 때문인 것 같다.
이것은 받는 메일서버에 tls 세팅이 제대로 되지 않은경우이다.
qmail 의 경우 아래와 같이 해결한다.
1. 모듈확인
#ldd /var/qmail/bin/qmail-smtpd  (명령으로 ssl 모듈이 추가되어 있는지 확인후 )
2. 키를 생성한다.
#openssl req -newkey rsa:1024 -x509 -nodes -days 3650 -out /var/qmail/control/servercert.pem -keyout /var/qmail/control/servercert.pem
키 생성시 Common Name 은 도메인명을 정확히 기록한다.

#위의 명령어 실행시 나오는 내용
Country Name (2 letter code) [GB]:KR
State or Province Name (full name) [Berkshire]:Seoul
Locality Name (eg, city) [Newbury]:Jungu
Organization Name (eg, company) [My Company Ltd]:Company
Organizational Unit Name (eg, section) []:QnA Team
Common Name (eg, your name or your server's hostname) []:서버의 설정된 도메인 명.
Email Address []:관리자 이메일


3. 권한변경
#chmod 640 /var/qmail/control/servercert.pem
4. 소유자/그룹변경
#chown vpopmail.vchkpw /var/qmail/control/servercert.pem => 혹은 (qmaild.qmail)
5. 복사
#ln -s /var/qmail/control/servercert.pem /var/qmail/control/clientcert.pem
6. ciphers 만들어주기...
#openssl ciphers > /var/qmail/control/tlsclientciphers
#openssl ciphers > /var/qmail/control/tlsserverciphers

pem 파일 내용 확인은 아래와 같다.
#openssl x509 -text -noout -in servercert.pem

메일서버를 테스트는...
#openssl s_client -crlf -starttls smtp -connect localhost:25
에러 없으면 된다...
아래도 해보자.
#telnet localhost 25
ehlo localhost
starttls

gmail에서 다시 발송 후 도착 여부 확인.
출처

2014년 7월 8일 화요일

httpd(아파치)최적화. MaxClient 값 구하기

httpd(아파치) 튜닝에서 가정 중요한 부분은

MaxClient 값과 KeepAlive 라고 본다.
그중 KeepAlive 는 정적 파일을 경우 Off, 동적 파일을 일 경우 On 이 좋다고 한다.

웬만한 httpd 서버는 php 와 연동하여 사용하기 때문에 On으로 설정하는 게 좋을 것 같다.
문제는 MaxClient 값을 어떻게 구할 것인가이다.

MaxClient 값 구하기 스크립트
#/bin/sh

TotalMem=`free -m | grep Mem: | awk {'print $2'}`
TotalMem80per=$(echo "$TotalMem*0.8"|bc)
#pa aux 의 6번째 값이 RSS 인데, 이 값을 가져옴.
TotalHttpMem=`ps aux | grep httpd | grep -v grep | awk '{print $6}' | awk '{total = total + $1} END {print total/1024}'`
httpCount=`ps aux | grep httpd | grep -v grep | wc -l`
averageHttpMem=$(echo "$TotalHttpMem / $httpCount" | bc)
MaxClient=$(echo "$TotalMem80per / $averageHttpMem" | bc)

echo "총 메모리 : " $TotalMem
echo "총 메모리의 80% : " $TotalMem80per
echo "http use mem total : "$TotalHttpMem
echo "http process count : "$httpCount
echo "http use mem average : "$averageHttpMem

echo "MaxClients   " $MaxClient

내가 세운 공식은 다음과 같다.
총메모리의 80% / httpd의 평균 메모리 사용량

서버 자체가 웹서버 전용이라면 메모리의 80%는 빼도 상관 없을 듯 하다.

참고 사이트

http://openlife.tistory.com/340
http://jjosh.tistory.com/15
https://kldp.org/node/28074
http://helloworld.naver.com/helloworld/132178

RES의 의미
RES  : 물리적인 메모리를 사용하는 크기
VIRT  : SWAP 영역에서 사용하는 메모리 + shared + swapped를 합친것

http://www.tuning-java.com/454



----

기타 찾아본 최적화 스크립트

https://github.com/gusmaskowitz/apachetuner

https://github.com/gusmaskowitz/apachebuddy.pl

http://surniaulula.com/2012/11/09/check-apache-httpd-mpm-config-limits/

bash 스크립트 사용시 주의 사항

1.if 문을 쓸 때는 아래처럼 if 다음에 꼭 한칸을 띄워줘야 한다.
if [ $checkTmp = 'y' ]

에러 : syntax error near unexpected token `then'
1. 변수를 지정할때는 = 이전,다음에 빈칸이 있으면 안된다.
TotalMem=`free -m | grep Mem: | awk {'print $2'}`

에러 : command not found

2014년 7월 4일 금요일

smtp 서버 설치 후 현재 세션 눌렀을 때, '해당 인터페이스를 지원하지 않습 니다.' 에러

윈도우 2008 에서 smtp 서버 설치 후 현재 세션을 눌렀을 때,

 

'해당 인터페이스를 지원하지 않습니다.' 라는 에러메시지 가 띄워진다.

 

C:\Windows\System32\inetsrv>regsvr32 smtpsnap.dll
C:\Windows\System32\inetsrv>regsvr32 smtpadm.dll

 

위와 같이 dll 파일을 등록 시켜 준뒤, mmc 창을 다시 올리면 된다.

 

 

 

 

출처

2014년 7월 3일 목요일

비쥬얼svn 전체 백업 및 이전

비쥬얼svn 전체 백업

svnadmin 으로 백업 하고 복구 하는 법으로 하지 않고 그냥 Repositories 폴더만 복사해서
다른 서버로 이전했다.

1 . 새로운 서버에서 visualsvn 설치 후 서비스를 종료,
2. 새로 만들어진 Repositories 삭제.
3. 복사해 온 Repositories를 같은 위치에 붙여넣기
4. 해당 폴더의 권한에 visaulsvn admin,과 network service 를 추가.
5. visualsvn 재 시작.

2014년 7월 2일 수요일

qmail submission 추가

qmail submission 추가

외국에서 메일을 사용시 아웃룩에서 이런 에러 메시지가 발생.

outlook cannot connect to your outgoing smtp email server

검색해 보니, 외국같은 경우 25번 포트를 차단하는 경우가 많다고 한다.

그래서  부득이하게 587 포트를 열게 됬다.
cd /var/qmail/supervise

#submission 용 디렉토리 생성
mkdir qmail-smtpd-sub
mkdir qmail-smtpd-sub/log

#권한 추가
chmod +t qmail-smtpd-sub
cp ./qmail-smtpd/run ./qmail-smtpd-sub/
cp ./qmail-smtpd/log/run ./qmail-smtpd-sub/log
cp /var/qmail/bin/qmail-smtpd /var/qmail/bin/qmail-smtpd-sub

새로만든 qmail-smtpd-sub/run에 25번 포트를 587로 변경해 준다.
vi /var/qmail/supervise/qmail-smtpd-sub/run

...
/etc/tcp.smtp.cdb -u $Q_UID -g $Q_GID 0 25 \
...

/etc/tcp.smtp.cdb -u $Q_UID -g $Q_GID 0 587 \

 

서비스에 추가
ln -s /var/qmail/supervise/qmail-smtpd-sub/ /service/

이렇게 셋팅 하면 qmail을 재시작 안해도 자동으로 587 포트가 열려있다.
아웃룩에서 smtp 포트를 587 로 변경하고 테스트 해 보면 잘 된다.

참고