sendmail 큐에 쌓여있는 메일 바로 발송하기 여러 이류로 인해 발송되지 못하고 큐에 쌓인경우, 서버자원을 점유하여 부하를 발생시킬 수 있다. 이런 경우,큐에 쌓인 메일을 바로 발송할 수 있다. /usr/sbin/sendmail -oQ/var/spool/mqueue -oT1d -q -v
qmail 동작 확인하기 echo to: 메일주소 | /var/qmail/bin/qmail-inject
qmail에서 아래와 같은 로그를 보았을때 퍼미션과 소유권을 확인하면 된다. Nov 21 08:24:51 mail3 pop3d: Connection, ip=[xxx.xxx.xxx.xxx] Nov 21 08:24:51 mail3 pop3d: chdir "/home/vpopmail/domains/domain.co.kr/lhyoung": Permission denied Nov 21 08:26:02 mail3 qmail: 1227223562.708787 warning: unable to stat mess/19/1338481 Nov 21 08:26:53 mail3 pop3d: Connection, ip=[xxx.xxx.xxx.xxx] Nov 21 08:26:53 mail3 pop3d: chdir "/home/vpopmail/domains/domain.co.kr/lhyoung": Permission denied Nov 21 08:27:07 mail3 pop3d: Connection, ip=[xxx.xxx.xxx.xxx]
센드메일 발송 테스트(sendmail) root@web:/usr/sbin# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 aaa.com ESMTP Sendmail 8.13.1/8.13.1; Tue, 8 Mar 2011 15:41:47 +0900 mail from:aaa@aaa.com 250 2.1.0 aaa@aaa.com... Sender ok rcpt to:aaa@aaa.com 250 2.1.5 aaa@aaa.com... Recipient ok data 354 go ahead Return-Path: test@mail.com From: TEST <test@mail.com> To:<test@mail.com> Subject: 제목 Content-Type: text/html; chareset=euc-kr Content-Transfer-Encoding: base64 354 Enter mail, end with "." on a line by itself 테스트메일발송 . 250 2.0
MTA(Mail Transfer Agent: sendmail, qmail,..) 메일을 외부서버와 송/수신하는 역활수행 MDA(Mail Delivery Agent: procmail, ...) MTA에게서 메일을 받아 메일박스에 저장 MUA(Mail User Agent: Outlook Express, ...) 메일을 보내기 위해 사용되는 메일클라이언트
# vdelivermail은 메일 서버상에 존재하지 않는 계정으로 오는 메일에 대해 메일에 대해 어떤메일로 받을지 설정하는 명령어 # 기본값 | /vpopmail-디렉토리/bin/vdelivermail '' bounce-no-mailbox # 포워딩 하는 경우 admin@test.com 으로 모두 받아보려면 다음과 같이 수정 한다. | /vpopmail-디렉토리/bin/vdelivermail '' admin@test.com # 삭제하는 경우 존재하지 않는 계정으로 오는 메일을 삭제 하려면 ~vpopmail/domains/virtual_domain/.qmail-default 파일을 다음과 같이 수정 | /vpopmail-디렉토리/bin/vdelivermail '' delete # 포워딩 존재하지 않는 계정으로 오는 메일을 다른 도메인으로 보내려면 ~vpopmail/domains/virtual_domain/.qmail-default 파일을 다음과 같이 수정 | /vpopmail-디렉토리/bin/vdelivermail '' $EXT@newdomain.com
온라인 거래처리(OLTP ; OnLine Transaction Processing) 여러과정(또는 연산)이 하나의 단위 프로세스로 실행되도록 하는 프로세스 ex) 과정 1 : 철수의 계좌에서 50,000원을 감소시킨다 과정 2 : 현금을 인출해 준다. 과정 3 : 명세표를 출력해준다 이와같은 과정은 하나의 단위로 이루어져야 함 트랜잭션 : 데이터베이스 일관성을 보존하는 프로그램 실행단위 트랜잭션의 속성 원자성 : 하나의 트랜잭션을 구성하는 단위작업들은 모두 수행되든지 아니면 모두 수행되지 않아야 함 일관성 : 하나의 트랜잭션이 수행되었을 때, 그 트랜잭션은 데이터베이스 일관성을 보전해 주어야 함 고립성 : DBMS가 여러 트랜잭션을 동시에 수행시키는 경우에도 트랜잭션들은 서로 상호 간섭을 받지 않아야 함 지속성 : 트랜잭션이 정상적으로 완료되었다면 설사 해당 변경 내용이 디스크상에 반영되기 전에 시스템 장애가 일어나더라도 트랜잭션의 완료 효과는 계속적으로 유지 되어야 함 트랜잭션 명령문 BEGIN TRAN[SACTION] [<트랜잭션 이름>] : 트랜잭션 시작 명시COMMIT TRAN[SACTION] [<트랜잭션 이름>] :
# sendmail mqueue 설정 (sendmail 발송속도 높이기) /etc/mail/sendmail.cf 에서 변경전 : O QueueDirectory=/var/spool/mqueue 변경후 : O QueueDirectory=/var/spool/mqueue/q* /var/spool/mqueue 밑에 q1~q10 디렉토리 생성 센드메일 재시작 # 큐에 쌓인 메일 강제로 보내기 sendmail -oQ/var/spool/mqueue -oT1d -q -v
sendmail에서 mqueue의 처리상황 확인하는 명령어 root@51s:/var/spool/mqueue# sendmail -bp /var/spool/mqueue/q19 is empty /var/spool/mqueue/q16 is empty /var/spool/mqueue/q12 is empty /var/spool/mqueue/q5 is empty /var/spool/mqueue/q28 is empty /var/spool/mqueue/q6 is empty /var/spool/mqueue/q9 is empty /var/spool/mqueue/q13 is empty /var/spool/mqueue/q10 is empty /var/spool/mqueue/q8 is empty /var/spool/mqueue/q11 is empty /var/spool/mqueue/q27 is empty /var/spool/mqueue/q23 is empty /var/spool/mqueue/q2 is empty /var/spool/mqueue/q29 is empty /var/spool/mqueue/q17 is empty /var/spool/mqueue/q1 is empty /var/
sendmail의 mqueue 설정 MinQueueAge=30m mqueue의 메일 재발송 시간 설정. Timeout 설정 이전에 적용되는 우선적인 옵션으로, 발송에 실패한 메일이 다시 재발송을 시도하기까지의 대기 시간을 설정 한다. 기본값은 30분이며 기본적으로 서버부하를 줄이기 위해 # 주석처리 되어있다. Timeout.queuereturn=5d 특정한 사유로 인해 메일이 전달되지 못하고 mqueue 에보관되고 있을경우의 보관 기간을 지정하는것으로 기본값은 5일이다. 이기간을 넘길경우 메일은 자동적으로 최초 발신지로 되돌려져 반송처리가 된며, queue에 보관된 메일은 파기된다. Timeout.queuewarn=4h 역시 특정한 사유로 인해 메일이 전달되지 못할경우, 최초 발신자에게 메일이 전달되지 못하고 있음을 경고하는 경고메일이 발송 되기까지의 대기 시간을 지정하며 기본값은 4시간이다.
# qmailanalog 사용하기 # 파일 다운로드 : 다운로드(클릭) tar xvfpz qmailanalog-0.70.tar.z cd qmailanalog-0.70 make make setup check # 기본 설치경로 : /usr/local/qmailanalog 설치경로를 변경할 경우 conf-home파일의 첫줄을 수정한다. # 설치완료 # 사용법 cat /var/log/maillog | awk '{$1="";$2="";$3="";$4="";$5="";print}' > /tmp/qmailLogTmp cat /tmp/qmailLogTmp | /usr/local/qmailanalog/bin/matchup | /usr/local/qmailanalog/bin/zoverall > /tmp/qmailLog_result /tmp/qmailLog_result의 파일을 열어보면 결과값을 확인할 수 있다. 이 다음부터는 직접 가공해보시기 바랍니다. # multilog를 이용할 경우 # 패치하기 # 패치파일 다운로드 : 다운로드(클릭) 패치 후 위와 동일하게 컴파일하면 된다. # 사용법 1. cat /var/log/qmail/current | /usr/local
# qmail에서 존재하지 않는 계정으로 오는 메일 삭제하기 ~vpopmail/domains/virtual_domain/.qmail-default 파일을 다음과 같이 수정한다 | /home/vpopmail/bin/vdelivermail '' delete 설정시 vpopmail 경로를 확인하고 설정하세요 # 참고 파일의 소유권 변경해주기