ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙ(* Module: Test_Dovecot Provides unit tests and examples for the lens. *) module Test_Dovecot = (* *********************** /etc/dovecot.conf ******************************** *) let dovecot_conf = "# Dovecot configuration file # If you're in a hurry, see http://wiki2.dovecot.org/QuickConfiguration # Default values are shown for each setting, it's not required to uncomment # those. These are exceptions to this though: No sections (e.g. namespace {}) # or plugin settings are added by default, they're listed only as examples. # Paths are also just examples with the real defaults being based on configure # options. The paths listed here are for configure --prefix=/usr # --sysconfdir=/etc --localstatedir=/var # include_try command !include_try /usr/share/dovecot/protocols.d/*.protocol # Wildcard, comma and space in value listen = *, :: # Filesystem path in value base_dir = /var/run/dovecot/ instance_name = dovecot # Space and dot in value login_greeting = Dovecot ready. # Empty values login_trusted_networks = login_access_sockets = # Simple values verbose_proctitle = no shutdown_clients = yes # Number in value doveadm_worker_count = 0 # Dash in value doveadm_socket_path = doveadm-server import_environment = TZ ## ## Comment ## # Simple commented dict block dict { #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext } # Simple uncommented dict block dict { quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext } # Include command !include conf.d/*.conf # Include_try command !include_try local.conf " test Dovecot.lns get dovecot_conf = { "#comment" = "Dovecot configuration file" } { } { "#comment" = "If you're in a hurry, see http://wiki2.dovecot.org/QuickConfiguration" } { } { "#comment" = "Default values are shown for each setting, it's not required to uncomment" } { "#comment" = "those. These are exceptions to this though: No sections (e.g. namespace {})" } { "#comment" = "or plugin settings are added by default, they're listed only as examples." } { "#comment" = "Paths are also just examples with the real defaults being based on configure" } { "#comment" = "options. The paths listed here are for configure --prefix=/usr" } { "#comment" = "--sysconfdir=/etc --localstatedir=/var" } { } { "#comment" = "include_try command" } { "include_try" = "/usr/share/dovecot/protocols.d/*.protocol" } { } { "#comment" = "Wildcard, comma and space in value" } { "listen" = "*, ::" } { } { "#comment" = "Filesystem path in value" } { "base_dir" = "/var/run/dovecot/" } { "instance_name" = "dovecot" } { } { "#comment" = "Space and dot in value" } { "login_greeting" = "Dovecot ready." } { } { "#comment" = "Empty values" } { "login_trusted_networks" } { "login_access_sockets" } { } { "#comment" = "Simple values" } { "verbose_proctitle" = "no" } { "shutdown_clients" = "yes" } { } { "#comment" = "Number in value" } { "doveadm_worker_count" = "0" } { "#comment" = "Dash in value" } { "doveadm_socket_path" = "doveadm-server" } { } { "import_environment" = "TZ" } { } { "#comment" = "#" } { "#comment" = "# Comment" } { "#comment" = "#" } { } { "#comment" = "Simple commented dict block" } { "dict" { "#comment" = "quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext" } { "#comment" = "expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext" } } { } { "#comment" = "Simple uncommented dict block" } { "dict" { "quota" = "mysql:/etc/dovecot/dovecot-dict-sql.conf.ext" } { "expire" = "sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext" } } { } { "#comment" = "Include command" } { "include" = "conf.d/*.conf" } { } { "#comment" = "Include_try command" } { "include_try" = "local.conf" } { } (* *********************************** dict ********************************* *) let dovecot_dict_sql_conf = "connect = host=localhost dbname=mails user=testuser password=pass # CREATE TABLE quota ( # username varchar(100) not null, # bytes bigint not null default 0, # messages integer not null default 0, # primary key (username) # ); map { pattern = priv/quota/storage table = quota username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota username_field = username value_field = messages } # CREATE TABLE expires ( # username varchar(100) not null, # mailbox varchar(255) not null, # expire_stamp integer not null, # primary key (username, mailbox) # ); map { pattern = shared/expire/$user/$mailbox table = expires value_field = expire_stamp fields { username = $user mailbox = $mailbox } } " test Dovecot.lns get dovecot_dict_sql_conf = { "connect" = "host=localhost dbname=mails user=testuser password=pass" } { } { "#comment" = "CREATE TABLE quota (" } { "#comment" = "username varchar(100) not null," } { "#comment" = "bytes bigint not null default 0," } { "#comment" = "messages integer not null default 0," } { "#comment" = "primary key (username)" } { "#comment" = ");" } { } { "map" { "pattern" = "priv/quota/storage" } { "table" = "quota" } { "username_field" = "username" } { "value_field" = "bytes" } } { "map" { "pattern" = "priv/quota/messages" } { "table" = "quota" } { "username_field" = "username" } { "value_field" = "messages" } } { } { "#comment" = "CREATE TABLE expires (" } { "#comment" = "username varchar(100) not null," } { "#comment" = "mailbox varchar(255) not null," } { "#comment" = "expire_stamp integer not null," } { "#comment" = "primary key (username, mailbox)" } { "#comment" = ");" } { } { "map" { "pattern" = "shared/expire/$user/$mailbox" } { "table" = "expires" } { "value_field" = "expire_stamp" } { } { "fields" { "username" = "$user" } { "mailbox" = "$mailbox" } } } (* ********************************** auth ********************************** *) let auth_conf = "## Authentication processes disable_plaintext_auth = yes auth_cache_size = 0 auth_cache_ttl = 1 hour auth_cache_negative_ttl = 1 hour auth_realms = auth_default_realm = auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@ auth_username_translation = auth_username_format = auth_master_user_separator = auth_anonymous_username = anonymous auth_worker_max_count = 30 auth_gssapi_hostname = auth_krb5_keytab = auth_use_winbind = no auth_winbind_helper_path = /usr/bin/ntlm_auth auth_failure_delay = 2 secs auth_ssl_require_client_cert = no auth_ssl_username_from_cert = no auth_mechanisms = plain !include auth-deny.conf.ext !include auth-master.conf.ext !include auth-system.conf.ext !include auth-sql.conf.ext !include auth-ldap.conf.ext !include auth-passwdfile.conf.ext !include auth-checkpassword.conf.ext !include auth-vpopmail.conf.ext !include auth-static.conf.ext passdb { driver = passwd-file deny = yes # File contains a list of usernames, one per line args = /etc/dovecot/deny-users } passdb { driver = passwd-file master = yes args = /etc/dovecot/master-users # Unless you're using PAM, you probably still want the destination user to # be looked up from passdb that it really exists. pass=yes does that. pass = yes } userdb { driver = passwd-file args = username_format=%u /etc/dovecot/users } " test Dovecot.lns get auth_conf = { "#comment" = "# Authentication processes" } { } { "disable_plaintext_auth" = "yes" } { "auth_cache_size" = "0" } { "auth_cache_ttl" = "1 hour" } { "auth_cache_negative_ttl" = "1 hour" } { "auth_realms" } { "auth_default_realm" } { "auth_username_chars" = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@" } { "auth_username_translation" } { "auth_username_format" } { "auth_master_user_separator" } { "auth_anonymous_username" = "anonymous" } { "auth_worker_max_count" = "30" } { "auth_gssapi_hostname" } { "auth_krb5_keytab" } { "auth_use_winbind" = "no" } { "auth_winbind_helper_path" = "/usr/bin/ntlm_auth" } { "auth_failure_delay" = "2 secs" } { "auth_ssl_require_client_cert" = "no" } { "auth_ssl_username_from_cert" = "no" } { "auth_mechanisms" = "plain" } { } { "include" = "auth-deny.conf.ext" } { "include" = "auth-master.conf.ext" } { "include" = "auth-system.conf.ext" } { "include" = "auth-sql.conf.ext" } { "include" = "auth-ldap.conf.ext" } { "include" = "auth-passwdfile.conf.ext" } { "include" = "auth-checkpassword.conf.ext" } { "include" = "auth-vpopmail.conf.ext" } { "include" = "auth-static.conf.ext" } { } { "passdb" { "driver" = "passwd-file" } { "deny" = "yes" } { } { "#comment" = "File contains a list of usernames, one per line" } { "args" = "/etc/dovecot/deny-users" } } { } { "passdb" { "driver" = "passwd-file" } { "master" = "yes" } { "args" = "/etc/dovecot/master-users" } { } { "#comment" = "Unless you're using PAM, you probably still want the destination user to" } { "#comment" = "be looked up from passdb that it really exists. pass=yes does that." } { "pass" = "yes" } } { } { "userdb" { "driver" = "passwd-file" } { "args" = "username_format=%u /etc/dovecot/users" } } (* ******************************** director ******************************** *) let director_conf = "## Director-specific settings. director_servers = director_mail_servers = director_user_expire = 15 min director_doveadm_port = 0 service director { unix_listener login/director { mode = 0666 } fifo_listener login/proxy-notify { mode = 0666 } unix_listener director-userdb { #mode = 0600 } inet_listener { port = } } service imap-login { executable = imap-login director } service pop3-login { executable = pop3-login director } protocol lmtp { auth_socket_path = director-userdb } " test Dovecot.lns get director_conf = { "#comment" = "# Director-specific settings." } { "director_servers" } { "director_mail_servers" } { "director_user_expire" = "15 min" } { "director_doveadm_port" = "0" } { } { "service" = "director" { "unix_listener" = "login/director" { "mode" = "0666" } } { "fifo_listener" = "login/proxy-notify" { "mode" = "0666" } } { "unix_listener" = "director-userdb" { "#comment" = "mode = 0600" } } { "inet_listener" { "port" } } } { } { "service" = "imap-login" { "executable" = "imap-login director" } } { "service" = "pop3-login" { "executable" = "pop3-login director" } } { "protocol" = "lmtp" { "auth_socket_path" = "director-userdb" } } (* ********************************* logging ******************************** *) let logging_conf = "## Log destination. log_path = syslog info_log_path = debug_log_path = syslog_facility = mail auth_verbose = no auth_verbose_passwords = no auth_debug = no auth_debug_passwords = no mail_debug = no verbose_ssl = no plugin { mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mail_log_fields = uid box msgid size } log_timestamp = \"%b %d %H:%M:%S \" login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c login_log_format = %$: %s mail_log_prefix = \"%s(%u): \" deliver_log_format = msgid=%m: %$ " test Dovecot.lns get logging_conf = { "#comment" = "# Log destination." } { "log_path" = "syslog" } { "info_log_path" } { "debug_log_path" } { "syslog_facility" = "mail" } { "auth_verbose" = "no" } { "auth_verbose_passwords" = "no" } { "auth_debug" = "no" } { "auth_debug_passwords" = "no" } { "mail_debug" = "no" } { "verbose_ssl" = "no" } { } { "plugin" { "mail_log_events" = "delete undelete expunge copy mailbox_delete mailbox_rename" } { "mail_log_fields" = "uid box msgid size" } } { } { "log_timestamp" = "\"%b %d %H:%M:%S \"" } { "login_log_format_elements" = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c" } { "login_log_format" = "%$: %s" } { "mail_log_prefix" = "\"%s(%u): \"" } { "deliver_log_format" = "msgid=%m: %$" } (* ********************************** mail ********************************** *) let mail_conf = "## Mailbox locations and namespaces mail_location = namespace { type = private separator = prefix = location = inbox = no hidden = no list = yes subscriptions = yes mailbox \"Sent Messages\" { special_use = \Sent } } # Example shared namespace configuration namespace { type = shared separator = / prefix = shared/%%u/ location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u subscriptions = no list = children } mail_uid = mail_gid = mail_privileged_group = mail_access_groups = mail_full_filesystem_access = no mmap_disable = no dotlock_use_excl = yes mail_fsync = optimized mail_nfs_storage = no mail_nfs_index = no lock_method = fcntl mail_temp_dir = /tmp first_valid_uid = 500 last_valid_uid = 0 first_valid_gid = 1 last_valid_gid = 0 mail_max_keyword_length = 50 valid_chroot_dirs = mail_chroot = auth_socket_path = /var/run/dovecot/auth-userdb mail_plugin_dir = /usr/lib/dovecot/modules mail_plugins = mail_cache_min_mail_count = 0 mailbox_idle_check_interval = 30 secs mail_save_crlf = no maildir_stat_dirs = no maildir_copy_with_hardlinks = yes maildir_very_dirty_syncs = no mbox_read_locks = fcntl mbox_write_locks = dotlock fcntl mbox_lock_timeout = 5 mins mbox_dotlock_change_timeout = 2 mins mbox_dirty_syncs = yes mbox_very_dirty_syncs = no mbox_lazy_writes = yes mbox_min_index_size = 0 mdbox_rotate_size = 2M mdbox_rotate_interval = 0 mdbox_preallocate_space = no mail_attachment_dir = mail_attachment_min_size = 128k mail_attachment_fs = sis posix mail_attachment_hash = %{sha1} protocol !indexer-worker { mail_vsize_bg_after_count = 0 } " test Dovecot.lns get mail_conf = { "#comment" = "# Mailbox locations and namespaces" } { "mail_location" } { "namespace" { "type" = "private" } { "separator" } { "prefix" } { "location" } { "inbox" = "no" } { "hidden" = "no" } { "list" = "yes" } { "subscriptions" = "yes" } { "mailbox" = "Sent Messages" { "special_use" = "\Sent" } } } { } { "#comment" = "Example shared namespace configuration" } { "namespace" { "type" = "shared" } { "separator" = "/" } { "prefix" = "shared/%%u/" } { "location" = "maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u" } { "subscriptions" = "no" } { "list" = "children" } } { } { "mail_uid" } { "mail_gid" } { "mail_privileged_group" } { "mail_access_groups" } { "mail_full_filesystem_access" = "no" } { "mmap_disable" = "no" } { "dotlock_use_excl" = "yes" } { "mail_fsync" = "optimized" } { "mail_nfs_storage" = "no" } { "mail_nfs_index" = "no" } { "lock_method" = "fcntl" } { "mail_temp_dir" = "/tmp" } { "first_valid_uid" = "500" } { "last_valid_uid" = "0" } { "first_valid_gid" = "1" } { "last_valid_gid" = "0" } { "mail_max_keyword_length" = "50" } { "valid_chroot_dirs" } { "mail_chroot" } { "auth_socket_path" = "/var/run/dovecot/auth-userdb" } { "mail_plugin_dir" = "/usr/lib/dovecot/modules" } { "mail_plugins" } { "mail_cache_min_mail_count" = "0" } { "mailbox_idle_check_interval" = "30 secs" } { "mail_save_crlf" = "no" } { "maildir_stat_dirs" = "no" } { "maildir_copy_with_hardlinks" = "yes" } { "maildir_very_dirty_syncs" = "no" } { "mbox_read_locks" = "fcntl" } { "mbox_write_locks" = "dotlock fcntl" } { "mbox_lock_timeout" = "5 mins" } { "mbox_dotlock_change_timeout" = "2 mins" } { "mbox_dirty_syncs" = "yes" } { "mbox_very_dirty_syncs" = "no" } { "mbox_lazy_writes" = "yes" } { "mbox_min_index_size" = "0" } { "mdbox_rotate_size" = "2M" } { "mdbox_rotate_interval" = "0" } { "mdbox_preallocate_space" = "no" } { "mail_attachment_dir" } { "mail_attachment_min_size" = "128k" } { "mail_attachment_fs" = "sis posix" } { "mail_attachment_hash" = "%{sha1}" } { } { "protocol" = "!indexer-worker" { "mail_vsize_bg_after_count" = "0" } } (* ********************************* master ********************************* *) let master_conf = " default_process_limit = 100 default_client_limit = 1000 default_vsz_limit = 256M default_login_user = dovenull default_internal_user = dovecot service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } service_count = 1 process_min_avail = 0 vsz_limit = 64M } service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes } } service lmtp { unix_listener lmtp { mode = 0666 } inet_listener lmtp { address = port = } } service imap { vsz_limit = 256M process_limit = 1024 } service auth { unix_listener auth-userdb { mode = 0600 user = group = } } service auth-worker { user = root } service dict { unix_listener dict { mode = 0600 user = group = } } " test Dovecot.lns get master_conf = { } { "default_process_limit" = "100" } { "default_client_limit" = "1000" } { "default_vsz_limit" = "256M" } { "default_login_user" = "dovenull" } { "default_internal_user" = "dovecot" } { } { "service" = "imap-login" { "inet_listener" = "imap" { "port" = "143" } } { "inet_listener" = "imaps" { "port" = "993" } { "ssl" = "yes" } } { "service_count" = "1" } { "process_min_avail" = "0" } { "vsz_limit" = "64M" } } { } { "service" = "pop3-login" { "inet_listener" = "pop3" { "port" = "110" } } { "inet_listener" = "pop3s" { "port" = "995" } { "ssl" = "yes" } } } { } { "service" = "lmtp" { "unix_listener" = "lmtp" { "mode" = "0666" } } { "inet_listener" = "lmtp" { "address" } { "port" } } } { } { "service" = "imap" { "vsz_limit" = "256M" } { "process_limit" = "1024" } } { } { "service" = "auth" { "unix_listener" = "auth-userdb" { "mode" = "0600" } { "user" } { "group" } } } { } { "service" = "auth-worker" { "user" = "root" } } { } { "service" = "dict" { "unix_listener" = "dict" { "mode" = "0600" } { "user" } { "group" } } } (* *********************************** ssl ********************************** *) let ssl_conf = "## SSL settings ssl = yes ssl_cert =