# Contributor: Stuart Cardall # Contributor: Ash Berlin-Taylor # Contributor: Valery Kartel # Contributor: Ɓukasz Jendrysik # Contributor: Jesse Young # Maintainer: Jesse Young global pkgname := 'exim' global pkgver := '4.89' global pkgrel := '5' global pkgdesc := '"A Message Transfer Agent'" global url := '"http://www.exim.org/'" global arch := '"all'" global license := '"GPL2'" global options := '"!check suid'" global depends := '"ca-certificates'" global pkgusers := '"exim'" global pkggroups := '"exim'" global makedepends := ""bash gawk perl $depends_dev db-dev pcre-dev libressl-dev libspf2-dev mariadb-dev postgresql-dev sqlite-dev libidn-dev linux-headers"" global install := '"exim.pre-install'" global subpackages := ""$pkgname-cdb $pkgname-dbmdb $pkgname-dnsdb $pkgname-sqlite $pkgname-mysql $pkgname-postgresql $pkgname-utils $pkgname-scripts::noarch $pkgname-doc"" global source := ""ftp://ftp.exim.org/pub/exim/exim4/$pkgname-$pkgver.tar.xz CVE-2017-1000369.patch exim.Makefile exim.confd exim.initd exim.logrotate exim.gencert"" global builddir := ""$srcdir/$pkgname-$pkgver"" # secfixes: # 4.89-r5: # - CVE-2017-1000369 proc prepare { default_prepare || return 1 cd $builddir cp "$srcdir"/$pkgname.Makefile Local/Makefile || return 1 sed -i \ -e 's/-lnsl//g' \ -e 's/^HAVE_ICONV.*$//' \ OS/Makefile-Linux } proc build { cd $builddir make makefile || return 1 make -j1 || return 1 } proc package { cd $builddir install -m750 -D -g mail -d "$pkgdir"/etc/mail make DESTDIR="$pkgdir" INSTALL_ARG="-no_symlink -no_chown exim" install || return 1 install -D -m644 doc/exim.8 "$pkgdir"/usr/share/man/man8/exim.8 cd "$pkgdir"/usr/sbin mv exim-$(pkgver%.*)* exim chmod u+s exim for i in [mailq rmail rsmtp runq sendmail newaliases] { ln -s exim $i } install -Dm644 "$srcdir"/$pkgname.logrotate "$pkgdir"/etc/logrotate.d/$pkgname install -Dm644 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname # Fix clamav local socket path, Add variant to spamd address sed -i \ -e 's~# av_scanner = clamd:/tmp/clamd~# av_scanner = clamd:/run/clamav/clamd.sock~' \ -e '/# spamd_address = 127.0.0.1 783/a# spamd_address = 127.0.0.1 11333 variant=rspamd' \ "$pkgdir"/etc/$pkgname/$pkgname.conf } proc scripts { global pkgdesc := '"exim scripts'" global depends := '"exim perl'" cd $builddir make DESTDIR="$subpkgdir" \ INSTALL_ARG="exicyclog exim_checkaccess eximstats exiqgrep exigrep exinext exiqsumm exipick exiwhat convert4r3 convert4r4" \ install || return 1 rm -fr "$subpkgdir"/etc } proc utils { global pkgdesc := '"exim utils'" global depends := '"exim'" cd $builddir make DESTDIR="$subpkgdir" \ INSTALL_ARG="exim_dbmbuild exim_dumpdb exim_tidydb exim_fixdb exim_lock" \ install || return 1 install -m755 "$srcdir"/exim.gencert "$subpkgdir"/usr/sbin/exim_gencert || return 1 rm -fr "$subpkgdir"/etc } proc _mv_ext { global pkgdesc := ""EXIM extension: $1"" global depends := $pkgname install -D -m755 "$builddir"/build-Linux-*/lookups/$1.so "$subpkgdir"/usr/lib/$pkgname/$1.so } proc sqlite { _mv_ext sqlite; } proc mysql { _mv_ext mysql; } proc postgresql { _mv_ext pgsql; } proc cdb { _mv_ext cdb; } proc dbmdb { _mv_ext dbmdb; } proc dnsdb { _mv_ext dnsdb; } global sha512sums := '"ce5faef3847a5baf1b4fec1ffe46ce7efaafb24e63bcc52a61f38e8312a88eccaa816c3947ba428bef3eed38b1e91e606f6ed07bc0a3e14c6a6ed0ecb41eb9fa exim-4.89.tar.xz cffe895974e9f570e2f60583206e0c2865e9ca400636e5ed2117c531fc62b03753f41286565ee253c11610e61589275cb5235b34cae052b5dcc6e5c37fbc7ece CVE-2017-1000369.patch e9524d3a2cc230b4ecb3b098f53247121b9582fc7807b1549c5a3fd54bb416b837c4e09476f2e01dca03d590a968c40bf90d4b6a9f8a4abad082fdec91916a0f exim.Makefile bb6f5ead067af19ace661cc92bcd428da97570aedd1f9dc5b61a34e7e3fb3e028be6c96d51df73353bdfcaf69a3ee053fb03d245f868d63ebf518aa96ec82d66 exim.confd 8d0c594c5e3834ddd3a7743c025caf3f5c04f6ac17e25f2278e7a36b726150f0f8e36a1c76cd1a4b454edcb163181ee05ea40a6b61a0e9172c600e4808ccc80f exim.initd 28e748693a6a72d9943fa9c342ff041fe650fa6977f468dee127e845e6c2a91872ce33fb6f5698838906bde3ed92de7a91cdb0349cedc40b806261867e8c06cb exim.logrotate abdaf749ed3947a75b997caa300bf9f27ef82760f1854aa4521a9ac0f322f1655b65a375bc7a709259daea88bf93cfab5289997fa8e376fac9a3477f09bab642 exim.gencert'" (CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgname) op:Equal rhs:{(exim)} spids:[18])] spids: [18] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgver) op:Equal rhs:{(4.89)} spids:[21])] spids: [21] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgrel) op:Equal rhs:{(5)} spids:[24])] spids: [24] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("A Message Transfer Agent"))} spids: [27] ) ] spids: [27] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:url) op: Equal rhs: {(DQ ("http://www.exim.org/"))} spids: [32] ) ] spids: [32] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:arch) op:Equal rhs:{(DQ (all))} spids:[37])] spids: [37] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:license) op:Equal rhs:{(DQ (GPL2))} spids:[42])] spids: [42] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:options) op:Equal rhs:{(DQ ("!check suid"))} spids:[47])] spids: [47] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:depends) op: Equal rhs: {(DQ (ca-certificates))} spids: [52] ) ] spids: [52] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgusers) op:Equal rhs:{(DQ (exim))} spids:[57])] spids: [57] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkggroups) op:Equal rhs:{(DQ (exim))} spids:[62])] spids: [62] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:makedepends) op: Equal rhs: { (DQ ("bash gawk perl ") ($ VSub_Name "$depends_dev") (" db-dev pcre-dev libressl-dev libspf2-dev mariadb-dev\n") ("\tpostgresql-dev sqlite-dev libidn-dev linux-headers") ) } spids: [67] ) ] spids: [67] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:install) op: Equal rhs: {(DQ (exim.pre-install))} spids: [75] ) ] spids: [75] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:subpackages) op: Equal rhs: { (DQ ($ VSub_Name "$pkgname") ("-cdb ") ($ VSub_Name "$pkgname") ("-dbmdb ") ($ VSub_Name "$pkgname") ("-dnsdb ") ($ VSub_Name "$pkgname") ("-sqlite ") ($ VSub_Name "$pkgname") ("-mysql ") ($ VSub_Name "$pkgname") ("-postgresql\n") ("\t") ($ VSub_Name "$pkgname") ("-utils ") ($ VSub_Name "$pkgname") ("-scripts::noarch ") ($ VSub_Name "$pkgname") (-doc) ) } spids: [80] ) ] spids: [80] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:source) op: Equal rhs: { (DQ ("ftp://ftp.exim.org/pub/exim/exim4/") ($ VSub_Name "$pkgname") (-) ($ VSub_Name "$pkgver") (".tar.xz\n") ("\tCVE-2017-1000369.patch\n") ("\texim.Makefile\n") ("\texim.confd\n") ("\texim.initd\n") ("\texim.logrotate\n") ("\texim.gencert") ) } spids: [103] ) ] spids: [103] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:builddir) op: Equal rhs: {(DQ ($ VSub_Name "$srcdir") (/) ($ VSub_Name "$pkgname") (-) ($ VSub_Name "$pkgver"))} spids: [118] ) ] spids: [118] ) (FuncDef name: prepare body: (BraceGroup children: [ (AndOr children: [ (C {(default_prepare)}) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (AndOr children: [ (C {(cp)} {(DQ ($ VSub_Name "$srcdir")) (/) ($ VSub_Name "$pkgname") (.Makefile)} {(Local/Makefile)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(sed)} {(-i)} {(-e)} {(SQ )} {(-e)} {(SQ <"s/^HAVE_ICONV.*$//">)} {(OS/Makefile-Linux)} ) ] spids: [142] ) spids: [138 141] ) (FuncDef name: build body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (AndOr children: [ (C {(make)} {(makefile)}) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(make)} {(-j1)}) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) ] spids: [211] ) spids: [207 210] ) (FuncDef name: package body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (C {(install)} {(-m750)} {(-D)} {(-g)} {(mail)} {(-d)} {(DQ ($ VSub_Name "$pkgdir")) (/etc/mail)} ) (AndOr children: [ (C {(make)} {(Lit_VarLike "DESTDIR=") (DQ ($ VSub_Name "$pkgdir"))} {(Lit_VarLike "INSTALL_ARG=") (DQ ("-no_symlink -no_chown exim"))} {(install)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(install)} {(-D)} {(-m644)} {(doc/exim.8)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/share/man/man8/exim.8)} ) (C {(cd)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/sbin)}) (C {(mv)} {(exim-) (BracedVarSub token: suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(".*")}) spids: [323 327] ) (Lit_Other "*") } {(exim)} ) (C {(chmod)} {(u) (Lit_Other "+") (s)} {(exim)}) (ForEach iter_name: i iter_words: [{(mailq)} {(rmail)} {(rsmtp)} {(runq)} {(sendmail)} {(newaliases)}] do_arg_iter: False body: (DoGroup children: [(C {(ln)} {(-s)} {(exim)} {($ VSub_Name "$i")})] spids: [361 373] ) spids: [347 359] ) (C {(install)} {(-Dm644)} {(DQ ($ VSub_Name "$srcdir")) (/) ($ VSub_Name "$pkgname") (.logrotate)} {(DQ ($ VSub_Name "$pkgdir")) (/etc/logrotate.d/) ($ VSub_Name "$pkgname")} ) (C {(install)} {(-Dm644)} {(DQ ($ VSub_Name "$srcdir")) (/) ($ VSub_Name "$pkgname") (.confd)} {(DQ ($ VSub_Name "$pkgdir")) (/etc/conf.d/) ($ VSub_Name "$pkgname")} ) (C {(install)} {(-Dm755)} {(DQ ($ VSub_Name "$srcdir")) (/) ($ VSub_Name "$pkgname") (.initd)} {(DQ ($ VSub_Name "$pkgdir")) (/etc/init.d/) ($ VSub_Name "$pkgname")} ) (C {(sed)} {(-i)} {(-e)} { (SQ < "s~# av_scanner = clamd:/tmp/clamd~# av_scanner = clamd:/run/clamav/clamd.sock~" > ) } {(-e)} {(SQ <"/# spamd_address = 127.0.0.1 783/a# spamd_address = 127.0.0.1 11333 variant=rspamd">)} {(DQ ($ VSub_Name "$pkgdir")) (/etc/) ($ VSub_Name "$pkgname") (/) ($ VSub_Name "$pkgname") (.conf) } ) ] spids: [249] ) spids: [245 248] ) (FuncDef name: scripts body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("exim scripts"))} spids: [475] ) ] spids: [475] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:depends) op: Equal rhs: {(DQ ("exim perl"))} spids: [481] ) ] spids: [481] ) (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (AndOr children: [ (C {(make)} {(Lit_VarLike "DESTDIR=") (DQ ($ VSub_Name "$subpkgdir"))} {(Lit_VarLike "INSTALL_ARG=") (DQ ( "exicyclog exim_checkaccess eximstats exiqgrep exigrep exinext exiqsumm exipick exiwhat convert4r3 convert4r4" ) ) } {(install)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(rm)} {(-fr)} {(DQ ($ VSub_Name "$subpkgdir")) (/etc)}) ] spids: [472] ) spids: [468 471] ) (FuncDef name: utils body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("exim utils"))} spids: [538] ) ] spids: [538] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:depends) op:Equal rhs:{(DQ (exim))} spids:[544])] spids: [544] ) (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (AndOr children: [ (C {(make)} {(Lit_VarLike "DESTDIR=") (DQ ($ VSub_Name "$subpkgdir"))} {(Lit_VarLike "INSTALL_ARG=") (DQ ("exim_dbmbuild exim_dumpdb exim_tidydb exim_fixdb exim_lock")) } {(install)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(install)} {(-m755)} {(DQ ($ VSub_Name "$srcdir")) (/exim.gencert)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/sbin/exim_gencert)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(rm)} {(-fr)} {(DQ ($ VSub_Name "$subpkgdir")) (/etc)}) ] spids: [535] ) spids: [531 534] ) (FuncDef name: _mv_ext body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("EXIM extension: ") ($ VSub_Number "$1"))} spids: [622] ) ] spids: [622] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:depends) op: Equal rhs: {(DQ ($ VSub_Name "$pkgname"))} spids: [629] ) ] spids: [629] ) (C {(install)} {(-D)} {(-m755)} {(DQ ($ VSub_Name "$builddir")) (/build-Linux-) (Lit_Other "*") (/lookups/) ($ VSub_Number "$1") (.so) } {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib/) ($ VSub_Name "$pkgname") (/) ($ VSub_Number "$1") (.so)} ) ] spids: [619] ) spids: [615 618] ) (FuncDef name: sqlite body: (BraceGroup children: [(Sentence child:(C {(_mv_ext)} {(sqlite)}) terminator:)] spids: [666] ) spids: [662 665] ) (FuncDef name: mysql body: (BraceGroup children: [(Sentence child:(C {(_mv_ext)} {(mysql)}) terminator:)] spids: [679] ) spids: [675 678] ) (FuncDef name: postgresql body: (BraceGroup children: [(Sentence child:(C {(_mv_ext)} {(pgsql)}) terminator:)] spids: [692] ) spids: [688 691] ) (FuncDef name: cdb body: (BraceGroup children: [(Sentence child:(C {(_mv_ext)} {(cdb)}) terminator:)] spids: [705] ) spids: [701 704] ) (FuncDef name: dbmdb body: (BraceGroup children: [(Sentence child:(C {(_mv_ext)} {(dbmdb)}) terminator:)] spids: [718] ) spids: [714 717] ) (FuncDef name: dnsdb body: (BraceGroup children: [(Sentence child:(C {(_mv_ext)} {(dnsdb)}) terminator:)] spids: [731] ) spids: [727 730] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sha512sums) op: Equal rhs: { (DQ ( "ce5faef3847a5baf1b4fec1ffe46ce7efaafb24e63bcc52a61f38e8312a88eccaa816c3947ba428bef3eed38b1e91e606f6ed07bc0a3e14c6a6ed0ecb41eb9fa exim-4.89.tar.xz\n" ) ( "cffe895974e9f570e2f60583206e0c2865e9ca400636e5ed2117c531fc62b03753f41286565ee253c11610e61589275cb5235b34cae052b5dcc6e5c37fbc7ece CVE-2017-1000369.patch\n" ) ( "e9524d3a2cc230b4ecb3b098f53247121b9582fc7807b1549c5a3fd54bb416b837c4e09476f2e01dca03d590a968c40bf90d4b6a9f8a4abad082fdec91916a0f exim.Makefile\n" ) ( "bb6f5ead067af19ace661cc92bcd428da97570aedd1f9dc5b61a34e7e3fb3e028be6c96d51df73353bdfcaf69a3ee053fb03d245f868d63ebf518aa96ec82d66 exim.confd\n" ) ( "8d0c594c5e3834ddd3a7743c025caf3f5c04f6ac17e25f2278e7a36b726150f0f8e36a1c76cd1a4b454edcb163181ee05ea40a6b61a0e9172c600e4808ccc80f exim.initd\n" ) ( "28e748693a6a72d9943fa9c342ff041fe650fa6977f468dee127e845e6c2a91872ce33fb6f5698838906bde3ed92de7a91cdb0349cedc40b806261867e8c06cb exim.logrotate\n" ) ( "abdaf749ed3947a75b997caa300bf9f27ef82760f1854aa4521a9ac0f322f1655b65a375bc7a709259daea88bf93cfab5289997fa8e376fac9a3477f09bab642 exim.gencert" ) ) } spids: [741] ) ] spids: [741] ) ] )