본문 바로가기
소프트웨어/서버관련

Mercury SMTP , POP , SpamHalter 로고 한곳으로 모으기

by 씨디맨 2008. 1. 28.
320x100

설명 : Mercury/32 는 무료 메일 서버 프로그램 입니다
         Mercury/32 관리상 메일을 주고 받거나 혹은 스팸 , 거부 등에 대한 로그가 남게 되는데
         이를 보기 편하게 자동으로 생성되게 하는방법과, 로그파일의 갯수를 자동으로 줄이는 스크립트를
         설명합니다

난이도 : ★★★☆☆




일단 Mercury/32 에 모든 작업에 대한 로그가 남습니다

다만 로그가 분류가 안되고 모든 날자에 대한 로그가 한파일로 만들어져서
로그파일이 비대해지는경우가 있는데요

날짜별로 분류하고 MercuryS SMTP Server , MercuryP POP3 Server , SpamHalter (스팸) 에 대한
로그를 LOGS 라는 폴더에 날짜별로 모이도록 해보겠습니다

이러면 잘못된 상황에서 로그분석도 용이하게 될것입니다


SMTP 로그 경로 바꾸기
Mercury/32 -> Configuration -> MercuryS SMTP Server

사용자 삽입 이미지

Logging 항목에 General logging 부분에 경로를 수정하여줍니다
D:\MERCURY32\Logs\SMTP_~Y~M~D.LOG

위와같이하면 (Mercury/32가 D드라이브에 Mercury32 라고 설치되어있을시)
Logs 폴더에 SMTP_년월일.LOG 순으로 저장이 되게 됩니다

가능하면 8.3 규칙을 따르도록 하지만 저렇게 해도 별 상관은 없더군요




POP3 로그 경로 바꾸기
Mercury/32 -> Configuration -> MercuryP POP3 Server

사용자 삽입 이미지

 똑같이 저 경로 부분을
D:\MERCURY32\LOGS\POP_~Y~M~D.LOG
로 해줍니다 설명은 생략하겠습니다

이 로그경우는 아웃룩 등으로 받아가는 정보를 저장하는 경우로 중요도 비중이 낮지만
혹시라도 다른외부에서 받아간것을 확인할 시에는 필요합니다


SpamHalter 로그 경로 수정
Mercury/32 -> Configuration -> SpamHalter

사용자 삽입 이미지

Logs/reporting 탭에서
Select logfile directory... 버튼을 클릭한뒤 로그를 저장할 폴더를 선택후
오른편의 Log filename: 에
spamwall_~Y~M~D.LOG 라고 적어줍니다



모두 적용후에는 Log 폴더에 가보면

사용자 삽입 이미지


이처럼 날짜별로 로그가 모이는것을 확인할 수 있습니다 다만 자동으로 기간이
지나면 삭제하는 옵션은 없으므로 수동으로 지워주거나 혹은 자동으로 지우도록
스크립트를 작성해서 실행해야합니다






// 추가

로그 자동 삭제 스크립트 (7일간 데이터만 보관하도록 설정하기)  
위와 같이 설정할 경우

POP_현재날짜.LOG
SMTP_현재날짜.LOG
spamwall_현재날짜.LOG

가 차곡차곡 생기게 됩니다 다만 자동으로 지우는 설정은 없기에 가만히 두면 파일 갯수가
하루마다 계속 증가하게 됩니다

이걸 7일간의 데이터만 보관하고 나머지 기간이 지난 파일은 지우도록 해보겠습니다






mercury32_log_7days.js 다운로드 및 스크립트 내용





/////////////////////////////////////////////////////////////////////
// 메일서버에 MERCURY32\LOGS 폴더의 로그를 7일데이터만 
// 보관하기 위한 스크립트 
// 제작일 : 08.01.28
// 제작자 : 박춘호
//////////////////////////////////////////////////////////////////////

var fso = new ActiveXObject("Scripting.FileSystemObject");
var objFolder = fso.GetFolder("D:/Mercury32/logs");
var fc = new Enumerator(objFolder.files);

function DeleteFile(filespec)
{
   var fso;
   fso = new ActiveXObject("Scripting.FileSystemObject");
   fso.DeleteFile(filespec);
}
function minus(num)
{
 var now = new Date();
 now = new Date(now.getYear(),now.getMonth(),now.getDate()-num);
 n = ((now.getYear()*10000+(now.getMonth()+1)*100+now.getDate())+"").slice(2);
 return(n);
 now = null;
}
for(var i=7; i<30; i++)  // 현재부터 7일간 데이터는 보관 7일 전 30일전 이후의 내용은 삭제
{
   var filesrc0 = objFolder+"/"+"POP_"+minus(i)+".LOG";
 var filesrc1 = objFolder+"/"+"SMTP_"+minus(i)+".LOG";
 var filesrc2 = objFolder+"/"+"spamwall_"+minus(i)+".LOG";
 if(fso.FileExists(filesrc0)) DeleteFile(filesrc0);
 if(fso.FileExists(filesrc1)) DeleteFile(filesrc1);
 if(fso.FileExists(filesrc2)) DeleteFile(filesrc2);
}
fso = null;

mercury32_log_7days.js 의 내용을 보시고 있습니다

D:/Mercury32/logs 이 부분은 Mercury32 의 로그파일이 있는 경로입니다

js 파일이므로 단독으로 실행이 가능하며 윈도우 스케쥴러에 예약을 시켜서 매주마다 또는 한달마다 실행하게
해놓는다면 로그파일이 계속 늘어나는것을 정리 할 수 있습니다


 

댓글