This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
, Installation of OpenEMM 2015............................................................................................-%.1 Read ccess t" ai!!"g...................................................................................................................../%.2 nitia!ie$Update te Open, and te Open, 'S ata#ase................................................../%.3 asic c"n4gurati"n...........................................................................................................................
%.& Start and St"p Open,................................................................................................................10%.5 Open, "es 6"t Send ai!s......................................................................................................10
10 3prade'e4Installation.................................................................................................110.1 ut"matic Upgrade......................................................................................................................110.2 anua! Upgrade and e-nsta!!ati"n............................................................................................1
11 Etensions for OpenEMM................................................................................................2111.1 ,+tending Sendmai! ,mu!ati"n Ait P!ugins................................................................................2111.2 ,+tending te Open, BU Ait P!ugins...................................................................................21
1# Appendi A$ Con/uration of !endmail...........................................................................2513.1 Red)at *inu+ and U#untu:...........................................................................................................2513.2 SuS, *inu+....................................................................................................................................25
1) Appendi 9$ '6! Entries: *;'6: <ostnames and 'omains...............................................21&.1 ;at is a 6S entry and Aat is its purp"seC..............................................................................271&.2 ;at is a )"stnameD a "main and a >6................................................................................271&.3 )"A d" get a "main and a >6C............................................................................................27
15 Appendi C$ OpenEMM as Redirection !er&er on ort -0.................................................2-
15.1 Red)at *inu+ and U#untu.............................................................................................................2/15.2 SuSe *inu+....................................................................................................................................2/15.3 'anges t" te ata#ase.............................................................................................................2/
Open, is Ae#-#ased enterprise app!icati"n 9"r emai! marketingD marketing aut"mati"nD emai!neAs!etter and ser8ice emai!s <transacti"n emai!s and e8ent "r time triggered emai!s=. @" summarie itDOpen, is a t""! 9"r cust"mer re!ati"nsip management #y emai!.
Open, "Eers t"ns "9 9eatures 9"r pr"9essi"na! usersD am"ng tem: a great user inter9aceD temp!ate-#ased )@* mai!ingsD tracking "9 mai! "penings and !ink c!icksD aut"mated #"unce managementD !"ts "9grapica! rea!time statisticsD se!9-de4ned and #ea8i"ur-#ased target gr"upsD an integrated c"ntentmanagement systemD a mu!tiqueue mai! #ackend 9"r ma+imum sending per9"rmanceD an e+tensi8e set "9 Ae#ser8ices <inc!uding #u!k "perati"ns=D a p!ugin inter9ace t" easi!y e+tend te c"re 9uncti"na!ity and ascripting 9eature t" enance te 9uncti"na!ity "9 Open, Ait triggera#!e cust"mied acti"ns and anaudit-pr""9 user acti8ity !"g..
Open, is main!y Aritten in Fa8aD Fa8ascript and Pyt"n. Open, emp!"ys Fa8a 9rameA"rks !ikeSpringD Struts and @i!es. S"me per9"rmance-sensiti8e c"de is Aritten in '. Open, runs "n t"p "9 a Ae!!pr"8en Open S"urce s"9tAare stack: *inu+D Sendmai!D yS* and @"mcat.
@is d"cument Ai!! guide y"u tr"ug s"me necessary stepsD Aic are needed t" insta!! and c"n4gureOpen,. t requires a #asic kn"A!edge "9 *inu+ system administrati"n and <in case y"u need it= "9"main 6ame Ser8ices <6S=. @e c"mmand-!ine e+amp!es are #ased "n Red)atD U#untu and SuS,*inu+.
,+cept as "terAise n"tedD y"u s"u!d run a!! c"mmands as te user r""t t" make sure y"u a8e terequired permissi"ns.
9 y"u use U#untu and Aant t" insta!! Fa8a !aterD y"u need t" add a neA package s"urce in 4!e s"urces.!ist in direct"ry $etc$apt 4rst. ,nter tese tA" !ines at te end:deb ttp:$$arci8e.can"nica!.c"m$ lucid partnerdeb4src ttp:$$arci8e.can"nica!.c"m$ lucid partner
Update te "perating system t" its !atest re!ease. @is Ai!! keep y"ur system in te m"st sta#!e state andarden it against 8ari"us intrusi"n attempts.
9 package pyt"n-mysq! is n"t a8ai!a#!e in OpenSuseD it is pr"#a#!y n"t needed. ake sure y"u insta!! a8ersi"n 2 "9 Pyt"nD n"t 3. 9 y"u d" n"t Aant t" use Open, Ait Sendmai!D y"u d" n"t need t" insta!!package sendmai!-c9 and$"r sendmai! .
2.# Operatin !"stem$ #2 bit ,) bit
@e #inary tar#a!! "9 Open, 2015 Aas c"mpi!ed "n a %&-#it *inu+ p!at9"rm. 9 y"u Aant t" use a 32-#it*inu+D d"An!"ad te s"urce tar#a!! "9 Open, 2015D unpack it and rec"mpi!e it Ait nt script"penemmH#ui!d.+m! "n a 32-#it *inu+ p!at9"rm <see c"mments in script eader 9"r #ui!d detai!s=:
ant 4f openemmDbuild.ml build9ter tatD rep!ace te %&-#it su#-pr"grams #a8 D qctr! D smctr! D updater and +m!#ack in direct"ry #in "9 y"ure+isting Open, 2015 insta!!ati"n and rep!ace te %&-#it 4!e #a8Arap in direct"ry #in$scripts Ait teneA 32 #it 4!e.
9 y"u use a %&-#it *inu+D #ut y"u a8e c"mpi!ed Open, Ait a 32-#it *inu+D y"u may a8e t" insta!!additi"na! packages 9"r c"mpati#i!ity Ait Open,(s su#-pr"grams #a8D #a8ArapD smctr!D updater and+m!#ack <a!! Aritten in '=:
Red)at *inu+: "um install libc.i,-, libml2.i,-, lib.i,-,<i9 packages Ait suI+ i%/% d" n"t e+istD try suI+ i3/%D and make sure tat !ineecludeF.i#-, F.i)-, F.i5-, F.i,-, in 4!e $etc$yum.c"n9 is unc"mmented=
2.) Operatin !"stem$ Create 3ser openemm<run as super user=
'reate a specia! gr"up and user 9"r Open,:roupadd openemmRed)at and Suse *inu+: useradd 4m 4 openemm 4d ?omeopenemm 4c HOpenEMM42015HopenemmU#untu: useradd 4m 4 openemm 4G adm 4d ?omeopenemm 4s binbas? 4c HOpenEMM42015Hopenemm
@e de9au!t direct"ry $"me$"penemm is used #y Open,. Open, runs Ait te permissi"ns "9 tatuser. On!y te emai! sending c"mp"nentD Aic requires te r""t @'P p"rt 25D Ai!! #e run Ait super userpermissi"ns. Open,(s userspace c"ncept adds m"re sa9ety t" y"ur ser8er and its ser8ices.
Open,(s Ae# c"ntainer @"mcat requires te insta!!ati"n "9 Orac!e(s Standard ,diti"n Fa8a e8e!"pmentJit <S, FJ= - n"t te B6U 8ersi"n "9 Fa8aG 9 Sun(s Fa8a S, SJ is n"t inc!uded in y"ur distri#uti"n and asn"t #een insta!!ed yetD y"u a8e t" insta!! it #y y"urse!9. >"r Open, 2015 y"u a8e t" use Fa8a /#ecause Fa8a 7 is n" !"nger #e supp"rted #y Orac!e 9"r 9ree since pri! 2015:
P"int y"ur #r"Aser t" ?a8a."rac!e.c"m and 8isit te d"An!"ad secti"nD su#secti"n Fa8a S, <Standard,diti"n=. "An!"ad te tar#a!! <K.tar.g= "9 te !atest Fa8a S, FJ / <Fa8a e8e!"pment Jit=.
'reate a direct"ry 9"r s"9tAare required #y Open,: mBdir 4p optopenemm '"py te 4!e t" te neA direct"ry: cp dB4-u)54linu4,).tar. optopenemm 'ange t" tis direct"ry: cd optopenemm Unpack te FJ tar 4&f dB4-u254linu4,).tar. 'reate a sym#"!ic !ink ?a8a 9"r te FJ direct"ry: ln 4s dB1.-.0D)5 a&a @est te FJ: a&abina&a 4&ersion
L"u s"u!d get "utput simi!ar t" te 9"!!"Aing: a&a &ersion H1.-.0D)5H %a&a7TM8 !E Runtime En&ironment 7build 1.-.0D)54b1)8 %a&a <ot!pot7TM8 ,)49it !er&er JM 7build 25.)54b02: mied mode8
dditi"na!!yD y"u s"u!d insta!! te Fa8a 'rypt"grapy ,+tensi"n F', t" #e a#!e t" integrate images in
y"ur mai!ings Aic are !"cated "n an )@@PS ser8er. L"u can 4nd te F', 9"r FJ / ere:ttp:$$AAA."rac!e.c"m$tecnetA"rk$?a8a$?a8ase$d"An!"ads$inde+.tm!B"t t" secti"n Mdditi"na! Res"urcesN and d"An!"ad 4!e ?ceHp"!icy-/.ip D unip it and c"py 4!e!"ca!Hp"!icy.?ar and 4!e USHe+p"rtHp"!icy.?ar t" direct"ry $"pt$agnitas.c"m$s"9tAare$?a8a$?re$!i#$security t""8erArite te tA" de9au!t 4!es "9 FJ /.
9 y"u Aant t" use an insta!!ed FJD simp!y edit $"me$"penemm$#in$"penemm.s a9ter te insta!!ati"n "9te Open, tar#a!! and ad?ust te parameter FVH)O, acc"rding!y.
Since Open, is a Ae# app!icati"n using Fa8aD it requires a Ae# c"ntainer !ike @"mcat. Open, 2015runs Ait @"mcat %D 7 and /D #ut Ae rec"mmend @"mcat /. 9 y"u sti!! use @"mcat %D Ae str"ng!yrec"mmend t" update t" @"mcat 7 "r / rater s""ner tan !ater.
6O@,: 9 y"u Aant t" run Open, Ait @"mcat 7D y"u a8e t" rem"8e !ineK>istener class6ameHor.apac?e.catalina.core.T?read>ocal>eaBre&ention>istenerHin 4!e ser8er.+m! in direct"ry $"me$"penemm$c"n9$ and add tis !ine:K>istener class6ameHor.apac?e.catalina.core.%asper>istenerH rigt a9ter !ineK>istener class6ameHor.apac?e.catalina.core.Apr>ifec"cle>istenerH !!>EnineHonH
@" insta!! @"mcatD d"An!"ad te !atest #inary distri#uti"n "9 re!ease or - 9r"m ttp:$$t"mcat.apace."rg . @e c"re package is suIcient. @e e+amp!es ere use @"mcat /.0.2& y"u s"u!d adapt tem t" te!atest 8ersi"n "9 @"mcat or - as needed.
'reate a direct"ry 9"r s"9tAare required #y Open,: mBdir 4p optopenemm '"py te 4!e t" te neA direct"ry: cp apac?e4tomcat4-.0.2).tar.
optopenemm 'ange t" tis direct"ry: cd optopenemm unpack te @"mcat 4!e: tar 4&f apac?e4tomcat4-.0.2).tar. 'reate a sym#"!ic !ink t"mcat 9"r te neA direct"ry: ln 4s apac?e4tomcat4-.0.2) tomcat
9 y"u Aant t" make sure tat @"mcat A"rksD enter te 9"!!"Aing c"mmands <and make sure t" st"p ane+isting insta!!ati"n "9 Open, 4rst=:
Set en8ir"nment 8aria#!e FVH)O,: eport %AJAD<OMEoptopenemma&a 'ange int" @"mcat direct"ry: cd tomcat Start @"mcat: binstartup.s? 'eck 9"r @"mcat insta!!ati"n screen: ?ttp$local?ost$-0-0 <UR* 9"r #r"Aser "r using
Aget= St"p @"mcat: bins?utdo+n.s?
9 y"u can n"t c"nnect t" @"mcat Ait y"ur #r"Aser y"u may a8e t" adapt y"ur 4reAa!! ru!es 4rst <seene+t secti"n=.
6O@,: 9 y"u Aant t" use a pre-insta!!ed @"mcatD simp!y edit $"me$"penemm$#in$"penemm.s a9ter teinsta!!ati"n "9 te Open, tar#a!! and ad?ust parameter '@*6H)O, acc"rding!y.
Bet te !atest 8ersi"n "9 te Open, #inary c"de 9r"m?ttp$+++.sourcefore.netproectsopenemm/les
'"py te tar#a!! t" a temp"rary !"cati"n - $tmp is a g""d c"ice. 'ange t" te "me direct"ry and runte 9"!!"Aing c"mmands t" create a 8ersi"n speci4c direct"ry 9"r te neA Open, 8ersi"n and t" createa sym#"!ic !ink 9r"m "penemm t" tat direct"ry:cd ?omem& openemm openemm42015ln 4s openemm42015 openemm'ange t" Open,(s direct"ry and unpack te Open, tar#a!!. " n"t 9"rget "pti"n QpQ 9"r te tarc"mmandD #ecause s"me 4!es need t" a8e "Aner and gr"up set t" r""t "r specia! permissi"ns Aic arepreset in te tar#a!!Gcd ?omeopenemmtar &pf tmpOpenEMM420154bin.tar.>ina!!yD in "rder t" 9"!!"A #est practiseD m"8e te d"cumentati"n 9"!der t" $usr$sare$d"c Aere d"c 4!esare usua!!y !"cated "n a *inu+ system:mBdir 4p usrs?aredocOpenEMM42015m& 3!RD!<AREF usrs?aredocOpenEMM42015rm 4r 3!RD!<ARE9 y"u decide t" insta!! Open, in a direct"ry "ter tan $"me$"penemm p!ease make sure tat y"ur
"me direct"ry c"ntains a sym#"!ic !ink t" tat direct"ry and grant te required 4!e access permissi"nsAitc?o+n 4R openemm$openemm Qpat? to OpenEMM install director"
,.1 Read Access to Maillo
Open, requires read access t" te !"g 4!e $8ar$!"g$mai!!"g .
>"r Red)at *inu+ "pen 4!e $etc$!"gr"tate.d$sys!"g and add te 9"!!"Aing !ine a9ter te !ine saredscripts :create 0,0)!s" runc?mod ,0) &arlomaillo
t" set te permissi"ns "9 te current mai!!"g.
>"r U#untu n"ting as t" #e d"ne #ecause "penemm Aas added t" gr"up adm andD tere9"reD cana!ready access te mai!"g. ut since U#untu(s mai!!"g is named mai!.!"g y"u a8e t" create a sym!ink 9"rmai!!"g :ln 4s &arlomail.lo &arlomaillo
>"r SuS, *inu+ "pen 4!e $etc$sys!"g-ng$sys!"g-ng.c"n9.in and cange te !ineoptions Q lonD?ostnames7oS8@ s"nc708@ perm70,)08@ stats7#,008@ @t"options Q lonD?ostnames7oS8@ s"nc708@ perm70,))8@ stats7#,008@ @!s" cange te !inedestination mail Q /le7H&arlomailH8@ @t"destination mail Q /le7H&arlomailloH8@ @>ina!!yD acti8ate te canges Aitsbin!u!Econ/
,.2 Initialie3pdate t?e OpenEMM and t?e OpenEMM CM! 'atabase
ake sure tat yS* is running.- Red)at *inu+: etcinit.dm"s=ld restart- U#untu: ser&ice m"s=l restart- SuS, *inu+: etcinit.dm"s=l restart
Since Open, 2015 A"rks Ait a 'S data#ase Aic did n"t e+ist #e9"re 8ersi"n %.0D y"u a8e t"setup tis data#ase and !"ad its !ay"ut i9 y"u update Open, 9r"m a 8ersi"n #e9"re %.0 "r i9 y"u areinsta!!ing Open, 9r"m scratc:cd usrs?aredocOpenEMM42015
m"s=ladmin 4u root 4p create openemmDcms<"mit "pti"n p in case y"ur yS* system is n"t passA"rd pr"tected=m"s=l 4u root 4p openemmDcms K openemmDcms42015.s=l
9 y"u A"u!d rater insta!! a dem" 'S data#ase Ait samp!e 8a!uesD use te 4!e "penemmHdem"- cms.sq! instead "9 te "penemmHcms.sq! 4!e menti"ned a#"8e. @is 4!e c"ntains a ' temp!ateD 10c"ntent m"du!e types and 12 c"ntent m"du!es as samp!es t" A"rk Ait.
L"u n"A a8e tree "pti"ns:
A.8 9 y"u Aant t" set up te Open, data#ase 9r"m scratcD use te 9"!!"Aing c"mmands:cd usrs?aredocOpenEMM42015m"s=ladmin 4u root 4p create openemm<"mit "pti"n p i9 y"ur yS* system is n"t passA"rd pr"tected=9 y"u p!an t" use te redirecti"n ser8ice "9 Open,D "pen 4!e "penemm-2015.sq! Ait a te+t edit"r !ikeedit "r 8imD and 4nd and rep!ace te string?ttp$local?ost$-0-0Ait a 8a!id redirecti"n UR*. n "ur e+amp!e it is?ttp$+++.openemm.or$-0-06e+tD rep!ace te empty mai!!""p string (( rigt a9ter te redirecti"n UR* y"u ?ust entered in te step#e9"reD Ait te "st name "9 y"ur ser8erD !ike+++.openemm.or
9 y"u p!an t" use te #ui!t-in #"unce management 9"r asyncr"n"us #"uncesD y"u a8e t" use tesender "stname <see secti"n 12.2=. n "ur e+amp!e it isne+s.openemm.or @e sender "stname y"u enter 9"r te mai!!""p string Ai!! #e used as te d"main name 9"r te 9"rAardaddresses generated #y te #"unce 4!ter.>ina!!yD !"ad te Open, data#ase !ay"ut Aitm"s=l 4u root 4p openemm K openemm42015.s=l
9.8 n case y"ur "!d Open, data#ases are s"me"A !"st #ut y"u made #ackup 4!es "penemm.sq! and"penemmHcms.sq! 9r"m a 9"rmer insta!!ati"n <see capter 10=D imp"rt te data#ases Aitm"s=ladmin 4u root 4p create openemmm"s=ladmin 4u root 4p create openemmDcmsm"s=l u root p openemm K ?omeopenemmopenemm.s=l
m"s=l u root p openemmDcms K ?omeopenemmopenemmDcms.s=l L"u may a8e t" update te data#ase scemas. 9 s"D p!ease a!s" 9"!!"A te instructi"ns in te 9"!!"Aingparagrap.
C.8 9 y"u used Open, #e9"re and an Open, data#ase a!ready e+istsD y"u may a8e t" update y"urdata#ase scema t" add neA ta#!es and$"r c"!umns. 'ange t" direct"ry $usr$sare$d"c$Open,-2015 and !""k 9"r 4!es Ait names !ike updateH"penemm-2011-2013.sq! . @" update y"ur data#ase t" te !atest8ersi"n y"u a8e t" app!y s"me "r a!! "9 tese 4!es <depending "n te Open, 8ersi"n y"u used#e9"re= in te rigt sequence t" y"ur data#ase. @is is d"ne #y te <generic= c"mmand:m"s=l 4u root 4p openemm K updateDopenemm4Qold &ersion4Qne+ &ersion.s=l>"r e+amp!e: 9 y"u Aant t" update 9r"m Open, %.2 t" 2015 y"u a8e t" run te 9"!!"Aing tA"c"mmands in e+act!y tat sequence:m"s=l 4u root 4p openemm K updateDopenemm4,.242011.s=lm"s=l 4u root 4p openemm K updateDopenemm420114201#.s=lm"s=l 4u root 4p openemm K updateDopenemm4201#DR242015.s=l" n"t skip an intermediate 8ersi"nG )"Ae8erD i9 y"u did n"t insta!! a re!ease candidate <R'= "9 Open,Dy"u s"u!d "mit a!! update 4!es c"ncerning re!ease candidate 8ersi"ns <!ike updateDopenemm45.#.245.).0rc1.s=l "r updateDopenemm45.).0rc145.).0rc2.s=l=.
,.# 9asic con/uration
@e pr"perty system.ur! in 4!e emm.pr"perties in direct"ry $"me$"penemm$Ae#apps$"penemm$;,- 6>$c!asses must #e set t" te UR* "9 y"ur Open, insta!!ati"nD Aic is usua!!y identica! t" y"urredirecti"n UR*D in te 9"rm
?ttp$+++.openemm.or$-0-0 @e pr"perty cms.ccr.ur! in 4!e cms.pr"perties in te same direct"ry s"u!d #e set t" te identica! UR*un!ess te c"ntent manager m"du!e <centra! c"ntent rep"sit"ry= runs "n a diEerent ser8er - Aic isp"ssi#!e due t" its Ae#ser8ices inter9ace.
'ange t" user "penemm Aitsu openemm" n"t 9"rget te ypen in te 4rst !ineG @" start te Open, en8ir"nmentD cange t" te "me direct"ry "9 Open, and !aunc te startscript Aitopenemm.s? startand t" st"p Open,
openemm.s? stop9 te script "penemm.s is n"t 9"und make sure tat 4!e .#asHpr"4!e in direct"ry $"me$"penemm c"ntains !ineAT<UAT<$U<OMEbin
9 Open, rep"rts err"rs at startup indicating a pr"#!em Ait y"ur "perating system(s 8ersi"n "9 !i#raryg!i#c D y"u a8e t" c"mpi!e Open, y"urse!9. See instructi"ns in #ui!d script "penemmH#ui!d.+m! ins"urce c"de tar#a!! Open,-2015-#in.tar.g 9"r detai!s.
@" in8"ke te BU "9 Open,D p"int y"ur Ae##r"Aser t"?ttp$Q"our *;'6$-0-0and !"g int" Open, as
3sername$ adminass+ord$ openemm
Open, detects te !anguage setting "9 y"ur #r"Aser and s"As te appr"priate !"gin page. O#8i"us!yDy"ur 4rst step s"u!d #e t" cange te passA"rd and user name in te settings menu t" a neA name anda #etter passA"rd.
y de9au!tD Open,(s menus are s"An in ,ng!is. @" cange t" y"ur !"ca! !anguageD c!ick "n menuSettings and c""se su#-menu User . Se!ect user admin <"r te neA name y"u a8e c"sen= and cangete !anguage 4e!d 9r"m ,ng!is t" y"ur !anguage. Retype y"ur passA"rd tAice <passA"rd and c"n4rm4e!d= and press te Sa8e #utt"n. L"u a8e t" !"g "ut and in again t" acti8ate te cange "9 te user!anguage.
,.5 OpenEMM 'oes 6ot !end Mails
@e m"st Mp"pu!arN pr"#!em "9 Open, isD tat n" emai!s are sent "ut. @ere9"reD Ae a8e c"mpi!ed aceck!ist Ait te ten m"st c"mm"n reas"ns Ay Open, d"es n"t send emai!s:
1. packages sendmai! and sendmai!-c9 are n"t insta!!ed2. Sendmai! as n"t #een started < $etc$init.d$sendmai! start =3. Sendmai! is n" !"nger running <ps au+ grep sendmai! =&. a diEerent @ tan Sendmai! is acti8e "n te ser8er <P"st4+D qmai!D ,+imD etc.=5. Sendmai! is n"t ena#!ed as @ 9"r Open, < $"me$"penemm$#in$sendmai!-ena#!e.s =%. p"rt 25 <Sendmai!= "r p"rt /025 <Open,(s interna! S@P ser8er= is n"t "pen7. S,*inu+ is ena#!ed/. ai!queue $"me$"penemm$8ar$sp""!$U,U, d"es n"t e+ist <"penemm.s restart =. n" re8erse 6S entry d"es e+ist 9"r te P address "9 te Open, ser8er <s" tat mai!s are
#!"cked as spam #y SPs=10.Sendmai!(s mai! !"g in $8ar$!"g$mai!!"g s"As err"rs
9 y"u use te 'S m"du!e "9 Open, t" #ui!d mai!ings and Aant t" cange te de9au!t te+t 9"r te+tmai!sD cange te c"ntent "9 te 4e!d te+t in ta#!e cmHte+tH8ersi"nHt#! "n data#ase "penemmHcms acc"rding!y. t a minimum y"u s"u!d cange te d"main name "9 te !inks 9r"m !"ca!"st t" y"urredirect d"main name.
9 y"u Aant t" A"rk Ait m"re tan 200D000 addresses in y"ur data#aseD cange te 8a!ue "9 tec"rresp"nding pr"perty in 4!e emm.pr"perties :recipient.maRo+s200000)"Ae8erD te #igger y"ur data#aseD te m"re te per9"rmance "9 y"ur Open, insta!!ati"n maydegradeG 9 y"u Aant t" use te imp"rt Aiard t" imp"rt m"re tan %0D000 recipients in "ne cunk <Aicc"u!d take s"me time=D p!ease ad?ust te 9"!!"Aing pr"perty in te same 4!e acc"rding!y:import.maRo+s,0000
9 te Open, data#ase "!ds m"re tan 10D000 recipients and y"u "pen te recipient !ist y"u Ai!! #egreeted Ait message @e "pti"n y"u se!ected is t"" !arge t" #e disp!ayed c"mp!ete!y. P!ease !imit y"urse!ecti"n t" reduce te am"unt "9 recipients.9 y"u Aant m"re tan 10D000 recipients t" #e pr"cessed 9"r te recipient !ist <Aic Ai!! take !"nger t"disp!ay=D set 4e!d ma+Hrecipients in data#ase ta#!e c"mpanyHt#! t" te 8a!ue y"u Aant:
Open, 2015 c"mes Ait a !ink cecker t" 8eri9y tat a!! !inks in y"ur emai!s !ead t" an e+isting targetpage. L"u can m"di9y te #ea8i"ur "9 te !ink cecker in data#ase ta#!e c"n4gHt#! tr"ug 4e!ds!inktime"ut <de9au!t 8a!ue: 20D000 mi!!isec"nds= and treadc"unt <de9au!t 8a!ue: 20=.
y de9au!tD Open, uses d"main "penemm.net 9"r te message in te eader "9 te mai!s sent "ut#y Open,. 9 y"u Aant t" cange tat 8a!ue t" y"ur "An d"main nameD m"di9y pr"pertymai!gun.ini.d"main in 4!e emm.pr"perties acc"rding!y.
.2 Con/uration for M"!;> database
Open, is a#!e t" send emai!s Ait attacments. @e ma+imum sie 9"r emai! attacments is de4ned#y pr"perty attacment.ma+Sie . t is set t" 2 yte #y de9au!t in 4!e emm.pr"perties :attac?ment.ma!ie20152P!ease #e aAare tat te de9au!t 8a!ue "9 yS* parameter ma+Ha!!"AedHpacket is ?ust 1 yteD i.e. #yde9au!t y"u can n"t !"ad a sing!e data packet <4!e= #igger tan 1 yte int" te data#ase. @" d" tis y"uneed t" set te parameter ma+Ha!!"AedHpacket in secti"n mysq!dT "9 yS*(s c"n4gurati"n 4!e <usua!!ymy.cn9 in direct"ry $etc = t" s"meting !ike te 9"!!"Aing:maDallo+edDpacBet2Mand restart yS* a9terAardsD Aitetcinit.dm"s=ld restartSince te trans9er "9 data t" te data#ase as s"me "8ereadD te 8a!ue 9"r ma+Ha!!"AedHpacket s"u!d#e a !itt!e #it iger tan te 8a!ue 9"r attacment.ma+Sie . L"u can ceck te current 8a!ue "9ma+Ha!!"AedHpacket in yS* Ait statement!E>ECT VVmaDallo+edDpacBet@
9 y"ur yS* instance d"es n"t run "n te same ser8er as Open, y"u migt a8e t" cange certainparameters in yS*(s c"n4gurati"n 4!e <usua!!y my.cn9 in direct"ry $etc = !ike c"mmenting "ut skip- netA"rking in secti"n mysq!dT "r setting #ind-address t" te P address "9 y"ur data#ase ser8er.
,specia!!y imp"rtant is parameter AaitHtime"ut D Aic is set t" 2//00 #y de9au!t. @is means tat yS*aut"matica!!y cuts te c"nnecti"n t" Open, a9ter / "urs "9 inacti8ity. @is !eads t" an initia!c"nnecti"n err"r Aen Open, attemtps t" c"ntact te yS* data#ase ne+t time. 9 y"ur Open,insta!!ati"n d"es n"t access its yS* data#ase a!! te timeD y"u s"u!d increase tis 8a!ue t" at !east"ne day </%&00= "r e8en a A"!e Aeek <%0&/00=.
>"r m"re ad8ice "n "A t" c"n4gure te data#aseD p!ease ceck "ut yS*(s d"cumentati"n.
@" #e a#!e t" access te !egacy Open, Ae#ser8ices <1.0= y"u a8e t" create a Ae#ser8ice user Ait apassA"rd 4rst:I6!ERT I6TO W+sDadminDtblW 7WusernameW: Wpass+ordW8 JA>3E! 7+s4user: openemm8@>"r security reas"ns y"u s"u!d c""se a m"re e!a#"rate passA"rdD "9 c"urse.
.) Con/uration of Lebser&ices 2.0
;i!e te inter9ace 9"r Open, Ae#ser8ices 1.0 is part "9 Open,D te neA and m"re p"Aer9u!Ae#ser8ice inter9ace 2.0 intr"duced Ait Open, 2013 runs as a separate Ae# app!icati"n in direct"ry
$"me$"penemm$Ae#apps$"penemm-As . 9 y"u Aant t" use te neA Ae#ser8ices y"u a8e t" c"py y"ur8ersi"n "9 4!e emm.pr"perties 9r"m $"me$"penemm$Ae#apps$"penemm$;,-6>$c!asses t" $"me$"penemm$Ae#apps$"penemm-As$;,-6>$c!asses and y"u a8e t" cange te UR* "9 pr"pertyAsd!*"cati"nUri in 4!e emm-As.pr"perties in te same direct"ry t" <d" n"t 9"rget te trai!ing s!asG=?ttp$Q"our domain$-0-0openemm4+s
9ter Open, 2015 as #een !aunced y"u may request te ;S* 4!e 9"r te neA Ae#ser8ices 8ia UR*?ttp$Q"our domain$-0-0openemm4+semmser&ices.+sdl
@" #e a#!e t" access te neA Ae#ser8ices "9 Open, 2015 y"u a8e t" create a Ae#ser8ice user Ait apassA"rd 4rst:I6!ERT I6TO W+ebser&iceDuserDtblW 7WusernameW: Wpass+ordW8 JA>3E! 7+s4user: openemm8@
<>"r security reas"ns p!ease c""se a m"re s"pisticated passA"rd.=
.5 Creatin Customied 'ate *ormats
9 y"u Aant Open, tag agn@,T t" A"rk Ait cust"mied date 9"rmatsD "pen yS* and insert y"urneA date 9"rmat in ta#!e dateHt#! !ikeI6!ERT I6TO WdateDtblW 7Wt"peW: WformatW8 JA>3E! 7): ddMM""""8@Aere & is te 8a!ue 9"r tag parameter type and dd$$yyyy is te neA date 9"rmat. >"r detai!s "9a8ai!a#!e date 9"rmats see te d"cumentati"n 9"r te Fa8a c!ass ?a8a.te+t.Simp!eate>"rmat .
9 y"u Aant te imp"rt Aiard t" A"rk Ait cust"mied date 9"rmatsD "pen 4!e ate>"rmat.?a8a indirect"ry $src$?a8a$"rg$agnitas$uti!$imp"rt8a!ues "9 te s"urce tar#a!! "9 Open,D rep!ace te semic"!"n
at te end "9 !ine &1 Ait a c"mmaD insert a !ine !ikeddMM""""<<mmss7Hdd.MM."""" <<$mm$ssH: Himport.date.format.ddMM""""<<mmssH8@ 5a9terAardsD re-c"mpi!e te 4!e Ait
a&ac 'ate*ormat.a&at" a c!ass 4!e and use it t" rep!ace te "!d c!ass 4!e in y"ur Open, insta!!ati"n.n tis e+amp!e dd..yyyy )):mm:ss is te neA date 9"rmat and ddyyyy))mmss is its key. @" a8"idan err"r message in te user inter9ace add tis key in 4!e messages.pr"perties :import.date.format.MMdd"""" dd.MM."""" <<$mm$ssake sure tat y"u use "n!y 9"rmat 9ragments MyyyyND MND MddND M))ND MmmN and MssN in y"urcust"mied date 9"rmat.
., Adust Color Codes for <eatmap
@e de9au!t percentage 8a!ues 9"r te c"!"r c"des "9 te eatmap are st"red in te Open, data#ase inta#!e c!ickHstatHc"!"rsHt#! . L"u may m"di9y te 8a!ues 9"r rangeHstart <minimum percentage 8a!ue 9"r ac"!"r c"de=D rangeHend <ma+imum percentage 8a!ue 9"r a c"!"r c"de= and c"!"r <e+ c"de 9"r te c"!"rc"de=. Use tis S* c"de t" cange te precentage ranges:3'ATE clicBDstatDcolorsDtbl !ET raneDstart 0: raneDend 1 L<ERE id 1@3'ATE clicBDstatDcolorsDtbl !ET raneDstart 1: raneDend 2 L<ERE id 2@3'ATE clicBDstatDcolorsDtbl !ET raneDstart 2: raneDend # L<ERE id #@3'ATE clicBDstatDcolorsDtbl !ET raneDstart #: raneDend 5 L<ERE id )@3'ATE clicBDstatDcolorsDtbl !ET raneDstart 5: raneDend 10 L<ERE id 5@3'ATE clicBDstatDcolorsDtbl !ET raneDstart 10: raneDend 100 L<ERE id ,@and ad?ust te 8a!ues 9"r rangeHstart and rangeHend as needed. 9 y"u Aant t" cange te c"!"r 8a!ues
>"r yS* tere e+ist p!enty "9 strategies 9"r data#ase #ackups and t"ns "9 #""ks and nternet res"urces"n tat su#?ect. )"Ae8erD i9 y"u run "n!y a medium yS* data#ase Ait a 9eA Byte "9 data and i9 y"ucan !i8e Ait an interrupti"n "9 ser8ices "9 8ery 9eA minutesD y"u may simp!y use t""! mysq!dump:m"s=ldump 4aCce; 44?e4blob 44routines 44triers 4u root 4p 4r openemm.s=l openemm,+ecuted at te c"mmand !ineD tis statement c"pies a data#ase dump in a 8ery r"#ust 9"rmat int" te+t4!e "penemm.sq!. @e data#ase dump can #e imp"rted #ack int" an emtpy data#ase emm simp!y Aitm"s=l 4u root 4p openemm K openemm.s=l @" #ackup te Open, 'S data#aseD simp!y rep!ace "penemm Ait "penemmHcms .
-.2 'atabase Cleanup
Open, #"unce management st"res a!! #"unce in9"rmati"n in te data#ase. 9ter "ne "r tA" years "9"perati"nD #"unce in9"rmati"n can acc"unt 9"r /0 "r e8en 0 "9 te sie "9 y"ur data#ase. )"Ae8erD itis n"t necessary t" st"re #"unce in9"rmati"n 9"re8er. L"u can set a !imit "9 "A many days #"uncein9"rmati"n s"u!d #e st"red Ait te parameter #"unce.ma+Remain . ;e rec"mmend te 9"!!"Aingsetting <0 days=:bounces.maRemain.da"s0
L"u can a!s" set a !imit "9 "A many days su#scri#ers A" did n"t c"n4rm teir d"u#!e "pt-in mai! s"u!d#e st"red in te data#ase. <9 y"u d" n"t de!ete temD tey can n"t restart te su#scripti"n pr"cess.= ;erec"mmend te 9"!!"Aing setting <30 days=:pendin.maRemain.da"s#0
!! parameters are set in te te+t 4!e emm.properties in direct"ry $"me$"penemm$Ae#apps$"penemm$;,-6>$c!asses .
@ese tA" c!eanup ?"#s are e+ecuted #y te F"#ueue "9 Open,. @a#!e ?"#HqueueHt#! !ists a!! ?"#speri"dica!!y e+ecuted #y te F"#ueue. L"u can set te e+ecuti"n times "9 te c!eanup ?"#s 8ia teirentries in ?"#HqueueHt#! #ecause te mass de!eti"n "9 in9"rmati"n can p!ace seri"us strain "n y"urdata#ase res"urces. @e de9au!t entry 9"r te c!eanup "9 "!d #"unces and pending c"n4rmati"ns is
C3RRE6TDTIME!TAM: null: or.anitas.util.=uart.'9Cleaner%obLorBer: 08@ @is S* statements de4nes a start time "9 3:00 . 9 y"u Aant te c!eanup t" start at a diEerent timeDy"u a8e t" update 4e!d inter8a! acc"rding!y.
@" increase securityD Open, n"A #!"cks !"gins Aen te same P address generates a certain num#er"9 9ai!ed !"gins. @e de9au!t 8a!ue 9"r te ma+. num#er "9 9ai!ed !"gins is 3 and te de9au!t 8a!ue 9"r te!"ck "ut time is 300 sec"nds. L"u can cange #"t 8a!ues in te data#ase in ta#!e c"mpanyHt#! D 4e!dma+H!"ginH9ai!s and !"ginH#!"ckHtime .
!! !"gin tries are !"gged in ta#!e !"ginHtrackHt#! . Since #rute 9"rce attacks 9r"m e8i! ackers t" !"g int"Open, c"u!d ""d tis ta#!eD a!! entries "!der tan %0 days are de!eted 9r"m tis ta#!e aut"matica!!y. @is c!eanup ?"# is e+ecuted #y te F"#ueueD t"". @e de9au!t entry 9"r tis c!eanup is:I6!ERT I6TO obD=ueueDtbl
JA>3E!7>oinTracBTableCleaner: C3RRE6TDTIME!TAM: null: 0: O(: 0: 0: 0)00:C3RRE6TDTIME!TAM: null: or.anitas.util.=uart.>oinTracBTableCleaner%obLorBer: 08@ @is S* statements de4nes a start time "9 &:00 . 9 y"u Aant te c!eanup t" start at a diEerent timeDy"u a8e t" update 4e!d inter8a! acc"rding!y.
-.# Ad&anced 'atabase Cleanup
9D despite te c!eanup descri#ed a#"8eD at s"me p"int in time y"ur data#ase #ec"mes simp!y t"" #ig<and #ecause "9 itD t"" s!"AG=D y"u s"u!d de!ete "!d mai!ings and re!ated statistica! data 9r"m te
data#ase. 9 y"u de!ete a mai!ing in te BU it is "n!y set t" status Mde!etedN. ;e rec"mmend t" de!eteentries 9r"m tese 10 ta#!es:
mailinDtbl '"ntains mai!ing in9"rmati"nD tis is te #asic ta#!e Aic re9erences a!! ta#!es #e!"ADy"u can sa9e!y de!ete a!! mai!ings Ait 4e!d de!eted set t" 1
mailinDaccountDtbl ;i!e sending a mai!ingD 9"r e8ery sent #!"ck a rec"rd Ait te num#erD sie andtype "9 #!"ck is Aritten
mailinDbacBendDloDtbl '"ntains in9"rmati"n "n "A many emai!s "9 a mai!ing a8e a!ready #een generatedcomponentDtbl '"ntains c"ntent c"mp"nents <!ike images and attacments= "9 mai!ingsd"nDnameDtbl '"ntains te+t m"du!e names <c"ntent 9"r te+t m"du!es is sa8ed in ta#!e
#e de!eted <ta#!e dynHnameHt#! maps dynHnameHids t" mai!ingHids =mailtracBDtbl '"ntains a rec"rd 9"r e8ery recipient and e8ery mai!ing e$se g"tonepielloDtbl '"ntains a rec"rd 9"r e8ery recipient A" "pened a mai!rdirDloDtbl *"gs c!icks "n redirected !inks in sent mai!srdirDurlDtbl '"ntains a!! tracka#!e mai!ing !inksUn!ess "terAise n"ted use te 4e!d mai!ingHid t" identi9y te entries t" #e de!eted 9r"m eac ta#!e.
Usua!!yD c"mp"nentHt#! and mai!trackHt#! tend t" #e te #iggest ta#!es. L"u can ceck te sie "9 a!!Open, ta#!es Ait S* statement <"utput in yte=:!E>ECT tableDname: RO36'77dataDlent?indeDlent?8102)102): 28 tableDsie *ROMinformationDsc?ema.tables L<ERE tableDsc?emaopenemm OR'ER 9X tableDsie 'E!C@
9 y"u Aant t" de!ete mai!ings n"t set t" status Mde!etedN make sure t" n"t de!ete date- "r e8ent-#asedmai!ings <mai!ingHtype W 1 "r 2= Ait"ut cecking 4rst i9 tey are sti!! in use. 9 y"u d" n"t Aant t" de!etetemp!atesD make sure tat 4e!d isHtemp!ate is set t" 0. nd i9 y"u Aant t" make sure t" "n!y de!ete sentmai!ings <#ecause y"u migt sti!! A"rk "n te unsent "nes=D ceck 4e!d statusH4e!d "9 ta#!emai!ingHacc"untHt#! 9"r M;N t" identi9y t"se mai!ings. ringing it a!! t"geter in "ne S* statement:!E>ECT mailinDid *ROM mailinDtbl L<ERE creationDdate >I(E 2010Y A6' mailinDt"pe 0 A6' 7 isDtemplate 0 A6' mailinDid I6 7 !E>ECT mailinDid *ROM mailinDaccountDtbl L<ERE statusD/eld L
8 OR deleted 1 8@ut #ecause su#-se!ects in yS* are quite s!"AD #e patient Ait tis statementD it may take a 9eAminutes "r e8en !"nger. n a!ternati8e A"u!d #e t" create a temp"rary ta#!e 4rst Ait te s "9 a!!mai!ings t" #e de!eted:CREATE TA9>E tmpDmailinDdelete A! !E>ECT mailinDid *ROM mailinDtbl L<ERE creationDdate >I(E 2010Y A6' mailinDt"pe 0 A6' isDtemplate 0@'E>ETE *ROM tmpDmailinDdelete L<ERE mailinDid 6OT I6 7 !E>ECT mailinDid *ROM mailinDaccountDtbl L<ERE statusD/eld L
/0 "9 a!! app!icati"n per9"rmance pr"#!ems are rea!!y data#ase per9"rmance pr"#!ems. 9 y"u run a #igOpen, insta!!ati"n and y"u are n"t satis4ed Ait te app!icati"n(s per9"rmanceD ere are s"medata#ase tuning tips y"u s"u!d try.
9 y"ur Open, data#ase "!ds a !"ng !ist "9 recipientsD y"u may speed up certain data#ase "perati"nsAit a c"m#ined inde+ "n 9"ur 4e!ds "9 ta#!e cust"merH1H#indingHt#! :CREATE I6'EZ custbindUcuidDmlidDuserUid O6 customerD1DbindinDtbl 7customerDid:mailinlistDid: userDstatus: userDt"pe8@
9 y"u use any "ter pr"4!e 4e!d tan emai! 9"r dup!icate cecksD y"u s"u!d put an inde+ "n tis 4e!d incust"merH1Ht#! :CREATE I6'EZ custUK/eldnameUid O6 customerD1Dtbl 7K/eldname8
9 y"u A"rk Ait a #ig data#ase y"u can speed up data#ase per9"rmance 9"r tracking mai!s "penings Ait
an inde+ "n ta#!e "nepi+e!H!"gHt#! 9"r te c"m#inati"n "9 mai!ingHid and cust"merHid :CREATE I6'EZ onpUmidDcuidUid O6 onepielDloDtbl 7mailinDid: customerDid8@n tis case Ae a!s" rec"mmend an inde+ "n ta#!e rdirH!"gHt#! 9"r te c"m#inati"n "9 mai!ingHid Dcust"merHid and ur!Hid t" speed up pr"cessing "9 !ink c!icks:CREATE I6'EZ rloUmidDcuidDurlidUid O6 rdirDloDtbl 7mailinDid: customerDid: urlDid8@
;i!e yS*(s de9au!t data#ase engine yS A"rks 4ne Ait te de9au!t c"n4gurati"nD Ae suggesttese settings in secti"n mysq!dT "9 yS*(s c"n4gurati"n 4!e <usua!!y my.cn9 in direct"ry $etc = 9"r anOpen, stand-a!"ne data#ase:Be"DbuSerDsie,)MmaDconnections50maD?eapDtableDsie#2M
=uer"Dcac?eDsie#2MreadDbuSerDsie512( tableDcac?e12- @" ceck i9 te settings 4t y"ur needsD y"u c"u!d use te tuning-primer script a8ai!a#!e atttp:$$AAA.day32.c"m$yS*.
ue t" a #ug in Open, X %.0D s"me temp"rary ta#!es Aere n"t a!Aays de!eted. L"u can identi9y teseta#!es #y te pre4+ Q@PH'R@HQ and sa9e!y dr"p tem 9r"m y"ur data#ase Ait'RO TA9>E TMDCRTD...DT9>@
Since 8ersi"n 5.5 nn" is te de9au!t engine "9 yS*. ;i!e nn" supp"rts r"A !"cking and rea!transacti"ns 9"r #etter cras pr"tecti"n <"pp"sed t" yS=D te interna! data structure is m"re c"mp!e+tan yS(sD Aic !eads t" signi4cant!y !arger ta#!e siesD s!"Aer AritesD s!"Aer 9u!! ta#!e scans and
s!"Aer and!ing "9 *Os and '*Os. !s"D #ackup and rec"8ery 8ia mysq!dump$mysq! is muc s!"Aer.
@e c"ice #etAeen yS and nn" depends "n te sie and usage pr"4!e "9 y"ur Open,data#ase and tere is n" panacea 9"r te decisi"n "9 Aic engine t" se!ect. Since c"n8erting a ta#!e9r"m yS t" nn" is easyD y"u c"u!d simp!y gi8e it a try <a9ter a #ackup=. @e #est ta#!e candidatesare cust"merH1H#indingHt#! D cust"merH1Ht#! D mai!trackHt#! and "nepi+e!H!"gHt#! . L"u c"u!d c"n8ert ta#!ecust"merH1H#indingHt#! t" nn" AitA>TER TA9>E customerD1DbindinDtbl t"pe Inno'9@ut p!ease #e aAare tat tis c"n8ersi"n Ai!! #e d"ne !ine #y !ine and tat it needs s"me time. S"D eiterd" it at nigt "r ceck te time demand 4rst Ait a c"py "9 y"ur pr"ducti"n data#ase.
ecause nn" is muc m"re sensiti8e t" c"n4gurati"n parameters tan ySD y"u s"u!d at !eastadd pr"perties inn"d#H#uEerHp""!Hsie and inn"d#H!"gH4!eHsie in secti"n mysq!dTD #ecause te de9au!t8a!ues "9 12/ yte and 5 yte are muc t"" sma!! 9"r #igger data#ases Ait !"ts "9 nn" ta#!es. sa ru!e "9 tum#: 9 y"ur A"!e Open, data#ase Aas c"n8erted t" nn" and runs "n a dedicatedser8erD inn"d#H#uEerHp""!Hsie s"u!d #e set t" 75 "9 te R "9 y"ur ser8er and inn"d#H!"gH4!eHsie s"u!d #e set t" Y "9 te sie "9 inn"d#H#uEerHp""!Hsie D #ut n"t iger tan 25% yte t" !imit rec"8erytime a9ter a data#ase cras.
9 Open, runs "n a *inu+ "perating system y"u s"u!d add pr"pertyinnodbD[us?Dmet?odOD'IRECTand t" pre8ent te nn" engine 9r"m sa8ing a!! ta#!e data int" system ta#!espace 4!e i#data1 indirect"ry $8ar$!i#$mysq! y"u may add pr"pertyinnodbD/leDperDtable1in secti"n mysq!dT "9 yS*(s c"n4gurati"n 4!e my.cn9 <usua!!y t" #e 9"und in direct"ry $etc =.
)"Ae8erD i9 y"u d" n"t Aant t" <"r can n"t= use Sendmai!D y"u can disa#!e its use a9ter insta!!ati"n "9Open,. n tis case Open, uses an interna! S@P ser8er <!ike te ;ind"As 8ersi"n "9 Open,=. 9y"u use te interna! S@P ser8er "9 Open,D p!ease make sure tat n" "ter @ <!ike P"st4+D qmai! "r,+im= is acti8e "n y"ur macine. Open, d"es n"t A"rk Ait "ter @s tan Sendmai! "r its interna!S@P ser8erG
@e use "9 Sendmai! is ena#!ed #y de9au!t. epending "n y"ur c"ice Aeter t" use Sendmai! "r n"tDy"u ena#!e Sendmai! Ait?omeopenemmbinsendmail4enable.s?and y"u disa#!e it Ait?omeopenemmbinsendmail4disable.s? @is as t" #e d"ne as user "penemm #e9"re starting Open, "r a9ter st"pping Open, <see secti"n%.&=.n "rder t" ceck Aeter Open, is c"n4gured t" use Sendmai! "r n"tD run?omeopenemmbinscriptssmenable.p" status return 8a!ue "9 1 indicatesD tat Sendmai! is ena#!edD 0 indicates te use "9 te interna! S@P ser8er.
9 y"u p!an t" use Sendmai! y"u d" n"t a8e t" start <"r st"p= itD since tis is a!ready d"ne #y te startscript "9 Open,. ;en n"t using Sendmai! y"u can de4ne a smart mai!er. @" d" tis create a 4!enamed smart-re!ay in direct"ry $"me$"penemm$c"n9 Ait te synta+Qusername$Qpass+ordVQsmart4rela"4domainname @e use "9 a smart-re!ay may #e e!p9u! 9"r dia!-up users t" send "ut mai!s 8ia teir SP. @e name "9 tesmart-re!ay is pr"8ided #y y"ur SP. n case y"ur SP(s smart-re!ay d"es n"t supp"rt @*SD y"u a8e t"rem"8e te tA" c"de !inessmtp.starttls 78smtp.e?lo 78in 4!e semu.py in direct"ry $"me$"penemm$#in$scripts .
epending "n te c"n4gurati"n "9 te smart-re!ay y"u are usingD syncr"n"us #"unces are eiter passedtr"ug direct!y #ack t" te sender <Open,= "r tese instant #"unces are sent #ack t" te sender 8iaemai! and a8e t" #e pr"cessed #y te #"unce management 9"r asyncr"n"us #"unces <see secti"n 11.29"r detai!s=.
.2 !endmail erformance Tunin
9 y"u a8e c"n4gured Open, t" use Sendmai!D it A"rks Ait se8era! mai! queues in para!!e! t"ma+imie te mai! "utput. ueue 6 takes care "9 a!! admin and test mai!ingsD Aic a8e t" #ede!i8ered 8ery quick!y. @e queue named U,U, is te entry p"int 9"r a!! Mrea!N mai!ingsD queueU,U, "!ds mai!s Aic c"u!d n"t #e de!i8ered quick!y andD tere9"reD Aere si9ted t" itD and queueS*O;U,U, "!ds a!! mai!s tat e8en U,U, c"u!d n"t de!i8er.
@e c"n4gurati"n "9 tese mai! queues is d"ne in script mai!er.s in direct"ry $"me$"penemm$#in . ;et""k great care t" c""se te #est 8a!ues p"ssi#!e 9"r Open, and Ae rec"mmend t" cange tede9au!t 8a!ues "n!y i9 y"u run int" a rea! de!i8ery pr"#!em.9 y"u Aant t" tAeak te mai! queue de9au!t 8a!uesD searc 9"r tis !ine:
n te !""p tat 9"!!"AsD te 9"ur mai! queues used #y Open, are created and c"n4gured: Parameter -q de4nes "A "9ten a certain queue is pr"cessed. @" acie8e a ig de!i8ery rateD
Open, pr"cesses queues 6 and U,U, in 1 minute cyc!esD #ut tis a!s" c!"gs te mai!!"g4!e. L"u may cange cyc!e time 9"r U,U, t" 5 "r 10 minutes. n tis case y"u a8e t" rep!aceparameter -q1m in te parameter !ine Ait -q5m "r -q10m . U,U, is pr"cessed e8ery 30minutes and S*O;U,U, e8ery 0 minutes #y de9au!t. ;e d" n"t rec"mmend t" cange tese8a!ues.
Parameters -O@ime"ut.ic"nnect and -O@ime"ut.c"nnect de4ne te time Sendmai! Aaits 9"r te
recei8ing mai! ser8ers t" resp"nd. @e 4rst parameter is used 9"r te initia! try t" send "ut anemai! and te sec"nd parameter is used 9"r a!! !ater tries. s"rt time"ut Ai!! a!!"A Sendmai! t"c!"se unused c"nnecti"ns ear!ier s" tat it as m"re capacity 9"r neA c"nnecti"ns t" m"reresp"nsi8e mai! ser8ers. )"Ae8erD i9 a !"t "9 mai! ser8ers are #usyD te num#er "9 9ai!ed mai!de!i8eries Ai!! rise.Since n" time"ut 8a!ues are de4ned 9"r U,U, and S*O;U,U,D Sendmai! uses te de9au!t8a!ues <usua!!y quite ig 8a!ues "9 3 "r 5 minutes=.
Parameter c"unt de4nes "A many pr"cesses are created t" pr"cess te c"rresp"nding mai!queue.
9eA !ines 9urter d"An in script mai!er.s D te queue c"ntr"! pr"gramm qctr! is ca!!ed tree times t"de4ne te c"nditi"ns 9"r m"8ing mai!s 9r"m U,U, t" U,U,D 9r"m U,U, t" S*O;U,U, and
9r"m S*O;U,U, t" 6irAana <aka $de8$nu!! =: Parameter -d de4nes te de!ay in sec"nds a9ter tat a queue is scanned again 9"r mai!s t" #e
m"8ed t" a s!"Aer queue <"r t" $de8$nu!! =. y de9au!tD U,U, is scanned e8ery 13 minutesDU,U, is scanned e8ery 5& minutes and S*O;U,U, is scanned a#"ut e8ery % "urs.
Parameter tries de4nes te num#er "9 de!i8ery tries Aic triggers te m"8e "9 a mai! t" a s!"Aerqueue "r te rem"8a! 9r"m te queue system a!t"geter. y de9au!tD a mai! is m"8ed 9r"m U,U,t" U,U, a9ter at !east 3 9ai!ed de!i8ery tries and 9r"m U,U, t" S*O;U,U, a9ter a t"ta!"9 at !east 10 9ai!ed de!i8ery tries.
Parameter ma+age de4nes te time a9ter Aic a mai! is dr"pped 9r"m S*O;U,U,. y de9au!tDS*O;U,U, is c!eaned 9r"m a!! mai!s "!der tan % days. L"u may s"rten tis peri"d t" keep teS*O;U,U, s"rt. )"Ae8erD te !"Aer y"u g" Ait te 8a!ue 9"r ma+age D te iger Ai!! #e tenum#er "9 unde!i8ered s"9t#"unces. S"D y"u are trading in per9"rmance 9"r de!i8era#i!ity ere.
>"r security reas"nsD make a #ackup "9 te Open, data#ase and te Open, 'S data#ase 4rst<"mit "pti"n p in case y"ur yS* system is n"t passA"rd pr"tected=:m"s=ldump 4aCce; 44?e4blob u root 4p 4r ?omeopenemm.s=l openemmm"s=ldump 4aCce; 44?e4blob u root 4p 4r ?omeopenemmDcms.s=l openemmDcms
;eter y"u d" an aut"matic "r manua! upgradeD since y"u made canges t" te de9au!t c"ntent "9 4!eemm.pr"perties and cms.pr"perties make sure t" c"py t"se canges t" te neA 4!e 8ersi"ns a9ter teupgrade. ;i!e te "n!ine update "9 Open, tries t" c"py y"ur canges int" te neA 4!es itse!9 Aerec"mmend cecking tem a9terAards in "rder t" #e sure te 8a!ues a8e #een c"pied c"rrect!y.
10.1 Automatic 3prade
9 y"u use Open, 5.&.0 R'1 "r !ater y"u can use te "n!ine update 9eature in te settings menu "9 teuser inter9ace t" upgrade Open, Ait a sing!e c!ick. 9D a9ter y"u agreed t" te updateD y"ur #r"Aserc!aims tat it can n"t access te ne+t pageD p!ease Aait a 9eA sec"nds 9"r te update pr"cess t" !auncand try again.
9 te se!ected d"An!"ad ser8er causes a pr"#!em and te d"An!"ad "9 te neA re!ease angsD y"u mustki!! te upgrade pr"cess at te c"mmand !ine. >irstD 4nd te P "9 te pr"cess Ait
ps 4u openemm 4f++ \ rep uprade @is statement s"u!d de!i8er a !ist Ait at !east "ne pr"cess initiated #y pyt"n $"me$"penemm$#in$scripts$upgrade.py . Ji!! tis pr"cess s"9t!y AitBill QpidRep!ace Zpid[ Ait te P "9 te upgrade pr"cess. 9 te pr"cess is sti!! a!i8e a9terAardsD y"u a8e t"ard ki!! it AitBill 4 Qpid
9ter tat y"u can restart Open,D !"g in and try t" start te upgrade again. 9 y"u Aant t" g" #ack t"te 9"rmer 8ersi"n "9 Open, cange direct"ry Aitcd ?omeand ceck 9"r a direct"ry named "penemm-+.y <Ait +.y #eing te re!ease num#er=. e!ete te currentdirect"ry "penemm Ait
rm 4rf openemmand rename te "!d direct"ry #ack t" "penemm Aitm& openemm4." openemm;en y"u start Open, n"AD te "!d 8ersi"n +.y "9 Open, is started. ;i!e canges t" te data#aseare n"t r"!!ed #ack Ait tis appr"ac tis s"u!d n"t cause any pr"#!ems #ecause te data#ase cangesare "n!y imp"rtant 9"r neA 9eatures <Aic are missing in te 9"rmer 8ersi"n=.)"Ae8erD i9 y"u Aant t" start te aut"matic update again y"u a8e t" reset y"ur data#ases t" te state#e9"re y"u started te upgrade <Aen y"u made y"ur #ackup=:m"s=ladmin 4u root 4p drop openemmm"s=ladmin 4u root 4p drop openemmDcmsm"s=ladmin 4u root 4p create openemmm"s=ladmin 4u root 4p create openemmDcmsm"s=l 4u root 4p openemm K openemm.s=lm"s=l 4u root 4p openemmDcms K openemmDcms.s=l
9 y"u a8e created a 4!e #a8.c"n9-!"ca! <see secti"n 12.2 #e!"A=D d" n"t 9"rget t" re-create it a9ter e8eryupdate "9 Open, "terAise it Ai!! #e missing and te management "9 asyncr"n"us #"unces Ai!! n"tA"rk c"rrect!yG
10.2 Manual 3prade and 'e4Installation
9 y"u Aant t" upgrade t" a neA 8ersi"n "9 Open, #ut y"u d" n"t Aant t" use te "n!ine update9eature "9 Open,D y"u a8e t" uninsta!! te current 8ersi"n 4rst. @is is d"ne #y a 9eA simp!e steps:'ange t" user "penemm:
su openemmSt"p Open,:openemm.s? stop,+it "penemm user and cange #ack t" r""t:eit
@e Sendmai! emu!ati"n "9 Open, <semu.py = uses a p!ugin 9rameA"rk <aps.py = t" imp!ement a p!uginmanager and t" pr"8ide e+tensi"n p"ints <rigt n"A met"d and!eOutg"ingai! =. @ese e+tensi"np"ints can #e imp!emented #y p!ugins in "rder t" e+tend te 9uncti"na!ity "9 te Sendmai! emu!ati"n.Readme 4!e aps.readme in direct"ry $src$script$!i# "9 te s"urce tar#a!! "9 Open, pr"8idesd"cumentati"n 9"r te p!ugin 9rameA"rk !ike "A t" imp!ement it and "A t" Arite y"ur "An e+tensi"ns.
s an e+amp!eD Pyt"n script !istUnsu#scri#e)eader.py dem"nstrates "A t" imp!ement e+tensi"n p"intand!eOutg"ingai! Ait y"ur "An c"de. @e c"de "9 tis script adds a !ine Ait a g!"#a! !ist unsu#scri#e!ink t" te eader "9 a!! "utg"ing mai!s <met"d main is "n!y imp!emented t" pr"8ide a test case=.'"n4gurati"n 4!e semu.c9g de4nes te #asic UR* used 9"r te unsu#scri#e !ink and may #e m"di4ed t"p"int t" an Open, 9"rm. "t 4!es are !"cated in direct"ry $"me$"penemm$c"n9$semu .
11.2 Etendin t?e OpenEMM G3I +it? luins
Open, c"mes Ait an e+tensi"n arcitecture Aic a!!"As de8e!"pers t" enance te 9uncti"na!ity "9Open, Ait p!ugins. @e p!ugin manager "9 Open, !et users insta!! and acti8ate p!ugins Ait asing!e c!ick. @ese p!ugins 4t seam!ess!y int" te BU "9 Open,. 9 y"u Aant t" kn"A m"re a#"ut te
e+tensi"n arcitecture "9 Open,D d"An!"ad te "Icia! Open, e+tensi"n arcitectured"cumentati"n at ttps:$$s"urce9"rge.net$pr"?ects$"penemm$4!es$Open,20de8e!"pment$ .
9 y"u need #ackgr"und in9"rmati"n "n terms !ike >6D "stnamesD d"mains and 6S entriesD p!easesee appendi+ .
12.1 Re&erse '6!
ake sure tat a Re8erse 6S entry e+ists 9"r te P address "9 y"ur Open, ser8er and tat it matceste >6 "9 tis ser8er. @is is imp"rtantD #ecause m"st @s tat recei8e mai!s 9r"m y"ur Open,insta!!ati"n Ai!! d" a Re8erse 6S !""kup in "rder t" ceck i9 te >6 "9 y"ur ser8er and te re8erse 6Sentry "9 y"ur ser8er(s P address matc. 9 n"tD tis is an indicati"n "9 a spam#"t netA"rk and as a resu!tquite "9ten y"ur emai!s Ai!! #e re?ected.
12.2 Redirect !er&ice
asica!!yD Open, runs "ut "9 te #"+. t ?ust requires a simp!e >6D Aic as t" #e mapped 8ia a6S entry t" an a8ai!a#!e <4+ed= P address pr"8ided #y y"ur SP. L"u can use tat >6 9"r teredirecti"n ser8ice pr"8ided #y Open,. ,+amp!e: L"ur macine(s "stname is AAA and y"ur d"main is"penemm."rg . n tat case simp!y add tat >6D as descri#ed in secti"n %.2 . t A"u!d !""k !ikettp:$$AAA."penemm."rg:/0/0 D since te redirecti"n ser8ice "9 Open, usua!!y uses p"rt /0/0. 9 y"u
use p"rt /0/0D d" n"t 9"rget t" inc!ude it in e+terna! !inks p"inting t" Open, <!ike su#scri#e !inks in9"rms "n y"ur Ae#site=. )int: L"u can map tat p"rt t" any "ter p"rt - see appendi+ ' 9"r 9urter detai!s.
12.# 9ounce Manaement
"unce management pr"8ides y"u Ait te capa#i!ity t" keep y"ur mai!ing !ists c!ean and up-t"-dateaut"matica!!y. #"unce message is an err"r messageD Aic is sent 9r"m a mai!ser8er "n te recipient(sside t" te sender i9 an emai! is n"t de!i8era#!e. "unce management administers emai!s Aic areunde!i8era#!e temp"rari!y <s"9t #"unce= "r permanent!y <ard #"unce=. t a!s" 4!ters err"r messages andaut"resp"nder mai!s.
9 y"u Aant Open, t" pr"cess #"unces recei8ed during te send pr"cess <syncr"n"us #"unces= n"
9 y"u Aant t" use te #"unce management 9"r asyncr"n"us #"unces y"u need t" de4ne a dedicatedsender "stname 9"r Open, Aic is diEerent 9r"m te ser8er "stname <te e+isting "st name "9y"ur ser8erD see 4!e "sts in direct"ry $etc = and y"u a8e t" set up an rec"rd and a \ <ai! ,+canger=rec"rd in y"ur "main 6ame Ser8er <6S= 9"r te sender "stname. @e \ rec"rd is used t" r"ute mai!9"r a d"main t" "ne "r m"re P addresses. Open, needs te neA <8irtua!= "st as a destinati"nD t"9"rAard a!! inc"ming resp"nse t"D 9"r 9urter pr"cessing #y Open,(s #"unce management.
n "ur e+amp!e te ser8er "stname is "st and te sender "stname 9"r Open, Ai!! #e neAs . @e<a##re8iated= 6S entry !""ks !ike tis:
@e 4rst !ine assigns te P address 9"r "penemm."rg and te sec"nd !ine de4nes te regu!ar "stname. @e tird and 9"urt !ine de4ne te rec"rd and \ rec"rd 9"r sender "stname neAs D meaning tat "st
"st accepts emai!s sent t" "st neAs .
Va!idate y"ur setup is c"rrect #y using a t""! !ike "st "r dig D 9"r e+amp!e:?ost a openemm.or?ost a ?ost.openemm.or
;en y"u send emai!s and Aant t" take ad8antage "9 te #"unce management 9"r asyncr"n"us#"uncesD tere are tA" p"ssi#i!ities 9"r te 9"rmat "9 te sender address:
A.8 Use Aate8er sender address y"u !ike. mp!ement a 9"rAard mecanism in te emai! acc"unt "9 tissender address t" 9"rAard inc"ming mai! sent #ack t" te sender address t" a 4!ter address "9 Open,.n "rder t" create tis 4!ter addressD set up a #"unce 4!ter in Open, <see user manua!=. @is 4!ter Ai!!aut"-generate a 4!ter address !ike e+tH1]neAs."penemm."rg . 9ter pr"cessing te inc"ming mai!D te#"unce 4!ter Ai!! 9"rAard te 4!tered resp"nse t" a 9eed#ack emai! address "9 y"ur c"ice <diEerent 9r"m
te sender addressD "9 c"urse=. @e "A 9"r resp"nses t" y"ur mai!ings A"rks !ike tis:recipient ] sender address ] /lter address of bounce /lter 7auto4enerated b" OpenEMM8 4feedbacB address @e ad8antage "9 tis m"de! is tat y"u can c""se any sender address y"u AantD #ut y"u a8e t"imp!ement an e+terna! 9"rAard mecanism.
9.8 Use a sender address Ait te sender "stname <in "ur e+amp!e neAs]neAs."penemm."rg = Since n"rea! emai! addresses e+ist 9"r tis sender "stnameD n"rma!!y it A"u!d n"t #e p"ssi#!e t" rep!y t" an emai!Ait tis sender address. @" 9"rAard resp"nses t" a 8a!id emai! address y"u a8e t" de4ne a #"unce 4!ter.n te c"n4gurati"n 9"r te #"unce 4!ter set 4e!d ddress t" a 9eed#ack address "9 y"ur c"ice. @e9"rAard address generated #y te #"unce 4!ter <in "ur e+amp!e e+tH1]neAs."penemm."rg = as t" #e
de4ned as an a!ias in direct"ry $"me$"penemm$c"n9$#a8 in a neA 4!e named #a8.c"n9-!"ca! . Oure+amp!e:
9 y"u create te 4!e #a8.c"n9-!"ca! d" n"t 9"rget t" re-create it a9ter e8ery update "9 Open, "terAise it Ai!! #e missing and te management "9 asyncr"n"us #"unces Ai!! n"t A"rk c"rrect!yG
12.) !oftbounce !corin
9 an emai! address generates !"ts "9 s"9t#"unces <temp"rary de!i8ery pr"#!ems= tis is actua!!y anindicati"n tat te emai! address is unde!i8era#!e permanent!y <ard#"unce=. Open, pr"8idess"9t#"unce sc"ring t" identi9y t"se emai! addresses and t" c"n8ert tem t" ard#"unces. @" ena#!e tisc"n8ersi"n y"u s"u!d run te script s"9t#"unce.s dai!y as user "penemm . @e #est Aay t" acc"mp!istis is t" create a cr"n ?"# Aitsu 4 openemmcrontab 4ei <t" enter edit m"de=0 # F F F ?omeopenemmbinsoftbounce.s?EscN$ @is cr"nta# entry A"u!d start s"9t#"unce.s at 3:00 am. s"9t#"unce.s ana!yses te #"unces and Aritesa!! s"9t#"unces t" a specia! s"9t#"unce ta#!e. 9 te #"unce generating emai! address a!ready e+istsD its#"unce c"unt is incremented.
@e ru!es 9"r c"n8erting a s"9t#"unce t" a ard#"unce A"rk !ike tis:1. Se!ect a!! emai! addresses in te s"9t#"unce ta#!e Aic generated m"re tan 7 s"9t#"unces and
Aere te time-!ag #etAeen te 4rst and !ast #"unce is !"nger tan 30 days.2. 9 n" mai! "pening "r !ink c!ick Aas registered Aitin te !ast 30 days 9"r an emai! address Aic
matcs te #e9"re-menti"ned c"nditi"nsD tis address is agged as a ard#"unce.3. 9 at !east "ne "pe ning "r c!ick Aas registered Aitin te !ast 30 daysD tis address is rem"8ed 9r"m
te s"9t#"unce ta#!eD i.e. its #"unce c"unt is reset t" er".
S"me ad8anced users "9 Open, a8e n"ticed tat Open, d"es n"t treat a!! ard#"unce messagesrep"rted #y rem"te mai! ser8ers as ard#"unce. n 9actD #"unce messages Ait c"de 500D 550 "r 55& aretreated as s"9t#"uncesD a!t"ug #"unce c"des starting Ait 5 A"u!d indicate a ard#"unce.
@e reas"n 9"r tis kind "9 ign"rant #ea8i"ur ist intenti"na!D #ecause s"me mai! ser8ers are n"t pr"per!yc"n4gured regarding te generati"n "9 ard#"unce messages and mistaken!y rep"rt permanent de!i8eryerr"rs - s"me e8en #y intenti"n t" pretend tat certain emai! addresses d" n"t e+ist. 9 Open, A"u!dand!e t"se 9ake ard#"unce messages as rea! ard#"unces emai! addresses "9 e+isting recipientsA"u!d #e disa#!ed. s resu!tD Ae "n!y try t" accept #"unces as ard#"unces Aic are rea!!y pr"8ed t" #eard#"unces. @ese are c"des 511 <Muser unk"AnN=D 512 <Md"main unkn"AnN= and a!! "ter ard#"unces
Aere n" e+c!uding ru!e is de4ned.
>i!e #a8.ru!e D secti"n ardT in direct"ry $"me$"penemm$c"n9$#a8 !ists #"unce te+t messages Aic arerec"gnied as ard#"unces #y Open,(s #"unce management. L"u may add y"ur "An set "9 messagesere. "unce messages Ait c"de 500D 550 "r 55& Ai!! sti!! #e treated as s"9t#"uncesD ne8erte!ess.
9D 9"r e+amp!eD y"u Aant t" use #a8.ru!e t" catc a!! #"unces Ait te+t messages c"ntaining #"uncec"des 9r"m 550 t" 55 inc!uding S6 <de!i8ery status n"ti4cati"n= 5.1.1 "r 5.1.2D add tis ru!e in secti"nardT "9 #a8.ru!e :
Remote ser&er replied$ 5504N 5^.1^.12N
y te AayD i9 a ard#"unce message is rec"gnied as a s"9t#"unce e8en i9 it is a rea! ard#"unceD tis isn"t a pr"#!em. ecause a rea! ard#"unce is rep"rted 9"r eac mai!ing again and is c"unted as as"9t#"unce eac timeD it Ai!! #e 4na!!y caugt #y te s"9t#"unce sc"ring "9 Open, <see pre8i"ussecti"n= and c"n8erted t" a ard#"unce in te end.
9 y"u Aant t" use Open, #"unce management n"t "n!y 9"r syncr"n"us #"uncesD #ut a!s" 9"rasyncr"n"us #"uncesD s"me Sendmai! c"n4gurati"n is required Aen entering te 9"!!"Aing !inesDp!ease make sure tat eac time te initia! ap"str"pe is a #ack tick <^=D "terAise te & prepr"cess"rAi!! 9ai! t" interpret te input c"rrect!yG
y te AayD make sure tat S,*inu+ is disa#!edD s" tat Sendmai! is a#!e t" in8"ke Open,(s mai! 4!ter<mi!ter=. Open 4!e c"n4g in direct"ry $etc$se!inu+$ and cange pr"perty S,*6U\ t"!E>I63Zdisabled
1#.1 Red<at >inu and 3buntu$
Open 4!e sendmai!.mc in direct"ry $etc$mai! and cange te !ine- Red)at: 'AEMO6DOTIO6!7Wortsmtp:Addr12.0.0.1: 6ameMTA8dnl- U#untu: 'AEMO6DOTIO6!7W*amil"inet: 6ameMTA4&): ortsmtp: Addr12.0.0.18dnlt"- Red)at: dnl 'AEMO6DOTIO6!7Wortsmtp:Addr12.0.0.1: 6ameMTA8dnl- U#untu: dnl 'AEMO6DOTIO6!7W*amil"inet: 6ameMTA4&): ortsmtp: Addr12.0.0.18dnl
te !"ca! inter9ace !"0 9"r c"nnecti"ns and Mdn!N c"mments "ut tis directi8e.
dd te 9"!!"Aing !ine at te end "9 te 4!e:I63TDMAI>D*I>TER7Wba&: W!uni$?omeopenemm&arrunba&.socB: *T8dnl @is Ai!! ena#!e te dynamic mai! !""p required #y te #"unce management t" pr"cess asyncr"n"us#"unces.
>"r U#untu enter te 9"!!"Aing !ine in 4!e sendmai!.mc a9ter te !ine starting Ait>,@UR,<^n"Hde9au!tHmsa *EAT3RE7Wmailertable: W?as? 4o etcmailmailertable.db8dnlt" acti8ate te mai!erta#!e 9eature and create te required data#ase mai!erta#!e.d# .
9 4!e re!ay-d"mains d"es n"t e+ist in direct"ry $etc$mai! D create te 4!e - 9"r e+amp!e Ait
touc? rela"4domainsand add a !ine at te end "9 te 4!e Aic speci4es y"ur 6S entry 9"r te sender "stname <>6=. n"ur e+amp!e it is simp!y:ne+s.openemm.or @is Ai!! make sure tat resp"nses t" an emai! address Ait d"main neAs."penemm."rg are accepted #ySendmai! 9"r re!aying.
Open 4!e mai!erta#!e in te same direct"ry "r create it i9 it d"es n"t e+ist Aittouc? mailertableand add a !ine at te end Aic acti8ates te interna! 9"rAarding 9"r te sender "stname t" pr"cmai! 9"r4!tering:ne+s.openemm.or procmail$?omeopenemmconfba&ba&.rc
@" acti8ate a!! canges t" te Sendmai! c"n4gurati"nD make sure t" a8e package sendmai!-c9 insta!!edand run te 9"!!"Aing c"mmands:maBe 4C etcmailetcinit.dsendmail reload L"u may ign"re te Aarning tat $"me$"penemm$8ar$run$#a8.s"ck is missingD since tis 4!e Ai!! #epr"8ided during insta!!ati"n "9 Open,
1#.2 !u!E >inu
;R66B: ,diting te 4!es menti"ned #e!"A #reaks te LaS@ c"n4gurati"n capa#i!ities 9"r Sendmai!.)"Ae8erD y"u can !ater reacti8ate LaS@ 8ia
MAI>DCREATEDCO6*IGH"esHin 4!e $etc$sysc"n4g$mai! and LaS@ Ai!! n"t "8erArite y"ur Sendmai! c"n4gurati"n #ut sa8e te neA 4!e assendmai!.c9.Zname[ s" tat y"u can c"mpare te settings <Ait diE=. 9 tere are t"" many canges t"c"py tem manua!!y int" te e+isting sendmai!.c9 D rename te neA 4!e t" sendmai!.c9 and runsbin!u!Econ/
Open 4!e $etc$sysc"n4g$mai! and cange te !ineMAI>DCREATEDCO6*IGH"esHt"MAI>DCREATEDCO6*IGHnoH @is !ine e+c!udes Last 9r"m Sendmai! c"n4gurati"n and a!!"As y"u t" cange te c"n4gurati"n manua!!y#y y"urse!9.
'eck te 4!e 9"r !ineMAI>ER7procmail8dnland add it at te end i9 is n"t tere and add te 9"!!"Aing !ine at te end:I63TDMAI>D*I>TER7Wba&:W!uni$?omeopenemm&arrunba&.socB:*T8dnl
9 4!e $etc$mai!$re!ay-d"mains d"es n"t e+istD create te 4!e - 9"r e+amp!e Aittouc? rela"4domainsand add a !ine at te end "9 te 4!e Aic speci4es y"ur 6S entry 9"r te sender "stname <>6=. n
"ur e+amp!e it is simp!y:ne+s.openemm.or
Open 4!e $etc$mai!$mai!erta#!e and add a !ine at te end Aic acti8ates #"unce management 9"r tat>6:ne+s.openemm.or procmail$?omeopenemmconfba&ba&.rc
@" acti8ate a!! canges t" te Sendmai! c"n4gurati"nD run te 9"!!"Aing c"mmands:cd etcmailm) linu.mc etcsendmail.cf m) linu.submit.mc submit.mcmaBeetcinit.dsendmail reload
L"u may ign"re te Aarning tat $"me$"penemm$8ar$run$#a8.s"ck is missingD since tis 4!e Ai!! #epr"8ided during insta!!ati"n "9 Open,.
POR@6@: 9 y"u use pprm"r Ait SuS,D it requires te 9"!!"Aing entries 9"r te 4!e $etc$apparm"r.d$usr.s#in.sendmai! :?omeopenemm&arspoolA'MI6 r+l:?omeopenemm&arspoolA'MI6F r+l:?omeopenemm&arspool;3E3E r+l:?omeopenemm&arspool;3E3EF r+l:
OterAiseD Sendmai! Ai!! n"t #e a#!e t" c"mmunicate Ait Open,.
>ina!!yD restart te pprm"r Ser8ice Aitetcinit.dboot.apparmor reload
1) Appendi 9$ '6! Entries: *;'6: <ostnames and 'omains
1).1 L?at is a '6! entr" and +?at is its purpose_
6S entry maps te P address "9 a ser8er t" a uman reada#!e address. ,+amp!e: n p!ace "9 te Paddress /3.220.15&./5D Aic p"ints t" te Open, Ae#ser8erD y"u can use te 6S addressAAA."penemm."rgD Aic is muc m"re c"n8enient.
1).2 L?at is a <ostname: a 'omain and a *;'6
>u!!y ua!i4ed "main 6ame <>6= !inks t" an P address "9 a ser8er. @e >6 may #e c"mp"sed "9!etters and num#ers and #y using tis "pti"n n"#"dy as t" remem#er te diIcu!t num#er sequence <P=. >6 is di8ided in tree !e8e!s:- @e aI+ "9 te d"main is te @"p *e8e! "main <@*=. ,+amp!e: c"m D "rg "r net - @e d"main name Ai!! #e inserted in 9r"nt "9 te @*. ,+amp!e: "penemm "r agnitas - @e >6 starts Ait te "stname. >"r Ae#pages tis is 8ery "9ten AAA
,+amp!e: @e >6 AAA.y"urd"main.c"m is c"mp"sed "9 - AAA W "stname- y"urd"main W d"main name- c"m W @*
s y"u can seeD te >6 c"nsists "9 te "stnameD te d"main name and te t"p !e8e! d"mainseparated #y d"ts. @e c"m#inati"n "9 d"main name and @* is c"mm"n!y re9erred as d"main. @e >6can #e e+panded #y a su#d"main <!ike miami =. @e su#d"main Ai!! #e inserted #etAeen te "stnameand te d"main. ,+amp!e: AAA.miami.y"urd"main.c"m
1).# <o+ do I et a 'omain and a *;'6_
@ere a !"t "9 pr"8iders Aere y"u may "st a d"main. L"u Ai!! "n!y "st te c"m#inati"n "9 te @* andte d"main name. ,+amp!e: y"urd"main.c"m . L"u may !ink a d"main name t" diEerent targets #y usingdiEerent "stnames. @e d"main name Ai!! #e registered Ait a "main 6ame Ser8er <6S=. @is ser8er9"rAards a!! requests t" te particu!ar P address. 9ter y"ur d"main name as #een registeredD y"u may
set up te >6 in te pr"8ider(s Ae# inter9ace. @e pr"8ider a!!"As y"u t" de4ne se8era! "stnames t"create diEerent >6sD Aic Ai!! 9"rAard t" diEerent ser8ers <"r - Ait te e!p "9 y"ur 4reAa!! - t"diEerent p"rts "9 te same ser8er=. L"u may set up diEerent addresses !ike- Ae# ser8er: AAA.y"urd"main.c"m - mai! ser8er: mai!.y"urd"main.c"m - >@P ser8er: 9tp.y"urd"main.c"m
15 Appendi C$ OpenEMM as Redirection !er&er on ort -0
L"u can use y"ur ser8er as a redirect ser8er t" track mai! "pening rates and !ink c!icks. @is is e!p9u! t"determine te success "9 an emai! marketing campaign. y de9au!tD Open, ena#!es tat ser8ice "np"rt /0/0. 9 y"u Aant t" use a UR* Ait"ut an e+p!icit dec!arati"n "9 a p"rtD tis secti"n s"As "ne Aayt" acie8e tis.
@" use y"ur system as a redirecti"n ser8er "n )@@P de9au!t p"rt /0D 4rst make sure tat tere are n"c"nicting ser8ices running "n @'P p"rt /0D !ike an pace )ttpd ser8er. On Red)at *inu+ te ceck isd"ne #y runningnetstat 4ant \ rep $$$-09 y"u see acti8e ser8icesD y"u a8e t" st"p tem. ,+amp!e: @" st"p an acti8e pace )ttpd ser8er runetcinit.d?ttpd stop!s" make sure tat tese ser8ices d" n"t start aut"matica!!y a9ter system re#""t <9"r e+amp!e #y usingckc"n4g =.
15.1 Red<at >inu and 3buntu
,na#!e a Prer"uting >"rAarding Ru!e 9r"m p"rt /0 t" /0/0 #y adding te 9"!!"Aing c"de a9ter tec"mments at te t"p in 4!e $etc$sysc"n4g$ipta#!es :Fnat
'"mmitting te canges requires a restart "9 te 4reAa!!D Aic is d"ne Ait- Red)at: etcinit.diptables restart- U#untu: ser&ice uf+ restart
15.2 !u!e >inu
,na#!e te prer"uting 9"rAarding ru!e 9r"m p"rt /0 t" /0/0 #y setting parameter >;HR,R,'@ in 4!e $etc$sysc"n4g$SuS,4reAa!!2 t"H00:00:tcp:-0:-0-0H
'"mmitting tis cange is d"ne Aitetcinit.d!u!E/re+all2Dsetup restart
15.# C?anes to t?e 'atabase
;en y"u a8e imp!emented p"rt 9"rAarding as descri#ed a#"8eD te Q"!dQ p"rt /0/0 sti!! A"rksD "9c"urse. @ere9"reD y"u d" n"t a8e t" m"di9y te UR*s in e+isting mai!ings. )"Ae8er y"u s"u!d cangete 4e!d rdirHd"main in ta#!e c"mpanyHt#! #y rem"8ing te su#string Q:/0/0Q at te end "9 te d"mainname !ike s":update compan"Dtbl set rdirDdomain +++.openemm.or@