From b76629d29bc01909df006899b8c40f96f461097c Mon Sep 17 00:00:00 2001 From: Wietse Venema Date: Tue, 19 Sep 2000 00:00:00 +0000 Subject: [PATCH] snapshot-20000919 --- postfix/HISTORY | 8 +++++++ postfix/INSTALL.sh | 40 +++++++++++++++++++--------------- postfix/Makefile.in | 2 +- postfix/RELEASE_NOTES | 25 ++++++++++++++++++++- postfix/base64/base64decode | Bin 83319 -> 0 bytes postfix/base64/base64encode | Bin 83473 -> 0 bytes postfix/global/mail_version.h | 2 +- postfix/local/dotforward.c | 30 +++++-------------------- postfix/local/recipient.c | 21 ++++++++++++++++-- postfix/pipe/pipe.c | 11 +++++++--- postfix/postmap/postmap.c | 2 +- postfix/util/spawn_command.c | 4 ++-- postfix/util/spawn_command.h | 2 +- 13 files changed, 92 insertions(+), 55 deletions(-) delete mode 100755 postfix/base64/base64decode delete mode 100755 postfix/base64/base64encode diff --git a/postfix/HISTORY b/postfix/HISTORY index 35cdcb3f3..31031695d 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -4206,3 +4206,11 @@ Apologies for any names omitted. Gross hack: prevent looping a bad recipient by always forwarding recipients in :include: files, even when owner-listname is not set. File: local/recipient.c. + +20000919 + + Convenience: INSTALL.sh now imports default settings from + the process environment, in order to make scripting easier. + + Portability: another fix for NEXTSTEP (Masaki MURASE). + File: util/spawn_command.h. diff --git a/postfix/INSTALL.sh b/postfix/INSTALL.sh index 545dbb934..e281467d4 100644 --- a/postfix/INSTALL.sh +++ b/postfix/INSTALL.sh @@ -45,6 +45,10 @@ EOF # the time that a file does not exist, and avoid copying over programs # in order to not disturb running programs. +censored_ls() { + ls "$@" | egrep -v '^\.|/\.|CVS|RCS|SCCS' +} + compare_or_replace() { (cmp $2 $3 >/dev/null 2>&1 && echo Skipping $3...) || { echo Updating $3... @@ -102,21 +106,21 @@ esac # Default settings. Most are clobbered by remembered settings. -install_root=/ -tempdir=`pwd` -config_directory=/etc/postfix -daemon_directory=/usr/libexec/postfix -command_directory=/usr/sbin -queue_directory=/var/spool/postfix +: ${install_root=/} +: ${tempdir=`pwd`} +: ${config_directory=/etc/postfix} +: ${daemon_directory=/usr/libexec/postfix} +: ${command_directory=/usr/sbin} +: ${queue_directory=/var/spool/postfix} if [ -f /usr/lib/sendmail ] - then sendmail_path=/usr/lib/sendmail - else sendmail_path=/usr/sbin/sendmail + then : ${sendmail_path=/usr/lib/sendmail} + else : ${sendmail_path=/usr/sbin/sendmail} fi -newaliases_path=/usr/bin/newaliases -mailq_path=/usr/bin/mailq -mail_owner=postfix -setgid=no -manpages=/usr/local/man +: ${newaliases_path=/usr/bin/newaliases} +: ${mailq_path=/usr/bin/mailq} +: ${mail_owner=postfix} +: ${setgid=no} +: ${manpages=/usr/local/man} # Find out the location of configuration files. @@ -245,12 +249,12 @@ done # Install files. Be careful to not copy over running programs. -for file in `ls libexec | grep -v '^\.'` +for file in `censored_ls libexec` do compare_or_replace a+x,go-w libexec/$file $DAEMON_DIRECTORY/$file || exit 1 done -for file in `ls bin | grep '^post'` +for file in `censored_ls bin | grep '^post'` do compare_or_replace a+x,go-w bin/$file $COMMAND_DIRECTORY/$file || exit 1 done @@ -263,12 +267,12 @@ test -f bin/sendmail && { if [ -f $CONFIG_DIRECTORY/main.cf ] then - for file in LICENSE `cd conf; echo sample*` main.cf.default + for file in LICENSE `cd conf; censored_ls sample*` main.cf.default do compare_or_replace a+r,go-w conf/$file $CONFIG_DIRECTORY/$file || exit 1 done else - cp conf/* $CONFIG_DIRECTORY || exit 1 + cp `censored_ls conf/*` $CONFIG_DIRECTORY || exit 1 chmod a+r,go-w $CONFIG_DIRECTORY/* || exit 1 test -z "$install_root" && { @@ -332,7 +336,7 @@ no) ;; for dir in man? do test -d $MANPAGES/$dir || mkdir -p $MANPAGES/$dir || exit 1 done - for file in man?/* + for file in `censored_ls man?/*` do (test -f $MANPAGES/$file && cmp -s $file $MANPAGES/$file && echo Skipping $MANPAGES/$file...) || { diff --git a/postfix/Makefile.in b/postfix/Makefile.in index 4fa822d0f..a23a48682 100644 --- a/postfix/Makefile.in +++ b/postfix/Makefile.in @@ -4,7 +4,7 @@ OPTS = "CC=$(CC)" DIRS = util global dns master postfix smtpstone sendmail error \ pickup cleanup smtpd local lmtp trivial-rewrite qmgr smtp bounce pipe \ showq postalias postcat postconf postdrop postkick postlock postlog \ - postmap postsuper nqmgr # spawn base64 proto man html + postmap postsuper nqmgr spawn # base64 proto man html default: update diff --git a/postfix/RELEASE_NOTES b/postfix/RELEASE_NOTES index ff73e4d12..5a92053cf 100644 --- a/postfix/RELEASE_NOTES +++ b/postfix/RELEASE_NOTES @@ -1,4 +1,27 @@ -Incompatible changes with snapshot-20000625 +Incompatible changes with snapshot-20000919 +=========================================== + +The queue manager to delivery agent protocol has changed. This does +not affect the format of queue files, but means that you cannot +use this software with queue managers or delivery agents of prior +Postfix versions. + +Change in address rewriting: Errors-To:, Reply-To: and Return-Receipt: +are now rewritten as a sender address (was: recipient). + +Major changes with snapshot-20000919 +==================================== + +Postfix now strips out the Content-Length: header to avoid confusion +with mail user agents. + +The header_checks and body_checks features can now be used to strip +out unwanted data. Specify IGNORE and the data will go disappear. + +Postfix no longer inserts a Sender: message header when the +From: address differs from the envelope sender address. + +Incompatible changes with snapshot-20000625 (never released) =========================================== The local delivery agent no longer appends a blank line to mail diff --git a/postfix/base64/base64decode b/postfix/base64/base64decode deleted file mode 100755 index 67cbb9b3d08af9af693f4bb8d146c591411ea419..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 83319 zc-rl~33!y%)d&8*GcPc}K*FY|h(SQvgiJCsnIvF=kl?}+NeF7uaY!c2z+`5eB`nHj zKp7(%t=0{#Yg^ZCaUCLx1oLKaL_r!4KwF za>a8egq?eUK75d1^dyDK#pf3Ix~CXEf6#3BX@M|)dh2CONycMSLct~emHyf(p}N!j zq58@3$Ycj*AFF?izrOGpqqP6S@{eKRT!shg-$UU8EGeVlbF3aWME}Nmv6;3GYmc_z{jS?jp!sV z_LE)tZhu&RY;%Qp|1^VjpUT3g!S|(?i|}BmX(7tcqei%&QjBr|&p+4OV>)~iS7^3E zRfNxg&mjmuqCcMtpX*I}ic$@q-7NfL_-wpFhL<3J@cc$Syc|B;Ae`3euR?l|zD$3< z7Cy5ee1hKYm&2zH!hQ7T*TLtiH#D0@^&6zz3*Vj>HCwe^gm)r8kiJq+zX$85^MmwW z#`?4Ht5^pXep3;0F6i5p50GDYp3v#-$M(2fray?X$Lf0+67 zi-&MP7Af9Y=gpfj_slZIJA2OjnKR~i=T}rzl~;SKXUv>a?p3_Oa4?~G>)}gj@P$H= zS|#Qe-}Ruclz1Xm8(pO|_#5=ExIclB{#Yy$Q?M9soxe6x=XX1mM6kiHc)jA0*XxZX z!~VpoD8!W|V=;d?u>d0GL~4B@h??cE_a#F-3fQhio(mQKO5iCH^@o+(P$ce0j_QD5 zG!|JJ_CXoG1f_`kL;l)?vShVC7EydlBC&+BA{I;l)6rNkoTyjgA-_MW_`{9CSR|~3 z;(q^f#p{R6P-B0cFX02COX6{FJmHIBRJcyTk1l_`1_`D)luPj& zl-7Fu2Bo$Uzd-?Q#&1w)SK&7(nil*9#c(}-gAm<>-=G|~;x{PHJMbF@So#YPj$Mk9 zaZQJq%-C7F9?6Ww8U+yU-85r211Bdm!)#)gQtOQ~y|0QNt_+gf|44mVpfdz*G0+3?jQc)H@#<_nJeVHf4`P#zEE8EB-Ve1|AeOG}HWPjk}N zT%n~Za+@n`sS11Z8hdkjuG&_-Cw}pkMkQzaNjckh-G|+uoSoXa;XfH@jm7~B((}I| z?pyn(4&R9bta(<8b1d5OL|)TcyRvp*W}dydB6sufOhs<%h?c6F^w%KDO}lNaIaPsH zsB%qu+X)z9pWR$;x0dG??}=T9IoH{isWr_NBQkp-`wNPaI=IDu=*Jg&sa{P7Y{>Ej z_GNYH0U*e!7XWAo%G&__2S!tBPvEBC!!RjKS6Y$&(3U`S4;D9e1eM>^mPz=4^u!9S za#8baC}&Igk;=>pO^?eoYU!OvuyVtppZW(r#qPNoU8hX)2qeoS+tNExI-*)YeGH!c z8HQ{?gCf&SgRz9+tyiZGJ9cdGA0V!&owtF&kG9|qf`W7NtoSLrc5NApM2;wrm zW&!8WM0etMaj!Gr|GEKzURWv`Ug)1c>`EPme3@R;G37M;uO>$sWUT2nh1$4j+EjE9 z6MgQ)@628(bRg6bzWxbcK&JzZK?V&iy-m=7#BYBEQabF2kV_Eu=3z+gZv2vS2-`$9s zhvB0;5vE48WO`vpNHeuvE--8dp3@d81m$H~HPO!j;rJV<=DVw@L7@|K(+yCWOg`jD zuOmURL2>vv{VvGUors`|k(x%-sGY@dxxmipZenyPTk*MCqF+^IdgC!fcG-^%V(AH* z5JA1xgGo{Y6RchIiY_M2dC$w)oqAe4(g2 zw)sMPQ=8T}urhEC(wq1V_3Ne`$q@@Ot`-=ffe^%JT-O6k7Z1YHa$83&$T&Bhiv@@z z37O;=N-|Ur{W8aF15wu9m_9WOA2v-3k#G&&(<`L+aA50Ikm*?9LGVZIw(0OXdre?H za<}DckfALVw#xL1FG-I8pZ37*_-HabN*&&#JoFxn<*2shTw6^5l}=Uq2qaCtrPo@> z6e$B6=&Vhdb@oMp9Z0}|v^Twz%niH`!N7iuJCVw(YTIy08`4ea&y-)I$BWPQ(Bz^y zrU8>V;^8=a_#qCD*|y3B=`fbQ6WV{%tH}X@Gw@-P7(06`#OrEp%lWqAFV+r8wT(Ym zNjz`SMpmZFb+&~P6MR=eBSMu21(yHXU~%;ktoN34+cvB;c%+BK;{`b8_E?F>GH5K| zkscC{(@|UPuvO~K^m-duk@SzCR2mx8XH5sRMIg%guQso-ZQgt2NwlV)J^aO=Q*)1; zlU^)Td1~i^^nG7oC7ai@>G{Y$*z4RAB;-!*ssZX% z>02QC3))CUR#)1X3+z?t&#-UzRMjj>N3ozbBUOtbBX-gWH@#tut?{5y@5UgGE&Oh- z)KZnX&6T!PrG0&=lC$v_I6p2On;6(UfYPl33o^HLanANK71Vc8Q(Hq~seH6{Najp? z^EtU!S~pwDGBa{pk0Bdptt`v9FirYgm4+e9F(@lXs)eT?C(@HYRFhtPIFqT=pPUb7 zp=p-|6zBe`49N*qplPKrah1)}!SskaO-DPYL(Le~+&-_dr~aL@y*E~f_}we*@Sek6 z*x{s>`f_vsGGG=2?PY02iEi^kTk~9d&i3buf1m8vJk$QgTg5YN>-w$lr#^wb{D)nc zv+PYLf1Noiw|PPC=HG9&jLo#u+f~hFLs1#wxE;}SiCtMUFjHo4F3Zi?u4Kw`TL)C7 zUj;g?y@;HYLor;FcE~^6$UhGAuRSJnw!OJ3H}$Dm8qyh5QDBz_yz#PHdhHRZRW6_=UBW)UK+`id?Ye=>vzb>FlaE zSM}P}3yzF`4+j5E@P5WaV;vNYCCf<~<*dowlv#T^mV@5P0Pt00RZ?FSueGnSHeYD3 zLT{llH+_X($c4G%FQh`=2UYbv7Sd)EqU+ST_C2(8uxEO%_|n9eU3`&VO}*IkLH|Ur zrvF%yefLZsI{l}bt+fvTe0KP`{t5e@>BE(qAhI9orRl>())D(4${dTNFPr1J6XRO( zCAPJL0x{Gi8&Q)S#!-3ru+^5x5wUk->^_KXx&%DCfr~P6ExqYK&>ww){-X5B08?dJ z>Jr=GGF46Vv&OYlJhv5WS96u7ewM1r74fNq6U%JWhs|ZS@ds07cBUVYBPcRCkjk)O z5pM%sq3!mRiN+`sjZr2Vqs%70hKesy%`#fM;X2PI`mJg0aJ03*#|piR70UU7#$$8u zvADJ~4HvQ!BiGqC?a0}9Jvt#Jsl(H7wJG74h6xhKw~pIWK_xfWXx18AswQ{;a+Ulq zLG@Fl`Xr3R7I2~`R@f(&+f(I7!2JeuXjwaE!x|eJ`osy~Y&6fcWiHMW+4^jQZ0~)J z0+QRb286bE)0!j7njw%(Bsd-u_=xVpBgG5tYjQ>WWQ;!(<1t&##`m!Md#gE{-bEhg zX{otwWD|3)z8)hM+M1riS&@<$0v_n|pTUTnYfEitA(umg$C=oq%ww1Wj6_=|me)LU zTxM@-7nuJ|@2nfTexRD34w;%fQxgf5w$dhf`SC^i4Sx4A4Y zRpx27u7BB*vZl%|O1-}&evy1QHC2`eQaZ8BURjlX91Ye^Ao4X5xhRXsR3xGzk?BZe zx_syXBB{OYZN9EYF0iF8ID#A-qL;JrH;`*xU(oL1{SPV_i?TO}WG`pql{o#p0p}ke z1I;sYi)U)_F^6ZWxryFQm&{Qv9d0sf`x@IB{ED1SR-oHF_sE7($oSzIka$RE>@PgB zp&zn9f23F>NHUWe2GB~gj%QA{oZ zxlVod#oLfCb&kDxhL)O<3!G~Ss~XS8Nu0C;dgr~(`z~<;^_z45db8hF37xT|H7aBe zG$6MA>glOB%x0aLmzwF>&>z#&;}e@LshJn0-rN$Cf;e+(YGz*RM4>ZDjatBjp^?>6 zU>OIe4hQZv`(oN>s0&bkjznv^ZglfZ+r*i67)AdERSFyq7ELjLx~VGtDR_riJ1(E1 zeodEvvK$n6dYhpvKll`F0y+#9R_~Lj-lhAmGU}bPaRWiD`?A)RpaekpzLCP$aR4r~ zf$&*$;X9$Zi=o(hS_{x>o?!z*)C7<(HPhZaQ%lXvZOs*oQX3S1O7e&rw)hIKNqd&_UW zISCgaC=Zae&ahRUlYYDn+wQPcs-r{9SFlT$EqSQVd<3zz_QX#h!BV~ffh`LQ(vZDdhV-}z;1wY zLeB-vKx1CI-vLyAsha#vudW$@r26AV3HqAA>xRC#a|5wWqrYyh$lu~mQ!~hUa_Zlp z5V9nD zL#Wl>0&e5PDlN6wicFAqDCaITH$1!s=AG~0a32PGq9uSvFLbO(>`>o z+APU_d&i@l;=bTdw~-mItaQRpyGJrex`Utqia?Gu!xxi|<1 zC;Fa~zFDkYqE;B(^nr?QF+I#p%*$NtNk8^+Ces%jAdzC`)Z&?*guOC-tBeLkvuk=) z`fIS#;QKc1xTrGyDdIIYsV7>8qnx2Lk@kt4xEk}~=fc7OkE@-)U?%2F-+xfBGuPJi zBsFbfVCGQ-=@#(>ycApnjP=#sl|~zqiXX(0jJ}6Cln+W7))&CU(w+um?FmG34y3O) zRi)GYvHQ$*C}WP(TBOerU~VJULSc5aGgFa^E0BX*k86S9z5g?+48$b+3VFAu4(B{O zq-@ix$=z9fYWfeLX4AIYHCxNO@b4ge zhW|{n&4SM%_>8y%FnrF1&qnxY5Z6?G1e)$h^Nb^@vN8L20tN8zSlqb%4|j;0wEq?n zcM0`D+?hV*zp175M45|^q&NOI2`EJFZ-B%tXzFq{EddB4I#(aj^ExpNowzD{%A#Tb z)rqf=_@d2^rrL|X*xz6H1d6`kK?zrcjYaZL~e zkk{WMbku%SC3?DZG2OPTbW?Se89`Z)@uVAC&xiICE>IF(ph^E^E)Y+QNx%*^Jx#Km z9KCEz`j@DgNsZv-e^ASU!0}Lg;0oj+pYd=G3dyGTzRr?u6eG|rB);SOn&NA$?;V~_ zx^_BDnn9)^l$-4B*n!WRr_Z4{Q_dIaQ%O)K#e3ISKns`IQf0PEoW}k5fS4XWr+x~? zsrhW%c=)z+9UZt48D6*FSc3**0ORs!86219dNQbxa!`J2`d0>?!sL~Z9Gsg?JJ$9A z2PdW{mUc(1GrogK$3oH;Xs%UgUUrEoWlef{tKchc6V6mKvW$+^3pA;$zEiWoq_U2_ zMy#Z-JVQrI-i5cMk@#!rQxA~%SEWZDKz^t>b^hntwk*u0DkKV;+SCNpqYatcoQ5nr zwdR>eQZw>I{f^lV@li7#ypuobb7Weu+4P4s1J4P#Fwxm*F^8R*J8`B~{M?${=JPf6 zrPTTGZ5t2Y_S9a+gJDnjPS5&MB{7lo(_qw3HMGQqyEVDE#`LVUvL=1jzeqimLDJ;w zU2V=7>oJQA#n%kXuy$=d4d|^uT}e!$g`PoTq36opP#E~JIjHY?gBg176Dq4B)i!_A zj&*+`Hx^2(YA(al%BZwXZDcpa;E+l~95l+f1tL}!d)z7tID`WoEz6HbA( zMT&lV-}c-2JF6Xko8IYcfA)E7y9kgD&t+mwu4ARV!1(~)m78JhPl zw5M)p!^OSZ@PBKs7RNiO!&Q3bWmM3X*=l9l^*366M6VmyERLf!m2?DSJzCrE@?_)XKcek69Oa??#;WHNVSkY+YwU+VGRe!^)NH|O;EW?x+_C{Y@>^p(V{q;vAG5cqWGMWcq z*<$Ugd4?@D16`xRS=&~_jQlQ4oQ?_->q}2dP7(QOvnw|%*ASj(s*z`6_w(3{Jo(+v z^V&c3JQI?Oo62*w=45Vj(Zr^ycJ|E!tuA;FekH-cZ!m+>EhC_c)>hL*w9dbn-%3AM& zzAc@cEMS#C${wVs|A(E||IktE|MvH&|DkTz{}8MHq3+cGLtg(-&hB!JHT+N2bI#f{E+z2o~)kj29b?gf_7W`8@sJWtk`gcEKNIp+0>SobH%?bG;2Qa zkcKwlj9+QCy^nP7gK6=zjeR;xH-@E8u=wc1GM>}q{odBJ=8%#+k=7|L!M*sl_IvT= zM;hyzK`N7niVw!E&E(chBg zfVog)ayI@G7ZWPb=C;0%dS*>q&h}$xhJ>8Q8^z_FNh4u z*Y@8k=I7nu^Ag-r7uC-+9?4>NxL{W=I_K(H?KyTaj$7K5)vFp0)paawfGEv|ja_l1 zxu&ghK~|CXzA5Yvm51l`S$WSZti1FIZ{mrfbm9#>QY z_!s3zipvi*cGXhJgI*oK5q-q~$nc zDfe4#``1X|xxcov?H|3~9oxR+_3v-nu^6!LXxqosN#@otB5EnPa|& zyo5j25Dfbg{yHTYULKCD2rE%vI9RLH`x3s8B2H7U@WsNx@KPlhu8+XKMqemcmlyXp z`eVVws=N?@P)Xj{Iw%Uhpg8d@aKkEbu)8EL=D#@Uk3&h2BfK;bz#Q^vFdR?T*9U8Z z{%|6%!QT*xtpWlKkU~EZ-W37kz&I8dPKH8x(MT{1)iSGJl2;pv#gfrPUL=;63{z^X zuwF{u5(qDEmySQs%i?@=%_<#QZ^Q%Yz6S4-WW86i=1U~}4L~~)$%_YK!SM1tcwX<1 z(L>;BNyv}S{3{dwa9v(~aHYTQw0Ll}-$-Uqt*;Ly;{k6x(%`48csl*GNI0}APb4rS zr_gD19$Q}rEtW_5jow<~tAkR#?c&VvRH%D>!W(JSxim8SkB)F(JnE~JOCI3bp4Qik4MIC|*60j> ziQWu(0bd+Nzt$g@ywyg+iC840)Kpb3D4#LcTUI^C3t*PFVit*9Fy@cv)kTunL!vWq zEb!Ee7MxjKe)QxLSp5VGxV@U?Q(#mba?By6VjH%Q2yNhB@qyL`JhX*R^$;Cry1 zZwPyjQ2w2ibNN*94kK<|y|!7jg@N5zhMuw8Ge)D6I6-446kAM zXAD2X@LLRj%<$I?A7hcYjNuCzUd`}UhJQ(TDdEQn(-xkxi}1yS_Y#f~evfdRa4X>i z;V%g%#e1Vx#Es&8Q^G67`=Nwa5q1z3Z+=cCEZ*pxO;~891%$<$s}~R!Z?pyp4##alJRQwZk}E+9OTa3SHzgz1QZGL5i{ z@L7b52%k%MI^lZ4WkP;f-i<8pHH6)SZ(?-rBJ3gjAmL)d+XxG3eU9)n!ha-ux~Lc7 z9}!Lyo2@Tr7n6V4}0o3lzO;WG)(B77F%xrEOqTtk@l zbd`$;&n3K^@I1l^!t=$rAWS>L$`ypG313IJhVX5K7l}3@e6EmT!ePQYdP!M*rI(b$ zHwmvH`~l(12p=GP1>r9U-$dBbTgrxm@SQ?#2~QGslcl+g;l~*MFNO#Ak$4uvjSSz% z@Y8+d7<{#l97pf5G{bEYPb7RJVHb-JFnkHa4>SB6!~bR&H>M4IKEq+c?-IV0#cyZ$ z6~eF3TOIEao-Aatuaxb7v-BhTNqIZHpOl|OKbhukhX2NJPJfB38U9&+sq6kpcq?H% zOJbxcA^daEr-bhpvP$?jLeCI>g7A%mpA>CK_$k8A5`Iz08{wA-A0+&;@D&D7n-CsF zcpu>@10+9DhM!^hEyBaeHT#0aI|q_XQhe1w8J}W!E8){A%_D>t5q_TVa>8#CUQ75B z!Yzb*<9oEqU4%yxeuS`_@J_<>3BN_Sp6~&}YY87Ad>dgq$-^@_lDC5lpOP!Fi||rP zeXufPzQ_j-n3VK~F^)S-+AhPMutw(P#4(w@FB z6z`Qdk$j;y@SSI61o=?^rDL?xpXeB^@gcyo=qRCqN7CIC0*_+&WU|HrkEXjT1RkTD z3ixxtcm}6eO0$Xh>lBBX<|o9dz&Gd?K%}2wrXNG`0*@tYAn>WA^$i}bF!6Z0BSGK^ zG~xxGsNf67{f2$Fb~t7j-U%^+?#viXcqHAIF@f+&x!wp~38Wi?-E zgSpJ*6z`yRzHXTC(~dyA(VlkJh7ao){rr+EHQPR|MxSVA7uC;#{a{N z|3?`AkJ5c>0zU>`t%0{G`QO4rHqV&;3rhc_lG`lqMY;p#yprc98P89#et(AfoWEr< z@GM#8u4o=}Ec$X{PCb_JQ|)}?-i$Y-lYcDI*`C*y4w<83$N?FGi$9>&}6 zk4ke6@v~FRHwo`PDsPL4&MV6FW@B#h3ghRGtWW<$o=$dp^hM`4OCPloaP(M-dwkR$ zAGOCv?eS52eAFM#N98`}nq%c!+||d*wYUe4m1~U89V^!u-#(VDD-M@<3d2E$ZyGM? z-^1enGW@%(F&-J-`5NQ6vdH;D_=WC34$4h(x!#6Pe z%<)ne{r-5V-#$1VeeW|ByiTi)@L3Appp|n1;py^Hf%n#@0HA+ z*3kNoz>C35!(g*cozL^-;C~mrMw|!o0)ex%e$QNUae!Jp** zcLk1;<`(#3(vIJ?+#4u;qoQ49q)$@%yL4=4b1TW)3bMKaU&`p!QyrT(MOpkt6K|rsnY+XP10*v^>fdcT#9c(>Li(a@Bcv}n=tN2LbcX90zT-qmbNh*s=4&iX=ETnZK+i~tlMFw^ z@M|Nbj@ma;>dCK0N*y@tB($?7WbcHXEhalV@g#xmZ2wVV`;UFu-lD|QNka=fgZY6o z*;?5w<|mXhKWDabzKPFJE->+#WQDrovxxC2`~jg4r=KJ+3fY+_p?_Pd;Qg+AFWB%0 zkbW)EpQqTiXttF^b1u=}pkvt%^H@8~XLUb^;RUQ6s+jLoO*{4iFJx=8i)atJD;}<5 zJp6>}C3NOi9b+BuraI17LS57m=|2i-#(}ND8*6_{*rnjTwT3TLx`pk}0)F`29$XEv$$JPOyY#m@aoA1wI>j3kP!p|9bXyaDW9DhFH)ikePMEDYu z&mH@y&DL|SVZKcZSq5Y8^%A!C zx|!|0UT@;-Y4jLp>K-uhPnCzd$+KvO&D0KO=or`H))Kyw{DEe|&F0!y_PH!9>!(!K zt;(FMjk0cG{d+5GldWv6?`I6(K^jQlJC$0thZ{T!eZl`NL|^c{mDT08c7581@r*R@ zB$~fao&lN<6V0D9o`1o3{w3q{KJtHf-X~e!=P3SR<&YWw5Nq>?m<&A3=>LlOdyg^v zYj(zO8_f&^ew?j^ZfE=2zadN29UescJVbr^C&G`kYb);WA~D|#{h`-({&(NKhg>-ec2yY+`ph=IAP~C`-Ik)=FvaR%V%L?qa;%#oFg? zR@Oai-QZr*3f-Y2%Ds!(?z_moe?fWgS6a-x_fcMLw7~L?g8SH>(fy2{2N<7^GrXPc zD?LG)+j!?|DtqTk-Vg9JTgP}@Ift#`%d<4UQ@r1UXHob2sE_QU5kEk6A2u3g^+9^y z|Af(EKf>C@9ut`t+bit?xJ!hj}};#yNk8eZq`=Mv-bHD!+Tjw5gU9>1=~ulv7wCYhhfIcId|XN=dd_yQw|2cOI)3*%Y#qhff_a7_iA3Ij+qIqNGTGk4dX3JRS1CNz--Wc2Y z8Rnc*B%Z_YMus0aMe4NQoPu{voJaSVy><%P=wGX76ZfBjcJ48i{7fB7KjGJ^^d+8D zrJwwiI#K#j>TG!yLiNh?4{Ci@SzmWimUb%I_s6KL{yN6M&{OH%c6GOzcc&`PPV8iS z?qYoIX7PJedH=xg)niTk2UVW4dQp|{VeM6=ulTBZp7e{<#nLZQmzeksH6(o@^{Q_2 zEb6;cmFISLs&wxb#qUbXBL=)a@NIl{ZF9sZ`uIl_Ca9o|>v9A_V^ z@88vPjzVAX{0{Lvo6>xwJ_2bjJQdUYgVHqUShoL1jGuop`AIYUIZJ<-@%e=+=UiW^ za-Z>tdXb40i#$JOvB*2qtd_MV?q!kh$Mv@S)Wm%(kDAzK`K^ijTK1Z_pXDtR_qU`? zJizjqiHBLfGVw7MySYbstYx@~hg&9^_&CcP6CZDxZ{iay=b3nfWwD7zS}rp2NtP9= zEcYiS9%Z@1#3x&RZsG}+UzvEK<#7{Fvg|SOX_i+^JlV3>#8WINO}wvHb*@K9)xGVioV z8FN{rT$M0fYLR2V%p&D#mPO9r%Pn%hyTT&Zw9l}}`QTZWpxnQ=nQY=)Ea#f|R?CGZ-f9V$ z_%=(}#6Pn{O?-!?(ZqLI)|>clOUlIeShkw@UN#1QZh6qezpy-J;$O1yc)#U0YS(?b zkH${51;>$)lNyo}F?PUC?}($;q#noIJwD%Wo`l&F4vrJQMPi zMV`HU+9LOWp0!lTH4}@pn>#GhAK1y{=Xpzuw9yuMzV}Z|W?r>CBJHo`IccMr%>3E% z7r92k@Eexbm9Fb9^wq=EhN3+m>2jr;|{Pk{DigPK}*cUpIYR3>CY@1Onk_)RoYO?c4BV2j6?h$;W32Y zxAajuzq1I-${&Yi4YiKB#n7cgtXS5JaROsmXX{w5j}5iTJ{o3~eQ^xKCt9T+a*|cb zd7f3SgN?Gvei>_(e&8uqsT;>xrSCDtD&^d1y-nII>)rC~mi1v1PqoVanr3}pp3AaI zKjcT&1M*y!^>g{opjG-LW!7($@7`9TkA_&W%@>XnxR0reji>S$|bp<=*rntF+zcTBYqi&pN}z=Ue4`WU*C_samVN zYq!oS{rP29d9T97)@9PJS>+uIG3zBqsh4Q0+0<4-x14G1>RcJpi4vU^)<=L&6SaAx zRnCbTtx}(?U~RRM#jjy_Eo-YQta4pT8&6w^*-|dnH!sS6|0u`zO|4$bA#5^tW%Y{<@p(kRsV@q_!1v!$y)r(dH|yU9AZt z{cDK+E!NOh&2}fzznRg$ndm>H$ICXng|+#uR%r)sXZTLm&UabI%6${-WcjX#Rocya zt?n#-9`6P}&r;oQW_7>WDs9%Sghl&oweoWj{Jst>cMp|&zxBbbhTPuA#@+p_z7JUC zobh3+-2eKO^%UtRSPPFrQ}A{l@%C3r^SJdxGtD+u?&GZ7?N(_YpJ4b&tGqMtDXX-V zPg}>!H3w^f+`F+#AO2aZyhr7CR=K~kgX!((tjnc;VqGEE6Rb^gJ;5q{mFJlbf5Cc} z^kJ;`%XJ3pLvo$LD(&x!R_VjMWPQcNFI(R+@hjF(O#DZt&;Mk_v#(vXXX`lB$=j{` z9%=5wVBSwD?`zhBw`n$QJm&oi>x=Tx+kNfy34ebI z>EscePpspBj)U?ZAUcBP0mkzujOTwby>XD?Pnpj7%vx&Ve_Q1lszcU!-7L3wJk6<@ zemFq=CH7wbWwmsnACUeGqW`6Jz1co(M1SFUfn~kEWcB(F^OwG6_!~A(6;0Y%Rg-gP zt0rx$rmc~_s3!fTKH9a?7uDo@fBiH$$Lz1&XJWhdw2235@|<~&_D2)vYOk4ikoLBT z2WxWN4bk#UpLVD=POi6TrE)z-lk>#mwS-*5(N@bf9BreCPt>lJ>p9wuCeG93oN<(P zmt4cqz!_r!An zzdT;zo;~rNJ@KAB@t!^Lo;~p&Zcm)=YyVIEj=&q^<=*i>$IHEAZGzmtK7NASzb>30 zdAo?=%?$5k_|plJ{?`-G?zED<$eoBb;A2|TI6=qKmbJ38X9w81!Oz*f<%ijQR$s8Y z>)Y7f^=xIqTC4+(e`~z^9!+l_%WTUbWr?(c6T^%zZdBjPel6PDAhoJ0nz-L zowxjk)g{C39aYraqvZ8bd@r@m&b);OER`ZTRU+^}Wczci16ssOHjfe42 z%y=kKrQdrx!#`4`uRcSS>pW$u)DN>%xz1D0&S{*XdZcfx&O8b~f@cq%C;1oQ5|YW! z3758$L%zR&G`}XA^VLgDn)8^P&toz+pVhZgm1_~_sPZnm1*%*#tYTxTT9tR3ETnpM zr(995d2D>mqdE?rgn7?bpE2{EM|sCi5?JzlKI8evs?^mNuyZmOGM>GvTw}jTmG6W5 z*!iC&s@yxSRWCRSKlzLwQJ3>bHawFAMj4w`+R-A3M}EbmfPo+Vz&WGTSv6;$QA z#Bx>cBZO4BX4{~iDfg+>v*bRtD%T97s$cFAs7t>GZ=#M%sa~RvOI3N_%TgMr)kL#V zZ82#k8O|M)f!oZ&KyD?&Yd{5Ah17lQ*;TS}Bsl@5+y;*9KOv z4eX582I`|ri00MmoO=wKTbSOvn$_hRrhBht_&TN^exgdh=z2EpZlJn%RhHm$3za3_ zk-SFjYTXj)TupRtQA0rIPOAIOjOSYz&$lw);C6<8#?EEk!N$&=>>S-)>`dU@OvdhE zy5e4S)=~JmkJ|iZs*9-Ot!#{JRlC}wN1Bfk&HL3S%(l9ZXg)tlU^#Z~XZ3x6`Ctz* z{4ldqkFdHwO1QgaWv_c<-o2D}yZW-3_i>i@aaFE0Jm@GY^4q@jrPh#gY z-Ryj(=X;bZ+W&EClYda&9jg6aBk%86-rupd-NE>Lj!9rK26HD=QO5c8NQm~CmH^P;gORip3m@Vh9714 zL&75T$z-WR_*$QBid=s?Zi-yrb5D`$dvm79^*#R-#xuj)89vDHN%@lg#C+DC`QPoG znx_2D-_!Y3zSL4gPoBNxzGN>InrZ>eHyebp?!hT%o*p5AlWJH_X*_k|ZL@@&Zkiaa}gp|T~5p9JIQ z62{ME1?VR%ptXpUj?pJ+Aza<%JFrOq2BKf995CrGVf2@ z4=VEgi)CbW_4&2(({A!0>bQi}aS5wqU6*x4`u7q2sB+cM4f+vAKf?HrvN~SO;^Pb_ zSRIq>PMbzn#}%xOE0r6%$%Ck4gw-*^>UeRNbwv8VCHiZWNxv}YU&`oTO6gzKvGilt zu=?`*rPnjOfu(O^?|^S)_fBt8_ zH`=&TvNhbsjbk>>_+1r+*;9G0X%@rfiahf(m#r(#W50JcpWVG#smS-~&SAe9w?GN8 zy^Kb-m$6QsEuz%J$#r7|@vHgo@<#|6v-WTCh{=)VV-evnB@3DP^_qy3u zhONi7%>!5_t~ft`e#1ep@2XNc^!xo{?xRk!L^f zfUR-%i$7Z_g7@VyMbRx0W5D@7ZbPiznOHMWOqRpnj% zHhEv1QY7z-Q>M!M;*{m8+|QNwzuiJM+}O{3LEasw$a@rTqm!h@Z|i*UfbqLIwJBOjDHK`-%N8K#T$3^AGXN5`g>U={V7)YTfk1M{4L-a zCVoVTTjlQpUuu=V3w*y--rN6@Ro>Mf(B$v!CN+6)|4k--PWhdQcPg)I@}B%7CVoNj z^fJ!?E7N<)yYZLyl6T`@VdA&Q776^e^16xNA$y|VxvGrlZQi-61Wf#QC1m3NQnr}* zL*;%G|5N#WZ#j0}GVv$M2PXcP@(;kashyACW2bgLeovl?@7OI@wtl49CQn6QIz+y- zYbxr52D)#5+Eig%@s6)qQ{~weahFJxeyie~slsn;>*UTE#KwIT=#v|=P4N~M54eWt z?`HIOxBD$8qmM8>_K`^c9!vjTyYxnzWBLHY|L85}1)o16=LKzmFPtiI&%B^#UeGfy z=$RMv%nN$f4}XaD!{t-Oni$%ep7q0{uOD`&t@!%ks;U38>xX}TRI@Gd#rrXfWijo2&%G ziIRk4TFg;;T7kn^+SQ!f^kaJyWEE=VDsh~{(T6A4FwM>L_CQGe_ZSqof{u|5>>VW$*e zoD*V|x=3Gl8w-(Ya`h1nVHGc$%YF@p^$5x6_NA34x>; zDiV)8h#mR*BN1|lM-DfJJo+OM(g_w8P(uBY2sy>0Xd=d+=|QK$%3`z`EygEjg_q3> z<2B*Mwky;d4Xld$>S86;1^LtB&R9u-W15dT8%C4plv2e=lPD;dHlZM23Hg@zLy*6^ zpm18ez}W~LSm4yNxhR{X81otF5(R}yV}mzRUmy1;M7bE0VK;`O!El{_rTI7>T*oO3;4oyROJHKw0h{!q}PyIfHV-OWxQgX13!YX*y;1(iA@=uqnXje=->aAj0) zoTb4!qjnJimit#BC{!9in+lG?pg(d( zCBa0zq@Y-rl|n~pAqq==ffJ-fPo607pmOs15|M^rtx^2a+DJIzUkTI-K~6o+c&#@Q zjwgJz%MINDF;uXjJ{Btw4OyGHYob*Q8$4!8{s$v z3ksZOhB}IH85Cmc%0bDm-Op`7~_)kDD068u7t4D;bu7~#%YlB*HYMHa_Gab z%OUH$6bp4Z4U+W~EHXGu#C*|k1REuvRXY}=X41#I7Y5%_99ALGtA!34SP*HBU%EV+(&@!XF>reE&geDzYk`1^2sARzbSjMCUb~gmWMtKb+s75&rJ~=QGtD-QjoM2mA`q(TLq!#$X zOTlzI!OD2TF$}~FYI?}&oHoHJJAiV{iPZYg;ya=D3mq;u_!Pm~5~o{NIz^=gK*H?= zCj4P&*&rALXOYxM1;`bQ=+gL7e*&vn;)L#U7Q+x=Lphoh&s_PywS%6CK^+W3UJObvz=EpZj-WuZ6aqOtBla|taHimU)3brrG%j!7OIsFZ?QEg6kc8c7^Dfl-cy&->?6kdTt z@2I#h9s&UkhskO%^eF(u+*++Q0*GvGpR5A(Z37uNX_z7m()bT_d1CV32!A{P;L zi5Tc|vPP~VqY#RT>%}zqLSV5dfoEEMp-1OT#um$1^f~otcfO3SkNN$=kzax$*_FHd84ri^i3iNB3|t# zCksXrCI-c4j3zxON7TwCVAh3l)GeMt&QNV)bm_!bdBeU2D8LP4$n65RL|Q^K1t|hd zV%WseE*Yij7K+CpQ~p>OwH>dA(4uA)e91(>3w}7LR8xU=k(p?_Wsfc)wd^iJ-3AnN zfr9k4C2kn3Zhf$d${3yl$g`;}IUyomB;sJmM}!wvly7!wC_?6`$YI7nvZxQZ$5`3< zjs6(u*Ls+_(t|>tJRZb33B^0x#hYSY5Bk3F*5V7mMU1~TYox65p1!7#>%R<85I zaEd2G6eR>t4?{0#x<_76pDRppGbauEZf?{OQ+p|ar46c!jGMrtY#c1djKc77=sdnU} z%jNX6lau;7*@)nTfY5pC!zINVD`KjSA|w0()PC6V`bSCBoCN{=jZdnj_TqW4U`5Qr7NU;<~h$Yn9a>LLL$9!VxB zokuTp8B&65&~&az4u_~uFoH>ecZb7OAjb-}SpwQjnOim6TQ;YB#=M1<)V7ZNLTp?o z&3XLsS|5l-J(LP+!lQ@lN}><}({mWfB~j2zC|Xg6qD)D~V^f0R+EB92KcyBWYI1(NzAEuYatS>I1IQ7n30E*aetlH7h773gyFjp%XEX8E|MXEVu%DU zFMjMHN7n%gs+%9SfMAaElH1Dc_GU^+kADy%|qeFVW!WRqEb2Gmgst218 zGDA^c80Hv8NN2C40(fJrM%xEt5R8QC3@BL)1sj416aoRF1_1GZ^du#+h9T6hM!_&1 zKnkGOgq?&=JBppe375053p?p7$hMO-)pAKYi4xJ7orGTNuAOwcJF}C{f{u0)PC_3`I|*~V?%7G02!6Yr)a?*V4!_+Faiijri?6N%)2Nse!cL8f z%PI4?45Q*I?9`~hY-@t6s4Jra^QH-|;&wL0oo|{Hvq?KQDG<&!DU_s3lX4UT;dFFj zARw|E2Eyg}b^`%3xd|?3x9o#EKU*=uWN(7I&{Rxf#E~MRc~n9B*!CI-3a^LBdlk;M zbPXd?(g2pEqCiH5Vmi@i3>@QnN*eMv`a`G~>LalRAE*eon^cz>5=xWh@I}c^VKnsw z#u328f*j}-iitr?(9klCah!29fJ$LwrLenW#o7I_f~z&(X{>VK_^UbxA!&O($#c*i(csHYPyQPr(SS%rWah@(+k~j9C2tni@T>6 zI=YRZ6ehSk^<{9lyO}Q|hLjl3CG~P3lKWv`V=NYl(J4l4joT1!XQ@7#4Qjz~P>gC^ z)FA?mFy!6Xbq*bhM=|jz2I2Z(ES{iskdhiP+!H?VpxlD8APhlZdzDyS12q5wSQixg zP0$82=gcoVTMS-WWe)oi$(Y{|Y+NINd4iPcsBcv$;;Soh@>M?&avXa)E%5xz;z}xX z*BX=&3O+i^xc)(l=rMHHD6zhpN2&2iG%Fc-Svr}9Rk+9}9Hv!J!#Z@+AblM3;X-eL z0mbvMnZP8_;BPP@qk2+N5PbV%wf=Ad)ujO`9qzAyw#Kg*^+pY7A~XR(=m=awc0dJD z9B_@*bl+$-wQD^DQsr`YrH5P{^pG6lLJv8+&_l)D*F(jf>LFJrddQWfhl)CJ-`x48 z`{r_fyZZ*F*=#bS3vmJLoR1rWEq0Lre?*r2#e! zWnniAB{SB}?iy=XH;i?M37i|nm{glS7H448sp7d zA5YYk%yt`w>NH0wdx%4q3@!>j>IJmjFj$3X>bk-$bOn5gXdLq_zpzO}-9_yl%du16KA#vs5V^u96ml?JOO}uh;P{sMc|rAY zzkhj2MWM0g7%f!vl~~BA$HfX|@`NAUmkJh97m32~tAJY6*U=oQUE|i9PiYO4Jfs3T zR)cAcI04W{YTsO>;f<2NrEM^h{k zV$PjI_v9Qntz%u<*p7abM8KRA77MRW796E^cC?dt8hTYl`G%L7U+gM%h$LV^<-(Hd zs9N4I3Y}_scZY=~V|(4u@~$qle17+}e14}|-rb3ocV{guc{HowIQB5DuX?(KATZ0dh)42&L2Ax88vL{d;o*(lhYDH$_NeQjd=ts)nVKfp7Ar)a;5aS~=2;0@|pk&=^-U0@#NLE5okBb{Dy8>RW`mL=l}T1^s;q*#5a^~UiG zDl|=PEK=e$Pq7&BVP81n4dMf1M6`b-&h;6E=1FpaKQVHXFci`pHS_8jfNbn(#+Of&bbgv1rk&q*VA|D<1Jkaq4@|qdIxy|(`oOg7dmorK{CjlTbpPH})D8dM<$HvKJry!9sEF*)C%{~~)&+z%h8OpdQ=Ncfh(cOoXf0|p}Z zE2>Nm_~HR&a^0#hBo*I@m@+x$4^3VYj|&hDB`|#u{u9J`i88q!V&HiM^%Z2K|Fwxo z3^LV;uceU$QS^aZsR(j$og3d0DyBBlfNrxg8N5rs@*Vz8&})hpV!XCqv%RMOR7pAo zTNED5P&<}etl#H^>9%dsY}6G$>@>_>S}zvveOms@d>&13N2s3G0uK zA>GH2Zg#JZ?XpbASU=|;&E_mpls2^^y(mjJ=?|K1Qn8e9o^A!F2kD$$q+83N+zkwrJcy%eTw)UbGlOoBDbH`dAdPai53wa^Uk5u|80Lp&#vZi_>%##@n`Lu`u3tbp{Kcn?(@E75*IW7-RYWll8o}+CDrWD|{@3r~g#5{Z1A9ou<;IWwyWR{FXs@AB4;F=L_L` zE0l+#g5}jic=2_bEug1g0pZ;czFrTfAbjpmG+T`xz6HXMK=?zQ-ox;H{SBJ!KK=Rg zS^WJ8!nt>9wwe0#_aIyi;aoj@2*Py`9;Ao+!4O>u;R$+pgrz;b$ywpjtnisx;e}b@ zB@o6t7mfA~W<77Th~H(zo8SgR`5PcS<`&I{{ea3;#? zsarJLLOuKlgmarU+b})+42182{5R_PpGSI-{&D^JpCF9C*?PMk-e-~Hdl2xqAHt!n zvb--Ke9<+~emZ}s(zZc)^YrI-2xmw(}h|kAEIME{d8^eVV z#@`QpQV*9yc-6x;cxS0zKHl2<7YL8LUG~@CA&kE#dz&8q48jL*(`+Z`VHE^NyF#-$bbk6kc<2?f zJ_8^;2ih~NrymO8G4MR9KR+JA_uMJ;2|gbO;q)Dv?NmMNg0Kzbp->N3Xwu#c275CH z!XD7?)po4^AjOO6uhncNdV0KvwG!HMzR}*A`0Y1Cp4VY{cWbsaKKWcxh};XCy4g#5e!AO!6{N2iDPyw+VQmb}m?++KIhw*cYPVaOGC*XOZF25BJo^-2byG(yx4dE7OzjO6)ErhRnL)O0$!j(|p zAx3*c*nYc|pKBoeAhf4P58vKP+H0);{Se;Bbs?O7-yA-tGCH)LZ%|7@pa?egDpeuy&Q9|N1JGcpvQ5QlFd;;oZPbrOuBR!fn^e z@w*Jd_}jfZ4gCyZ{2lKb^f2DzJL_60e?NurYpnlog|O!?S>7)o{0Q{#(?S?}e@*8?UObbPu|EN<59^D$0IvC8rj9^Ms|R${mHD(4_kG9w5sE| zs!q=Fbh7Vj?AY=x+IG7@^$m&1j)L|}nvzcYgOQ3jJk{ZVmD!J6BJVf zfOX7z%T>`U7!UdV(RLCfU%|~f`jvI$Oo{tL{@O(Qqn91_|FaHqDj{n3C9D0hi2nMB z;#>%U|zHh7xku&3uo54SFs&+2`A&6lI?e%{rGV8d~v(8-uY( zIP3hIY+5FX3XTUa-nz0Bx4so|UMBm98>G-hO1_p&Ou+-Mv9D&nC8Kb$Gmq=?jLb3A;Li*WtXZ;-wW$qlPe?K!<0) zklleAdtU^`06A`L&9yo!J_;>aE=^i diff --git a/postfix/base64/base64encode b/postfix/base64/base64encode deleted file mode 100755 index 8f1869c0dc268d7671d9a93ea95868d07aab7307..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 83473 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 #include #include -#include #include #include #include @@ -79,7 +78,6 @@ #include #include #include -#include /* Application-specific. */ @@ -115,36 +113,18 @@ int deliver_dotforward(LOCAL_STATE state, USER_ATTR usr_attr, int *statusp) MSG_LOG_STATE(myname, state); /* - * Skip non-existing users. The mailbox delivery routine will catch the - * error. - * - * Defer delivery to recipients whose home directory is not accessible. - * - * XXX This code should be one level up. The caller should pass the - * recipient's password file info along with the call. - * - * XXX This code should also be executed for \user deliveries that bypass - * aliasing and .forward processing. Said code is currently broken after - * a revision of the RFC822 address parser. + * Skip this module if per-user forwarding is disabled. */ - if ((mypwd = mypwnam(state.msg_attr.user)) == 0) + if (*var_forward_path == 0) return (NO); - if (var_stat_home_dir - && stat_as(mypwd->pw_dir, &st, mypwd->pw_uid, mypwd->pw_gid) < 0) { - *statusp = defer_append(BOUNCE_FLAG_KEEP, - BOUNCE_ATTR(state.msg_attr), - "cannot access %s home directory %s: %m", - mypwd->pw_name, mypwd->pw_dir); - return (YES); - } /* - * Skip this module if per-user forwarding is disabled. + * Skip non-existing users. The mailbox delivery routine will catch the + * error. */ - if (*var_forward_path == 0) + if ((mypwd = mypwnam(state.msg_attr.user)) == 0) return (NO); - /* * From here on no early returns or we have a memory leak. */ diff --git a/postfix/local/recipient.c b/postfix/local/recipient.c index dbc7bc0f6..badf887ec 100644 --- a/postfix/local/recipient.c +++ b/postfix/local/recipient.c @@ -60,6 +60,7 @@ /* System library. */ #include +#include #include #include @@ -75,13 +76,16 @@ #include #include #include +#include /* Global library. */ #include +#include #include #include #include +#include /* Application-specific. */ @@ -93,6 +97,8 @@ static int deliver_switch(LOCAL_STATE state, USER_ATTR usr_attr) { char *myname = "deliver_switch"; int status = 0; + struct stat st; + struct mypasswd *mypwd; /* * Make verbose logging easier to understand. @@ -108,6 +114,8 @@ static int deliver_switch(LOCAL_STATE state, USER_ATTR usr_attr) * XXX This code currently does not work due to revision of the RFC822 * address parser. \user should be permitted only in locally specified * aliases, includes or forward files. + * + * XXX Should test for presence of user home directory. */ if (state.msg_attr.recipient[0] == '\\') { state.msg_attr.recipient++, state.msg_attr.local++, state.msg_attr.user++; @@ -161,13 +169,22 @@ static int deliver_switch(LOCAL_STATE state, USER_ATTR usr_attr) /* * Always forward recipients in :include: files. */ - if (state.msg_attr.exp_type = EXPAND_TYPE_INCL) + if (state.msg_attr.exp_type == EXPAND_TYPE_INCL) return (deliver_indirect(state)); /* * Delivery to local user. First try expansion of the recipient's - * $HOME/.forward file, then mailbox delivery. + * $HOME/.forward file, then mailbox delivery. Back off when the user's + * home directory does not exist. */ + if ((mypwd = mypwnam(state.msg_attr.user)) == 0) + return (deliver_unknown(state, usr_attr)); + if (var_stat_home_dir + && stat_as(mypwd->pw_dir, &st, mypwd->pw_uid, mypwd->pw_gid) < 0) + return (defer_append(BOUNCE_FLAG_KEEP, + BOUNCE_ATTR(state.msg_attr), + "cannot access home directory %s: %m", + mypwd->pw_dir)); if (deliver_dotforward(state, usr_attr, &status) == 0 && deliver_mailbox(state, usr_attr, &status) == 0) status = deliver_unknown(state, usr_attr); diff --git a/postfix/pipe/pipe.c b/postfix/pipe/pipe.c index 2a777833e..a06552cca 100644 --- a/postfix/pipe/pipe.c +++ b/postfix/pipe/pipe.c @@ -626,10 +626,15 @@ static int deliver_message(DELIVER_REQUEST *request, char *service, char **argv) RECIPIENT_LIST *rcpt_list = &request->rcpt_list; VSTRING *why = vstring_alloc(100); VSTRING *buf; - ARGV *expanded_argv; + ARGV *expanded_argv = 0; int deliver_status; int command_status; +#define DELIVER_MSG_CLEANUP() { \ + vstring_free(why); \ + if (expanded_argv) argv_free(expanded_argv); \ + } + if (msg_verbose) msg_info("%s: from <%s>", myname, request->sender); @@ -674,6 +679,7 @@ static int deliver_message(DELIVER_REQUEST *request, char *service, char **argv) deliver_status = eval_command_status(PIPE_STAT_BOUNCE, service, request, request->fp, "message too large"); + DELIVER_MSG_CLEANUP(); return (deliver_status); } @@ -706,8 +712,7 @@ static int deliver_message(DELIVER_REQUEST *request, char *service, char **argv) /* * Clean up. */ - vstring_free(why); - argv_free(expanded_argv); + DELIVER_MSG_CLEANUP(); return (deliver_status); } diff --git a/postfix/postmap/postmap.c b/postfix/postmap/postmap.c index da51ceb06..49dc87893 100644 --- a/postfix/postmap/postmap.c +++ b/postfix/postmap/postmap.c @@ -281,7 +281,7 @@ static int postmap_delete(const char *map_type, const char *map_name, dict = dict_open3(map_type, map_name, O_RDWR, DICT_FLAG_LOCK); status = dict_del(dict, key); dict_close(dict); - return (status); + return (status == 0); } /* usage - explain */ diff --git a/postfix/util/spawn_command.c b/postfix/util/spawn_command.c index 3f009d36e..f20a66bd8 100644 --- a/postfix/util/spawn_command.c +++ b/postfix/util/spawn_command.c @@ -286,8 +286,8 @@ WAIT_STATUS_T spawn_command(int key,...) */ if ((err = timed_waitpid(pid, &wait_status, 0, args.time_limit)) < 0 && errno == ETIMEDOUT) { - msg_warn("%s: process id %d: command time limit exceeded", - args.command, pid); + msg_warn("%s: process id %lu: command time limit exceeded", + args.command, (unsigned long) pid); kill(-pid, SIGKILL); err = waitpid(pid, &wait_status, 0); } diff --git a/postfix/util/spawn_command.h b/postfix/util/spawn_command.h index a6addf53f..b89887ede 100644 --- a/postfix/util/spawn_command.h +++ b/postfix/util/spawn_command.h @@ -26,7 +26,7 @@ #define SPAWN_CMD_ENV 9 /* extra environment */ #define SPAWN_CMD_SHELL 10 /* alternative shell */ -extern int spawn_command(int,...); +extern WAIT_STATUS_T spawn_command(int,...); /* LICENSE /* .ad -- 2.47.3