View
230
Download
11
Embed Size (px)
Citation preview
소프트메일[email protected]
고급강좌 : API 와 TOOL.exe
순서 메라크 API 메일발송 컴포넌트 커맨드라인 도구 - TOOL.exe
Part I API메라크 API
API? 어떨 때 사용할까 ?!
길동씨 메일박스 사용량이 10MB 가
넘는 사람들의 명단을 좀 줄 수 있나요 ?
우린 10,000 유저가 넘는데 !
대부분의 작업은 자동으로 할 수 있음
API 를 사용 – API 는 쉬움
자신의 프로그램이나 스크립트에서 사용가능하며 . 계정 , 도메인 , 외부 계정 , 메라크 환경설정에 접속할 수 있음
길동씨 걱정마세요
API 기초 API = Application Programming Interface
메라크 두 가지 방식의 API 제공 : direct API COM objects => 기본 이용
두 방식 모두 대부분의 언어에서 사용할 수 있음 Delphi C Visual Basic PHP ASP …
이용가능한 인터페이스API.DLL
Direct API Direct API
MerakCOMMerakCOM
COM 오브젝트 MerakCOM.APIObject
주 환경설정 관련 api MerakCOM.DomainObject
도메인 설정 관련 api MerakCOM.AccountObject
계정에 관련된 api 로 계정생성 , 수정 , 삭제 MerakCOM.RemoteAccountObject
원격 계정 관리 MerakCom.ScheduleObject
일정관리 & 그룹웨어 관련 api MerakCom.StatisticsObject
서비스 상태 , 통계에 관한 오브젝트 공통 속성 - LastErr
MerakCom.APIObject
APIObject – 환경설정 BackupConfig, RestoreConfig
configuration reload and AV update UpdateConfiguration, ReloadServices
spam indexing SpamIndexNow
settings configuration Get/SetProperty
domain operations NewDomain, RenameDomain, OpenDomain, DeleteDomain,
Save
PHP 샘플
<?$com = new COM("MerakCOM.APIObject"); $oldtemp = $com->GetProperty(“C_TempPath“);
$com->SetProperty(“C_TempPath“, “c:\temp\”);$com->SaveConfig;$com->UpdateConfiguration;$temp = $com->GetProperty(“C_TempPath“);
echo ‘Old temp folder:’ . $oldtemp;echo ‘New temp folder: ’ . $temp; $com->Release;$com = null;?>
도메인 관리 내용 New, Open, Save, Delete
계정 운영 : 계정 조회 및 검색
GetAccountCount, GetAccountIndexByAlias, GetAccount
관리 내용 NewAccount, OpenAccount, DeleteAccount
MerakCom.DomainObjectASP 샘플<%Set DomainObj =
Server.CreateObject("MerakCOM.DomainObject")DomainObj.Open(“domain.com")Quota = DomainObj.GetProperty("D_DiskQuota")
Response.Write(“Quota is " & Quota)Set DomainObj = Nothing%>
계정 관리 내용 New/Open/Save/Delete
설정 Get/SetProperty
도메인 내에서 모든 계정에 적용 FindInit, FindNext, FindDone
메시지 변환 POP3 <-> IMAP 변환 MailboxConvertMessages
MerakCom.AccountObject계정 추가 샘플
Set api = Server.CreateObject("MerakCOM.APIObject")
Set api_Account = Server.CreateObject("MerakCOM.AccountObject")
api.Init("d:\merak\")
api_Account.new("[email protected]")
api_Account.SetProperty "u_name", "demodemo1"
api_Account.SetProperty "u_password", "1234"
api_Account.SetProperty "u_mailbox", "demodemo1"
api_Account.Save()
response.write api_Account.LastErr
계정 삭제 샘플
Set api = Server.CreateObject("MerakCOM.APIObject")
Set api_Account = Server.CreateObject("MerakCOM.AccountObject")
api.Init("d:\merak\")
api_Account.open("[email protected]")
api_Account.delete()
response.write api_Account.LastErr
API 변수 및 주의사항 모든 API 변수는 아래의 파일에 포함되어 있으니 참조
..\merak\API\Delphi\apiconsts.pas ..\merak\API\comapi.txt ..\merak\API\classes.txt
ASP 소스코드에서의 주의사항 메라크 폴더의 api.dll 의 권한에 IUSR 와 IWUAM 사용자를 추가하고 Full
권한을 주어야 함 , 그리고 IIS 재시작
문제발생시 계정추가 , 변경 시에 “ IceWarpServer.APIObject error '8000ffff‘” 와 같은
오류가 발생하면 다음 섹션의 TOOL.exe 를 사용하여 운영하면 안정적으로 관리 가능
Part II 메일발송 컴포넌트홈페이지에서 메라크 smtp 를 사용한
메일발송
메일발송을 위한 도구
메일발송을 위한 컴포넌트 종류 IceWarpCOM – 무료제공 (smtp 만 제공 ) EasyMail – 유상 (smtp, pop3, imap4…) MailBee - 유상 (smtp, pop3, imap4…) CDOSYS
프로그램이나 스크립트에서 메일을 발송하려면 smtp 컴포넌트를 사용하여야 합니다 . 일반적으로 asp 에서 메일을 발송하려면 별도의 컴포넌트를 사용하여야 합니다 . Jsp 의 경우 기본 smtp 함수를 사용하여도 됩니다 .
IcewarpCom
IceWarpCOM.Mailer object 메라크 구매고객에게 무상제공되는 smtp 컴포넌트 발신자 메일주소가 반드시 존재
IceWarpCOM.IMMessage object 메라크 메신저에서 메시지 발송 발신자 계정이 반드시 존재 수신자는 발신자의 친구목록에 등록되어있어야 함
IceWarpCom - PHP 에서 메일발송$com = new COM("IceWarpCOM.Mailer");
$com->RemoteHost = "localhost";
$com->Helo = "localhost";
$com->FromName = “Mr.Employee";
$com->FromAddress = "admin@localhost";
$com->AddRecipient("[email protected]", "Mr.Boss");
$com->Subject = "Hello";
$com->BodyText = "Body";
if (!$com->SendMail()) echo $com->Response;
$com->Release();
$com = null;
IceWarpCom - asp 에서 메일발송
Dim objMail, toMail
Set objMail = CreateObject("IceWarpCOM.Mailer")
tomail = "[email protected]"
objMail.RemoteHost = "localhost"
objMail.Helo = "localhost"
objMail.FromName = " 소프트메일 "
objMail.FromAddress = “[email protected]"
objMail.AddAddress tomail, " 소프트메일 "
objMail.CharSet = "euc-kr"
objMail.IsHTML = "1"
objMail.Subject = " 테스트메일 "
objMail.BodyText =" 테스트 메일 "
objMail.AppendBodyFromFile(“c:\ 테스트지 \default.asp")
objMail.AddAttachment(“c:\ 테스트 \test.zip")
objMail.SendMail
Response.Write " 성공했습니다 !"
Set objMail = Nothing
EasyMail - asp 에서 메일발송Set mailObj = Server.CreateObject("EasyMail.SMTP.6")
mailObj.LicenseKey = “ 라이센스키 "mailObj.MailServer = "localhost"mailObj.MailPort = 25mailObj.Charset = "euc-kr"mailObj.EventLogging = 1mailObj.BodyFormat = 1mailObj.AutoWrap = 0
message1 = "<HEAD><title> 메라크 메일 서버 </title></HEAD><BODY>"message1 = message1 & “ " & Name & "</b> 님 안녕하세요 ~~~ <BR>"message1 = message1 & “</body><html>"
mailObj.BodyFormat = 1mailObj.From = " 소프트메일 "mailObj.FromAddr = “[email protected]"
mailObj.Subject = " 테스트 메일입니다 "mailObj.AddRecipient Name, Mail, 1mailObj.AddRecipient " 다운로드 ", "[email protected]", 1
mailObj.BodyText = message1 x = mailObj.Send
mailObj.Clear(1)
JSP 에서 메일발송 샘플Subject = new String(subject.getBytes("euc-kr"),"8859_1");
Contents=new String(contents.getBytes("euc-kr"),"8859_1");
SmtpClient sm=new SmtpClient("mail.abc.co.kr");
sm.from("[email protected]");
sm.to(e_mail);
PrintStream msg=sm.startMessage();
msg.print("To: ");
msg.println(e_mail);
msg.print("Subject: ");
msg.println(subject);
msg.println("MIME-Version: 1.0 ");
msg.println("Content-Type : text/html;charset=\"euc-kr\"");
msg.println("Content-Transfer-Encoding: 8bit ");
msg.println(contents);
sm.closeServer();
Asp, php 등으로 만들어진 웹페이지에서 메일 발송이 가능
홈페이지와 db 와 연동된 자동 안내 메일 발송
고객화된 뉴스레트 발송용
무료 컴포넌트
결론
Part III 커맨드라인 도구TOOL.EXE 를 사용한 메라크 통합
커맨드라인 도구 – TOOL.EXE배치파일이나 커맨드라인에서 직접 수행하여 메일서버를 관리할 수 있으며 사용자 프로그램이나 웹에 쉽게 통합할 수 있음
계정 , 도메인의 생성 , 수정 , 삭제
기본 매개변수로 제어 (+API 상수 )
import/export
비밀번호 정책 위반자 목록
Tool.exe 의 장점 Tools.exe 는 어떤 API 변수를 처리할 수 있음
단순화된 사용 방법 코드 대신에 API 이름 사용
더욱 직관적
유연성 확보 메라크 관리자 콘솔을 사용할 필요가 없음
배치파일에 커맨드 사용가능 -> 스크립트 프로그래밍 가능
명령어 , 오브젝트 , 매개변수 , 옵션으로 구성
원격지 메라크 접속 가능
Tool 함수함수
CreateDeleteModifyDisplayExportImportFile
새 항목을 생성 – 도메인 / 계정 추가기존 항목 삭제 – 도메인 / 계정 삭제옵션 값 변경표준 출력으로 옵션 값 화면에 표시특정 옵션 값을 파일로 내보내기.csv 파일에서 어떤 옵션 값을 가져오기커맨드를 포함한 파일을 로드 - 스크립트
Tool 매개변수
매개변수AccountDomainTablesSystemUserstatisticsBatch
EmailDomainService[parameters]Fromdate todatebatchfile
[parameters][parameters]Connection string
Filterstring outputfile[prefix]
tool.exe 예제 도메인 추가 : tool create domain 도메인 d_description “ 도메인설명” 계정 추가 : tool create account 메일주소 u_password “ 비밀번호” u_comment “
계정설명” … 기타 매개변수… 계정 삭제 : tool delete account 메일주소 계정 보기 : tool display account *@* ( 또는 @domain.com) 계정 가져오기 : tool import account users.txt u_mailbox u_name u_password 계정 내보내기 :
tool export account *@* > text.txt tool export account *@* u_password u_name u_emailalias U_admin…
시스템 정보 : tool display system st_smtp_failedspam TOOL 도움말 :
tool.exe –h tool.exe search account tool.exe search domain
Asp 페이지에서의 Tool 사용 계정 추가 : <%
Set sh = Server.CreateObject("wscript.shell")
sh.run "c:\merak\tool.exe create account 메일주소 u_password 비밀번호“ … ‘ex) tool create account [email protected] u_password 1234
%>
계정 수정<%
Set sh = Server.CreateObject("wscript.shell")
sh.run "c:\merak\tool.exe modify account 메일주소 “ api 변수” “변경할 값” … ‘ ex) tool modify account [email protected] u_password 1234
%>
계정 삭제<%
Set sh = Server.CreateObject("wscript.shell")
sh.run "c:\merak\tool.exe delete account 메일주소“ ‘ ex) tool delete account [email protected]
%>
실제 구현 코드 예제 각 항목을 변수로 처리<%email1 = "[email protected]"
pass1 = "123456"value1 = "d:\merak\tool.exe create account " & email1 & " u_password " & pass1
Set SH = Server.CreateObject("wscript.shell")'sh.run "d:\merak\tool.exe create account [email protected] u_password 1234"sh.run value1
%>
Tool 매개변수 샘플
시스템 변수는 merak\api\delphi\apiconst.pas 참조
모든 도메인과 계정을 관리
대부분의 환경설정을 구성
즉시 적용
메라크 관리를 위한 프로그램 /스크립트를 임의로 제작할 수 있음
자신의 메시지 처리 모듈을 제작할 수 있음 ( 통계 , 메시지 커스터마이징 )
개발자 외의 담당자에겐 커맨드라인 도구 제공 (tool.exe)
결론