Added mail-mta/exim-4.92-r2.

This commit is contained in:
László Valkó 2019-07-01 10:05:55 +02:00
parent dd679a94b6
commit ec0008a65f
23 changed files with 1697 additions and 0 deletions

25
mail-mta/exim/Manifest Normal file
View file

@ -0,0 +1,25 @@
AUX auth_conf.sub 790 BLAKE2B 28ad6e3b494396c0bd42e7ac13de9e8e3cbd553f3e78e787925e0c08b6896e479da495b94b511e739cbe31fc3ab3e6948373b566db5c9aeb3cd46cb52109ba31 SHA512 c0799a44e0fabdd4eb33c9c4a009c7abed80d5b2ab773206b11d644e54bb79004c5741fc510df77fe9856bdff979a14f1cf9a58da19fb00aaae05c623da287b3
AUX exim-4.14-tail.patch 446 BLAKE2B 62e46f052c6d958246570c40ed67819f67c4a4ee74fbfe3c82c6f8494ef98ab65089845dd89ffc01516a0c861d9003ade5e4d67476cb34185d27b99cf233dd86 SHA512 a0365b15f0a48076f9660ebc424d48f68995ac21bbf77f407bdca5103ca65758d7f2241d0151eb5c78476557e240b24a95c23d3b12cfffc1b34ab6f89f2c2110
AUX exim-4.20-maildir.patch 478 BLAKE2B 60feb354143a35631c3a71e46410e069d67cb7eab6643e6b2d4f4cfc15b497b96bb8f69a02ec67c3a6294f4d3c1da9e0787ca996f140713a19ecbcacc8ce0d4d SHA512 2c6f68e3c162a51e62ce6e391db8e79733f11bba20cc8778737650158203b88f9a77b7bbbd2a32b2cf8ae50f039b794fb0996f198acec6a50b94cad6a111f432
AUX exim-4.69-r1.27021.patch 1447 BLAKE2B d1f40f68b056ae49cd78408d3dc54a1f4fb1584fec003c68645c8a7245499ef96c1bc3af8aac57d31ee10cb0d4ff2808a50bf35bb36f17df929b2c24abed90e2 SHA512 45a5b833c698da4690485716c7c45d762a9194d5ae41514028bbad548bbd44373cf7a3a3c6a1c4f635f3f50d1695ac7ead098bf8be15cd1f691c7cc6c7f8d715
AUX exim-4.74-localscan_dlopen.patch 9280 BLAKE2B 11e1e9bd4700ba4d897cd585b751cfecbc3a9f2058961ed2ef876e42ff43d98357c35ced65e1866927e11a3d4ae2de5012456aab17f1a66ed20d10ff4054ece5 SHA512 bfd35b8fcc7b8bd50a28b2bb7865d358ed1af3978b057da1c83a0be38ba30a737d983b6b5cf829559ba8c490709d28bdb7d679eb825fe7e24798ec223bedc94e
AUX exim-4.74-radius-db-ENV-clash.patch 667 BLAKE2B 3cc03dd925333774c08484efbb5daadcebc819cc49283205960146f176d225c8952dacb891e1a1be13046bb68e6d6571a732dbbb7d78c6b1758d93f256e41509 SHA512 040bbdb2259df882569a428b7fef03f89c3685428654ac29e93360a4791bdabe66e52d33d14f0822461fac119295bd31aad5998f63d59d4af057bd26b310a568
AUX exim-4.76-crosscompile.patch 462 BLAKE2B de78322f93760cef0d5a768b8be6c723f00d5c7557da6189ffa6ee34215c41ebe8896a2457b2e6a704d05a1730eab09c8cc73e3ba3140954f9ac32423210b612 SHA512 d4fd4417c1ce727f139999c399795312cdbbb9735d0793d68f8e3150240bc53b31277cb26f9946ba549b34c661fc0a61147d376bda09aa6763cab55d80d62343
AUX exim-4.80-spool-mail-group.patch 946 BLAKE2B a3b6783b77823c5a8373623d16b85e2ba209b419b6724f307c46bf961bc5195690453208cdd40e45bc36e5a070892414c7737a97fa04e653e78050c153c59079 SHA512 24f30e9a9d90dc0f1fe8b3db26f8bc2649182b4e78110dc28a9c0f3a3feb7589f923144a4f1c54a1c46ff8cfe40826a1f2212787753be752f4d15a72d54a143b
AUX exim-4.82-makefile-freebsd.patch 1252 BLAKE2B 29c58b487850e28e0b2dfd5bbaa7e8ac341ebc00093a46a9d6b44c8d1c508629f78f646ccd3d022b2acee20d0572320f79acc21c519727f007e11e08623f4fec SHA512 fb440ad3e46b90d4c2e4826841944f4006390ccebee08154a39e46f6854be15edd7d0b028333b41451a0511f886ad3a30cb4b86e7ba8be99f12616a137f09d56
AUX exim-4.89-as-needed-ldflags.patch 6048 BLAKE2B 229dbc384c64a30f620c2965b030f6e6773efca5390ccd67a6a69b5565b0d2d536f0385d8095f92e43e1bc45ab43822efd10cb8aafe2d3cee7d21c0b330e08d1 SHA512 a0ac891c2708afdf8be339a15e6c74d27a19ac87ab63e97de71b5b5d4fab63b898018f7f0ad1dc2e22a86d71c05c1a1b250d598d7622e6172f187ac36e5c3adf
AUX exim-4.92-fix-eval-expansion-32bit.patch 1792 BLAKE2B 81ac3cc505e62c95624b8f55771d7cdce39c882cbcdd553e9cd6263417f31fe7a800dec4386cc4534609fa9b20fc493d2ae6393c8de0d09dd3b3056f3b7da501 SHA512 108e782f1483dcb2d1a34ba226d1829da78fbfb18eddd68def8e693091cf05c8e448c1bcd197fe893dc51996c434f8d9168c131e5ca67125e6362491c5aeeb77
AUX exim-4.92-localscan_dlopen.patch 9483 BLAKE2B 8fe480bbdccfa7388428fcb9aad876bcdcfc33220a529aebfca64e90c62f5a3b5ccf3477586349204f3c0be9ee3bb4d753e18cc24e759f26cf1a427d4f3e77da SHA512 7226ae2ef3d29537241f8c392dcc7522978861f8ad32ca280ec2da2f465f6dad0561ea3ad6a7606f8f6b2e7328704d464c892cd2ddaf0e132bc51f29f8003f4c
AUX exim-submission.socket 161 BLAKE2B 409a5a687897af369a6a2ff0c30564096cc6b308dbc5d0afb6742df44d2aa972e45bad9681d2cb72be9731b260d23fdadb80bae644e7b875af5e34e9c8b8b40f SHA512 4a233761793e3510e9efa5aad3a6098c41b757f13133a7ea825680f2b393aba8d7935f16bf1dd065dde884fe7ba45639a8d398333a7d9bf0a6b72f88c8f2a09d
AUX exim-submission_at.service 360 BLAKE2B 9ebcac1ab0f01a8264141843a4e711d77f634bdd910406bd466a0c197fdad8a9ff4bc31b9b28ef73c810aaff3e549eb60c0a2546507910dfc800da154eb1da00 SHA512 dc28698f15e8eaa4614ae81fc8cb76d92fed1110ce02f7a6ee8feace418dbb194711eb2d4dd444cf818628c11721e21d80b7b974879ab6ddd78cc717cce17c2f
AUX exim.confd 141 BLAKE2B bc200e6121544d17e7feb0e162b5f6a5157647c3323492218da1556a19f3a2febf89a698e157a6dc657540d2f46088a9b1e34700655c715fbeaf0c201bc4aa9f SHA512 cb5e4aa71d3f0b7945e9806064f6a3ab64cb894381654ead40c73a49ae2d1bbb3dc587919952a09b2c81b9fcf8784f73d59c12081cda96a5b7210442f5088998
AUX exim.logrotate 116 BLAKE2B c3689e95e31ccaaaca70e43ff8dbe3e69105da2266e701b57673fa90ee1cdf8c55be0fa2010ad9c10b2fba5443d6303584411bfe56198695995b5491efcfd8de SHA512 24bb8dcfadb1204c2ab0316d57de287b5092754731949390cfb3c88fa6827d45acfe1048cf9e26f615ca0449e8d780d0c98ea55ed61be9d1558755d3e53b9ec8
AUX exim.rc10 1135 BLAKE2B abc7247ee8171069f30f954d9e4275fa85f09f5488a372f9c4f7fd6cf16247dce6bd306d0a8631185cd1afb92ca8919301bf5f21aa3fcac5929a715b9abec510 SHA512 5c7cee6139145983c62df8f5ef6c401d34d2eb7eae3146c28045129ba40868ca4d3d10d4b7056887cf4d4d8a83271592f7fa0a527663f727fa8694b621eb5624
AUX exim.service 229 BLAKE2B 6d6396ef98b8e7c4fcfa28e24223bd58393387abedfb960284dfd1a297d1612deea6b77e2affeca8c5ff6f7db3eb32717893ed0dc1eaf3525e6969520e8589a3 SHA512 a071e9fb74b5fc2fdf0c73ad64ddfbc3954d8f7095d6a363dacf8c75d72a479fbf6821822ec5c8f3846d7687342e1bd447b97f91ca7b0582e5c98008aac30cca
AUX exim.socket 139 BLAKE2B bb8281a98fdac1b52031d5250fd1e658bf5a2c32e24b49ed0daa857d0d32285abf6db23c3d717992c43443ab4bcd97a19ec3811f182200a2d99a48ced6cfb6bc SHA512 db621116907ceb573e6f34581f47c91f751bff593054d7ddc32397b34c7f2405bec184bdb0589d2ac457fa3a61bcba072761e3a6293a99c9c764d2d9fd6069ae
AUX exim_at.service 140 BLAKE2B 8624f4a555e2acdc7aaf917952c4152ad00dc063a51076aefa1d023d47d5f7fe8b268f3308734f363ed9628cd8551ccac7fc369657e0fdf65507d2e6419f704c SHA512 11c8133ee15b3e5193c9b1c59aed66c81b6e045dd23310bede9fcde6c88905db5ef08afdb798b53b75a7465915ea1247e980edf95db07a7f9b7bb58ce95fbb5a
DIST exim-4.92.tar.xz 1767136 BLAKE2B 6c97578807073a782112218c65de460cc94f046d807eddc7330f2f67266c0ef341ded61050a16aca13c88e606a923a9e08033c8bfb618a7ef34b3d2ea6db32ca SHA512 62c327e6184a358ba7f0dbc38b44d2537234be91727a5bfac97e74af64a8d77e376b3221dcfdd8f6eca7d812f9233595503dc6e50e2972bed40a1b74eb209c31
DIST exim-pdf-4.92.tar.xz 2038812 BLAKE2B d5966a27f980a2ceb31293d92049a6691a08262bd20ae7315f41929f0d7a45b5d66c7000f9596b193e74d0c17f91c56a3262602047673c49649f1cad6b216547 SHA512 3a40818025fceaa7ac17f8e7ce06a61e3cf65267c821aea93e1a1a659782b047ab177b88a38c9b2271c0a296e1dc7939e23fe0f89415a11cd45693cb8af10c15
DIST system_filter.exim.gz 3075 BLAKE2B d05e872b5cef377d29126cda03fc0a74c8777b2119b76ff43da6e8de808035eb9bfcb034a85d81824f135d484e864bfc0629fc1af2c228a7277d5ee7cf9cde79 SHA512 cb358d3ce2499a0bb5920d962a06f2af8486e55ec90c8c928bd8e3aefb279aa57f5f960d5adfcef68bd94110b405eaa144e9629cfe6014a529c79c544600bbf3
EBUILD exim-4.92-r2.ebuild 13511 BLAKE2B 53836e205475bc3b2d22afb9d09d9a17a76a7308d6c2ac85d048c28b068f01a530d198f634b30b50f0d455db92bfab5982f4ae6cfeeec38dd85d1f1f202438fd SHA512 258d728ca84c1a0dc62428a6354af50bf5249e3a9299f33fe625a3345361a34d3bac6a7ff72f135a66712b805781ef994858ec0a80069d92c6af30d4504941ee
MISC metadata.xml 2457 BLAKE2B c1dcbaedd069b41c4cfb190806b44014229d53cf6d6f72e04b99dc91f223567cb4f30100792aae72658780da0579fa26e6fb8a0266565bcc0c307996d59ac3ed SHA512 9044abccd15525c7676fc218b62d9b663bd155482894eced9c0cfc8a22e8cd7353009adc75a9f3de15b14f267e6ee6b4f4c91d8bd9260931c0b9de6bf48c762f

View file

@ -0,0 +1,577 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
inherit db-use eutils toolchain-funcs multilib pam systemd
IUSE="arc dane dcc +dkim dlfunc dmarc +dnsdb doc dovecot-sasl dsn elibc_glibc exiscan-acl gnutls idn ipv6 ldap libressl lmtp maildir mbx mysql nis pam perl pkcs11 postgres +prdr proxy radius redis sasl selinux spf sqlite srs ssl syslog tcpd +tpda X"
REQUIRED_USE="
arc? ( dkim spf )
dane? ( ssl !gnutls )
dmarc? ( dkim spf )
gnutls? ( ssl )
pkcs11? ( ssl )
spf? ( exiscan-acl )
srs? ( exiscan-acl )
"
# NOTE on USE="gnutls dane", gnutls[dane] is masked in base, unmasked
# for x86 and amd64 only, due to this, repoman won't allow depending on
# gnutls[dane] for all else. Because we cannot express USE=dane when
# USE=gnutls is in effect only in package.use.mask, the only option we
# have left is to a) ignore the dependency (but that results in bug
# #661164) or b) mask the usage of USE=dane with USE=gnutls. Both are
# incorrect, but b) is the only "correct" view from repoman.
COMM_URI="https://downloads.exim.org/exim4$([[ ${PV} == *_rc* ]] && echo /test)"
DESCRIPTION="A highly configurable, drop-in replacement for sendmail"
SRC_URI="${COMM_URI}/${P//rc/RC}.tar.xz
mirror://gentoo/system_filter.exim.gz
doc? ( ${COMM_URI}/${PN}-pdf-${PV//rc/RC}.tar.xz )"
HOMEPAGE="http://www.exim.org/"
SLOT="0"
LICENSE="GPL-2"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc x86 ~x86-fbsd ~x86-solaris"
COMMON_DEPEND=">=sys-apps/sed-4.0.5
( >=sys-libs/db-3.2:= <sys-libs/db-6:= )
dev-libs/libpcre
idn? ( net-dns/libidn:= net-dns/libidn2:= )
perl? ( dev-lang/perl:= )
pam? ( virtual/pam )
tcpd? ( sys-apps/tcp-wrappers )
ssl? (
!libressl? ( dev-libs/openssl:0= )
libressl? ( dev-libs/libressl:= )
)
gnutls? (
net-libs/gnutls:0=[pkcs11?]
dev-libs/libtasn1
)
ldap? ( >=net-nds/openldap-2.0.7 )
nis? (
elibc_glibc? (
net-libs/libtirpc
>=net-libs/libnsl-1:=
)
)
mysql? ( virtual/libmysqlclient )
postgres? ( dev-db/postgresql:= )
sasl? ( >=dev-libs/cyrus-sasl-2.1.26-r2 )
redis? ( dev-libs/hiredis )
spf? ( >=mail-filter/libspf2-1.2.5-r1 )
dmarc? ( mail-filter/opendmarc )
srs? ( mail-filter/libsrs_alt )
X? (
x11-libs/libX11
x11-libs/libXmu
x11-libs/libXt
x11-libs/libXaw
)
sqlite? ( dev-db/sqlite )
radius? ( net-dialup/freeradius-client )
virtual/libiconv
elibc_glibc? ( net-libs/libnsl )
"
# added X check for #57206
DEPEND="${COMMON_DEPEND}
virtual/pkgconfig"
RDEPEND="${COMMON_DEPEND}
!mail-mta/courier
!mail-mta/esmtp
!mail-mta/mini-qmail
!<mail-mta/msmtp-1.4.19-r1
!>=mail-mta/msmtp-1.4.19-r1[mta]
!mail-mta/netqmail
!mail-mta/nullmailer
!mail-mta/postfix
!mail-mta/qmail-ldap
!mail-mta/sendmail
!mail-mta/opensmtpd
!<mail-mta/ssmtp-2.64-r2
!>=mail-mta/ssmtp-2.64-r2[mta]
!net-mail/mailwrapper
>=net-mail/mailbase-0.00-r5
virtual/logger
dcc? ( mail-filter/dcc )
selinux? ( sec-policy/selinux-exim )
"
S=${WORKDIR}/${P//rc/RC}
src_prepare() {
epatch "${FILESDIR}"/exim-4.14-tail.patch
epatch "${FILESDIR}"/exim-4.92-localscan_dlopen.patch
epatch "${FILESDIR}"/exim-4.69-r1.27021.patch
epatch "${FILESDIR}"/exim-4.74-radius-db-ENV-clash.patch # 287426
epatch "${FILESDIR}"/exim-4.82-makefile-freebsd.patch # 235785
epatch "${FILESDIR}"/exim-4.89-as-needed-ldflags.patch # 352265, 391279
epatch "${FILESDIR}"/exim-4.76-crosscompile.patch # 266591
epatch "${FILESDIR}"/exim-4.92-fix-eval-expansion-32bit.patch #687554
if use maildir ; then
epatch "${FILESDIR}"/exim-4.20-maildir.patch
else
epatch "${FILESDIR}"/exim-4.80-spool-mail-group.patch # 438606
fi
eapply_user
# user Exim believes it should be
MAILUSER=mail
MAILGROUP=mail
if use prefix && [[ ${EUID} != 0 ]] ; then
MAILUSER=$(id -un)
MAILGROUP=$(id -gn)
fi
}
src_configure() {
# general config and paths
local aliases="${EPREFIX}/etc/mail/aliases"
sed -i \
-e "/SYSTEM_ALIASES_FILE/s'SYSTEM_ALIASES_FILE'${aliases}'" \
src/configure.default || die
sed -i -e 's/^buildname=.*/buildname=exim-gentoo/' Makefile || die
if use elibc_musl; then
sed -i -e 's/^LIBS = -lnsl/LIBS =/g' OS/Makefile-Linux || die
fi
local conffile="${EPREFIX}/etc/exim/exim.conf"
sed -e "48i\CFLAGS=${CFLAGS}" \
-e "s:BIN_DIRECTORY=/usr/exim/bin:BIN_DIRECTORY=${EPREFIX}/usr/sbin:" \
-e "s:EXIM_USER=:EXIM_USER=${MAILUSER}:" \
-e "s:CONFIGURE_FILE=.*$:CONFIGURE_FILE=${conffile}:" \
-e "s:ZCAT_COMMAND=.*$:ZCAT_COMMAND=${EPREFIX}/bin/zcat:" \
-e "s:COMPRESS_COMMAND=.*$:COMPRESS_COMMAND=${EPREFIX}/bin/gzip:" \
src/EDITME > Local/Makefile || die
# work on Local/Makefile from now on
cd Local
cat >> Makefile <<- EOC
INFO_DIRECTORY=${EPREFIX}/usr/share/info
PID_FILE_PATH=${EPREFIX}/run/exim.pid
SPOOL_DIRECTORY=${EPREFIX}/var/spool/exim
HAVE_ICONV=yes
EOC
# if we use libiconv, now is the time to tell so
use !elibc_glibc && use !elibc_musl && \
echo "EXTRALIBS_EXIM=-liconv" >> Makefile
# support for IPv6
if use ipv6; then
cat >> Makefile <<- EOC
HAVE_IPV6=YES
EOC
fi
# support i18n/IDNA
if use idn; then
cat >> Makefile <<- EOC
SUPPORT_I18N=yes
SUPPORT_I18N_2008=yes
EXTRALIBS_EXIM += -lidn -lidn2
EOC
fi
#
# mail storage formats
#
# mailstore is Exim's traditional storage format
cat >> Makefile <<- EOC
SUPPORT_MAILSTORE=yes
EOC
# mbox
if use mbx; then
cat >> Makefile <<- EOC
SUPPORT_MBX=yes
EOC
fi
# maildir
if use maildir; then
cat >> Makefile <<- EOC
SUPPORT_MAILDIR=yes
EOC
fi
#
# lookup methods
# use the "native" interfaces to the DBM and CDB libraries, support
# passwd and directory lookups by default
local DB_VERS="5.3 5.1 4.8 4.7 4.6 4.5 4.4 4.3 4.2 3.2"
cat >> Makefile <<- EOC
USE_DB=yes
CFLAGS+=-I$(db_includedir ${DB_VERS})
DBMLIB=-l$(db_libname ${DB_VERS})
LOOKUP_CDB=yes
LOOKUP_PASSWD=yes
LOOKUP_DSEARCH=yes
EOC
if ! use dnsdb; then
# DNSDB lookup is enabled by default
sed -i -e 's:^LOOKUP_DNSDB=yes:# LOOKUP_DNSDB=yes:' Makefile || die
fi
if use ldap; then
cat >> Makefile <<- EOC
LOOKUP_LDAP=yes
LDAP_LIB_TYPE=OPENLDAP2
LOOKUP_INCLUDE += -I"${EPREFIX}"/usr/include/ldap
LOOKUP_LIBS += -lldap -llber
EOC
fi
if use mysql; then
cat >> Makefile <<- EOC
LOOKUP_MYSQL=yes
LOOKUP_INCLUDE += $(mysql_config --include)
LOOKUP_LIBS += $(mysql_config --libs)
EOC
fi
if use nis; then
cat >> Makefile <<- EOC
LOOKUP_NIS=yes
LOOKUP_NISPLUS=yes
EOC
if use elibc_glibc ; then
cat >> Makefile <<- EOC
CFLAGS += -I"${EPREFIX}"/usr/include/tirpc
EOC
fi
fi
if use postgres; then
cat >> Makefile <<- EOC
LOOKUP_PGSQL=yes
LOOKUP_INCLUDE += -I$(pg_config --includedir)
LOOKUP_LIBS += -L$(pg_config --libdir) -lpq
EOC
fi
if use sqlite; then
cat >> Makefile <<- EOC
LOOKUP_SQLITE=yes
LOOKUP_SQLITE_PC=sqlite3
EOC
fi
if use redis; then
cat >> Makefile <<- EOC
LOOKUP_REDIS=yes
LOOKUP_LIBS += -lhiredis
EOC
fi
# Exim monitor, enabled by default, controlled via X USE-flag,
# disable if not requested, bug #46778
if use X; then
cp ../exim_monitor/EDITME eximon.conf || die
else
sed -i -e '/^EXIM_MONITOR=/s/^/# /' Makefile || die
fi
#
# features
#
# content scanning support
if use exiscan-acl; then
cat >> Makefile <<- EOC
WITH_CONTENT_SCAN=yes
EOC
fi
# DomainKeys Identified Mail, RFC4871
if ! use dkim; then
# DKIM is enabled by default
cat >> Makefile <<- EOC
DISABLE_DKIM=yes
EOC
fi
# Per-Recipient-Data-Response
if ! use prdr; then
# PRDR is enabled by default
cat >> Makefile <<- EOC
DISABLE_PRDR=yes
EOC
fi
# Transport post-delivery actions
if use !tpda && use !dane; then
# EVENT is enabled by default
cat >> Makefile <<- EOC
DISABLE_EVENT=yes
EOC
fi
# log to syslog
if use syslog; then
local eximlog="${EPREFIX}/var/log/exim/exim_%s.log"
sed -i \
-e "s:LOG_FILE_PATH=${eximlog}:LOG_FILE_PATH=syslog:" \
Makefile || die
cat >> Makefile <<- EOC
LOG_FILE_PATH=syslog
EOC
else
cat >> Makefile <<- EOC
LOG_FILE_PATH=${EPREFIX}/var/log/exim/exim_%s.log
EOC
fi
# starttls support (ssl)
if use ssl; then
echo "SUPPORT_TLS=yes" >> Makefile
if use gnutls; then
echo "USE_GNUTLS=yes" >> Makefile
echo "USE_GNUTLS_PC=gnutls" >> Makefile
use pkcs11 || echo "AVOID_GNUTLS_PKCS11=yes" >> Makefile
else
echo "USE_OPENSSL_PC=openssl" >> Makefile
fi
fi
# TCP wrappers
if use tcpd; then
cat >> Makefile <<- EOC
USE_TCP_WRAPPERS=yes
EXTRALIBS_EXIM += -lwrap
EOC
fi
# Light Mail Transport Protocol
if use lmtp; then
cat >> Makefile <<- EOC
TRANSPORT_LMTP=yes
EOC
fi
# embedded Perl
if use perl; then
cat >> Makefile <<- EOC
EXIM_PERL=perl.o
EOC
fi
# dlfunc
if use dlfunc; then
cat >> Makefile <<- EOC
EXPAND_DLFUNC=yes
HAVE_LOCAL_SCAN=yes
DLOPEN_LOCAL_SCAN=yes
EOC
fi
# Proxy Protocol
if use proxy; then
cat >> Makefile <<- EOC
SUPPORT_PROXY=yes
EOC
fi
# DANE
if use dane; then
cat >> Makefile <<- EOC
SUPPORT_DANE=yes
EOC
fi
# Sender Policy Framework
if use spf; then
cat >> Makefile <<- EOC
SUPPORT_SPF=yes
EXTRALIBS_EXIM += -lspf2
EOC
fi
#
# experimental features
#
# Authenticated Receive Chain
if use arc; then
echo "EXPERIMENTAL_ARC=yes">> Makefile
fi
# Distributed Checksum Clearinghouse
if use dcc; then
echo "EXPERIMENTAL_DCC=yes">> Makefile
fi
# Sender Rewriting Scheme
if use srs; then
cat >> Makefile <<- EOC
EXPERIMENTAL_SRS=yes
EXTRALIBS_EXIM += -lsrs_alt
EOC
fi
# DMARC
if use dmarc; then
cat >> Makefile <<- EOC
EXPERIMENTAL_DMARC=yes
EXTRALIBS_EXIM += -lopendmarc
EOC
fi
# Delivery Sender Notifications extra information in fail message
if use dsn; then
cat >> Makefile <<- EOC
EXPERIMENTAL_DSN_INFO=yes
EOC
fi
#
# authentication (SMTP AUTH)
#
# standard bits
cat >> Makefile <<- EOC
AUTH_SPA=yes
AUTH_CRAM_MD5=yes
AUTH_PLAINTEXT=yes
EOC
# Cyrus SASL
if use sasl; then
cat >> Makefile <<- EOC
CYRUS_SASLAUTHD_SOCKET=${EPREFIX}/run/saslauthd/mux
AUTH_CYRUS_SASL=yes
AUTH_LIBS += -lsasl2
EOC
fi
# Dovecot
if use dovecot-sasl; then
cat >> Makefile <<- EOC
AUTH_DOVECOT=yes
EOC
fi
# Pluggable Authentication Modules
if use pam; then
cat >> Makefile <<- EOC
SUPPORT_PAM=yes
AUTH_LIBS += -lpam
EOC
fi
# Radius
if use radius; then
cat >> Makefile <<- EOC
RADIUS_CONFIG_FILE=${EPREFIX}/etc/radiusclient/radiusclient.conf
RADIUS_LIB_TYPE=RADIUSCLIENTNEW
AUTH_LIBS += -lfreeradius-client
EOC
fi
}
src_compile() {
emake CC="$(tc-getCC)" HOSTCC="$(tc-getCC $CBUILD)" \
AR="$(tc-getAR) cq" RANLIB="$(tc-getRANLIB)" FULLECHO='' \
|| die "make failed"
}
src_install () {
cd "${S}"/build-exim-gentoo || die
dosbin exim
if use X; then
dosbin eximon.bin
dosbin eximon
fi
fperms 4755 /usr/sbin/exim
dosym exim /usr/sbin/sendmail
dosym exim /usr/sbin/rsmtp
dosym exim /usr/sbin/rmail
dosym ../sbin/exim /usr/bin/mailq
dosym ../sbin/exim /usr/bin/newaliases
dosym ../sbin/sendmail /usr/lib/sendmail
for i in exicyclog exim_dbmbuild exim_dumpdb exim_fixdb exim_lock \
exim_tidydb exinext exiwhat exigrep eximstats exiqsumm exiqgrep \
convert4r3 convert4r4 exipick
do
dosbin $i
done
dodoc "${S}"/doc/*
doman "${S}"/doc/exim.8
use dsn && dodoc "${S}"/README.DSN
use doc && dodoc "${WORKDIR}"/${PN}-pdf-${PV//rc/RC}/doc/*.pdf
# conf files
insinto /etc/exim
newins "${S}"/src/configure.default exim.conf.dist
if use exiscan-acl; then
newins "${S}"/src/configure.default exim.conf.exiscan-acl
fi
doins "${WORKDIR}"/system_filter.exim
doins "${FILESDIR}"/auth_conf.sub
pamd_mimic system-auth exim auth account
# headers, #436406
if use dlfunc ; then
# fixup includes so they actually can be found when including
sed -i \
-e '/#include "\(config\|store\|mytypes\).h"/s:"\(.\+\)":<exim/\1>:' \
local_scan.h || die
insinto /usr/include/exim
doins {config,local_scan}.h ../src/{mytypes,store}.h
fi
insinto /etc/logrotate.d
newins "${FILESDIR}/exim.logrotate" exim
newinitd "${FILESDIR}"/exim.rc10 exim
newconfd "${FILESDIR}"/exim.confd exim
systemd_dounit \
"${FILESDIR}"/{exim.service,exim.socket,exim-submission.socket}
systemd_newunit \
"${FILESDIR}"/exim_at.service 'exim@.service'
systemd_newunit \
"${FILESDIR}"/exim-submission_at.service 'exim-submission@.service'
diropts -m 0750 -o ${MAILUSER} -g ${MAILGROUP}
keepdir /var/log/${PN}
}
pkg_postinst() {
if [[ ! -f ${EROOT}etc/exim/exim.conf ]] ; then
einfo "${EROOT}etc/exim/system_filter.exim is a sample system_filter."
einfo "${EROOT}etc/exim/auth_conf.sub contains the configuration sub"
einfo "for using smtp auth."
einfo "Please create ${EROOT}etc/exim/exim.conf from"
einfo " ${EROOT}etc/exim/exim.conf.dist."
fi
if use dcc ; then
einfo "DCC support is experimental, you can find some limited"
einfo "documentation at the bottom of this prerelease message:"
einfo "http://article.gmane.org/gmane.mail.exim.devel/3579"
fi
use srs && einfo "SRS support is experimental"
if use dmarc ; then
einfo "DMARC support is experimental. See global settings to"
einfo "configure DMARC, for usage see the documentation at "
einfo "experimental-spec.txt."
fi
use dsn && einfo "extra information in fail DSN message is experimental"
elog "The obsolete acl condition 'demime' is removed, the replacements"
elog "are the ACLs acl_smtp_mime and acl_not_smtp_mime"
}

View file

@ -0,0 +1,25 @@
######################################################################
# AUTHENTICATION CONFIGURATION #
######################################################################
# If you're using PAM to authenticate, lifes real simple.
# This plain directive works for nearly everything except windows MUA's the
# login directive will allow you to authenticate your Outlook 2000 and
# outlook express clients.
plain:
driver = plaintext
public_name = PLAIN
server_condition = "${if pam{$2:$3}{1}{0}}"
server_set_id = $2
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = "${if pam{$1:${sg{$2}{:}{::}}}{1}{0}}"
server_set_id = $1
#
# FIXME
# Need to add authenticator for SPA!!

View file

@ -0,0 +1,11 @@
--- scripts/Configure-config.h.orig 2003-07-17 18:01:19.000000000 -0400
+++ scripts/Configure-config.h 2003-07-17 18:01:25.000000000 -0400
@@ -41,7 +41,7 @@
# Double-check that config.h is complete.
-if [ "`tail -1 config.h`" != "/* End of config.h */" ] ; then
+if [ "`tail -n 1 config.h`" != "/* End of config.h */" ] ; then
echo "*** config.h appears to be incomplete"
echo "*** unexpected failure in buildconfig program"
exit 1

View file

@ -0,0 +1,14 @@
diff -urN ./exim-4.20.orig/src/configure.default exim-4.20/src/configure.default
--- ./exim-4.20.orig/src/configure.default 2003-06-27 16:48:22.000000000 -0700
+++ exim-4.20/src/configure.default 2003-06-27 16:52:20.000000000 -0700
@@ -451,7 +451,9 @@
local_delivery:
driver = appendfile
- file = /var/mail/$local_part
+# file = /var/mail/$local_part
+ directory = /home/$local_part/.maildir
+ maildir_format
delivery_date_add
envelope_to_add
return_path_add

View file

@ -0,0 +1,48 @@
diff -urN exim-4.69.orig/src/configure.default exim-4.69/src/configure.default
--- exim-4.69.orig/src/configure.default 2008-05-05 10:17:44.000000000 +0100
+++ exim-4.69/src/configure.default 2008-05-05 10:18:26.000000000 +0100
@@ -592,6 +592,22 @@
pipe_transport = address_pipe
reply_transport = address_reply
+# This router runs procmail if users have a .procmailrc file
+procmail:
+ check_local_user
+ driver = accept
+ transport = procmail_pipe
+ require_files = ${local_part}:+${home}:+${home}/.procmailrc:+/usr/bin/procmail
+ no_verify
+
+# This router runs maildrop if users have a .mailfilter file
+maildrop:
+ check_local_user
+ driver = accept
+ transport = maildrop_pipe
+ require_files = ${local_part}:+${home}:+${home}/.mailfilter:+/usr/bin/maildrop
+ no_verify
+
# This router matches local user mailboxes. If the router fails, the error
# message is "Unknown user".
@@ -676,6 +692,21 @@
address_reply:
driver = autoreply
+# This transport is used for procmail
+procmail_pipe:
+ driver = pipe
+ command = "/usr/bin/procmail -d ${local_part}"
+ return_path_add
+ delivery_date_add
+ envelope_to_add
+
+# This transport is used for courier-maildrop filtering (Maildir filter system)
+maildrop_pipe:
+ driver = pipe
+ command = "/usr/bin/maildrop -d ${local_part}"
+ return_path_add
+ delivery_date_add
+ envelope_to_add
######################################################################

View file

@ -0,0 +1,262 @@
diff -Naur exim-4.32/src/EDITME exim-4.32-dlopen/src/EDITME
--- src/EDITME 2004-04-15 08:27:01.000000000 +0000
+++ src/EDITME 2004-05-06 16:15:47.000000000 +0000
@@ -505,6 +505,24 @@
#------------------------------------------------------------------------------
+# On systems which support dynamic loading of shared libraries, Exim can
+# load a local_scan function specified in its config file instead of having
+# to be recompiled with the desired local_scan function. For a full
+# description of the API to this function, see the Exim specification.
+
+DLOPEN_LOCAL_SCAN=yes
+
+# If you set DLOPEN_LOCAL_SCAN, then you need to include -rdynamic in the
+# linker flags. Without it, the loaded .so won't be able to access any
+# functions from exim.
+
+LFLAGS = -rdynamic
+ifeq ($(OSTYPE),Linux)
+LFLAGS += -ldl
+endif
+
+
+#------------------------------------------------------------------------------
# The default distribution of Exim contains only the plain text form of the
# documentation. Other forms are available separately. If you want to install
# the documentation in "info" format, first fetch the Texinfo documentation
diff -Naur exim-4.32/src/config.h.defaults exim-4.32-dlopen/src/config.h.defaults
--- src/config.h.defaults 2004-04-15 08:27:01.000000000 +0000
+++ src/config.h.defaults 2004-05-06 16:16:30.000000000 +0000
@@ -20,6 +20,8 @@
#define AUTH_PLAINTEXT
#define AUTH_SPA
+#define DLOPEN_LOCAL_SCAN
+
#define BIN_DIRECTORY
#define CONFIGURE_FILE
diff -Naur exim-4.32/src/globals.c exim-4.32-dlopen/src/globals.c
--- src/globals.c 2004-04-15 08:27:01.000000000 +0000
+++ src/globals.c 2004-05-06 16:17:07.000000000 +0000
@@ -109,6 +109,10 @@
uschar *tls_verify_hosts = NULL;
#endif
+#ifdef DLOPEN_LOCAL_SCAN
+uschar *local_scan_path = NULL;
+#endif
+
/* Input-reading functions for messages, so we can use special ones for
incoming TCP/IP. The defaults use stdin. We never need these for any
diff -Naur exim-4.32/src/globals.h exim-4.32-dlopen/src/globals.h
--- src/globals.h 2004-04-15 08:27:01.000000000 +0000
+++ src/globals.h 2004-05-06 16:17:50.000000000 +0000
@@ -73,6 +73,9 @@
extern uschar *tls_verify_hosts; /* Mandatory client verification */
#endif
+#ifdef DLOPEN_LOCAL_SCAN
+extern uschar *local_scan_path; /* Path to local_scan() library */
+#endif
/* Input-reading functions for messages, so we can use special ones for
incoming TCP/IP. */
diff -Naur exim-4.32/src/local_scan.c exim-4.32-dlopen/src/local_scan.c
--- src/local_scan.c 2004-04-15 08:27:01.000000000 +0000
+++ src/local_scan.c 2004-05-06 16:21:57.000000000 +0000
@@ -5,60 +5,131 @@
/* Copyright (c) University of Cambridge 1995 - 2004 */
/* See the file NOTICE for conditions of use and distribution. */
+#include "exim.h"
-/******************************************************************************
-This file contains a template local_scan() function that just returns ACCEPT.
-If you want to implement your own version, you should copy this file to, say
-Local/local_scan.c, and edit the copy. To use your version instead of the
-default, you must set
-
-LOCAL_SCAN_SOURCE=Local/local_scan.c
-
-in your Local/Makefile. This makes it easy to copy your version for use with
-subsequent Exim releases.
-
-For a full description of the API to this function, see the Exim specification.
-******************************************************************************/
-
-
-/* This is the only Exim header that you should include. The effect of
-including any other Exim header is not defined, and may change from release to
-release. Use only the documented interface! */
-
-#include "local_scan.h"
-
-
-/* This is a "do-nothing" version of a local_scan() function. The arguments
-are:
-
- fd The file descriptor of the open -D file, which contains the
- body of the message. The file is open for reading and
- writing, but modifying it is dangerous and not recommended.
-
- return_text A pointer to an unsigned char* variable which you can set in
- order to return a text string. It is initialized to NULL.
-
-The return values of this function are:
-
- LOCAL_SCAN_ACCEPT
- The message is to be accepted. The return_text argument is
- saved in $local_scan_data.
-
- LOCAL_SCAN_REJECT
- The message is to be rejected. The returned text is used
- in the rejection message.
-
- LOCAL_SCAN_TEMPREJECT
- This specifies a temporary rejection. The returned text
- is used in the rejection message.
-*/
+#ifdef DLOPEN_LOCAL_SCAN
+#include <dlfcn.h>
+static int (*local_scan_fn)(int fd, uschar **return_text) = NULL;
+static int load_local_scan_library(void);
+#endif
int
local_scan(int fd, uschar **return_text)
{
fd = fd; /* Keep picky compilers happy */
return_text = return_text;
-return LOCAL_SCAN_ACCEPT;
+#ifdef DLOPEN_LOCAL_SCAN
+/* local_scan_path is defined AND not the empty string */
+if (local_scan_path && *local_scan_path)
+ {
+ if (!local_scan_fn)
+ {
+ if (!load_local_scan_library())
+ {
+ char *base_msg , *error_msg , *final_msg ;
+ int final_length = -1 ;
+
+ base_msg=US"Local configuration error - local_scan() library failure\n";
+ error_msg = dlerror() ;
+
+ final_length = strlen(base_msg) + strlen(error_msg) + 1 ;
+ final_msg = (char*)malloc( final_length*sizeof(char) ) ;
+ *final_msg = '\0' ;
+
+ strcat( final_msg , base_msg ) ;
+ strcat( final_msg , error_msg ) ;
+
+ *return_text = final_msg ;
+ return LOCAL_SCAN_TEMPREJECT;
+ }
+ }
+ return local_scan_fn(fd, return_text);
+ }
+else
+#endif
+ return LOCAL_SCAN_ACCEPT;
+}
+
+#ifdef DLOPEN_LOCAL_SCAN
+
+static int load_local_scan_library(void)
+{
+/* No point in keeping local_scan_lib since we'll never dlclose() anyway */
+void *local_scan_lib = NULL;
+int (*local_scan_version_fn)(void);
+int vers_maj;
+int vers_min;
+
+local_scan_lib = dlopen(local_scan_path, RTLD_NOW);
+if (!local_scan_lib)
+ {
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library open failed - "
+ "message temporarily rejected");
+ return FALSE;
+ }
+
+local_scan_version_fn = dlsym(local_scan_lib, "local_scan_version_major");
+if (!local_scan_version_fn)
+ {
+ dlclose(local_scan_lib);
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain "
+ "local_scan_version_major() function - message temporarily rejected");
+ return FALSE;
+ }
+
+/* The major number is increased when the ABI is changed in a non
+ backward compatible way. */
+vers_maj = local_scan_version_fn();
+
+local_scan_version_fn = dlsym(local_scan_lib, "local_scan_version_minor");
+if (!local_scan_version_fn)
+ {
+ dlclose(local_scan_lib);
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain "
+ "local_scan_version_minor() function - message temporarily rejected");
+ return FALSE;
+ }
+
+/* The minor number is increased each time a new feature is added (in a
+ way that doesn't break backward compatibility) -- Marc */
+vers_min = local_scan_version_fn();
+
+
+if (vers_maj != LOCAL_SCAN_ABI_VERSION_MAJOR)
+ {
+ dlclose(local_scan_lib);
+ local_scan_lib = NULL;
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() has an incompatible major"
+ "version number, you need to recompile your module for this version"
+ "of exim (The module was compiled for version %d.%d and this exim provides"
+ "ABI version %d.%d)", vers_maj, vers_min, LOCAL_SCAN_ABI_VERSION_MAJOR,
+ LOCAL_SCAN_ABI_VERSION_MINOR);
+ return FALSE;
+ }
+else if (vers_min > LOCAL_SCAN_ABI_VERSION_MINOR)
+ {
+ dlclose(local_scan_lib);
+ local_scan_lib = NULL;
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() has an incompatible minor"
+ "version number, you need to recompile your module for this version"
+ "of exim (The module was compiled for version %d.%d and this exim provides"
+ "ABI version %d.%d)", vers_maj, vers_min, LOCAL_SCAN_ABI_VERSION_MAJOR,
+ LOCAL_SCAN_ABI_VERSION_MINOR);
+ return FALSE;
+ }
+
+local_scan_fn = dlsym(local_scan_lib, "local_scan");
+if (!local_scan_fn)
+ {
+ dlclose(local_scan_lib);
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain "
+ "local_scan() function - message temporarily rejected");
+ return FALSE;
+ }
+
+return TRUE;
}
+#endif /* DLOPEN_LOCAL_SCAN */
+
/* End of local_scan.c */
diff -Naur exim-4.32/src/readconf.c exim-4.32-dlopen/src/readconf.c
--- src/readconf.c 2004-04-15 08:27:01.000000000 +0000
+++ src/readconf.c 2004-05-06 16:23:12.000000000 +0000
@@ -223,6 +223,9 @@
{ "local_from_prefix", opt_stringptr, &local_from_prefix },
{ "local_from_suffix", opt_stringptr, &local_from_suffix },
{ "local_interfaces", opt_stringptr, &local_interfaces },
+#ifdef DLOPEN_LOCAL_SCAN
+ { "local_scan_path", opt_stringptr, &local_scan_path },
+#endif
{ "local_scan_timeout", opt_time, &local_scan_timeout },
{ "local_sender_retain", opt_bool, &local_sender_retain },
{ "localhost_number", opt_stringptr, &host_number_string },

View file

@ -0,0 +1,22 @@
Nasty workaround for
http://bugs.gentoo.org/show_bug.cgi?id=287426
--- src/auths/call_radius.c
+++ src/auths/call_radius.c
@@ -10,6 +10,16 @@
/* This file was originally supplied by Ian Kirk. The libradius support came
from Alex Kiernan. */
+/* ugly hack to work around redefinition of ENV by radiusclient.h and
+ * db.h: define _DB_H_ so the db.h include thinks it's already included,
+ * we can get away with it like this, since this file doesn't use any db
+ * functions. */
+#ifndef _DB_H_
+#define _DB_H_ 1
+#define _DB_EXT_PROT_IN_ 1
+#define DB void
+#endif
+
#include "../exim.h"
/* This module contains functions that call the Radius authentication

View file

@ -0,0 +1,15 @@
https://bugs.gentoo.org/show_bug.cgi?id=266591
--- OS/Makefile-Base
+++ OS/Makefile-Base
@@ -114,8 +114,8 @@
# Targets for special-purpose configuration header builders
buildconfig: buildconfig.c
- @echo "$(CC) buildconfig.c"
- $(FE)$(CC) $(CFLAGS) $(INCLUDE) -o buildconfig buildconfig.c $(LIBS)
+ @echo "$(HOSTCC) buildconfig.c"
+ $(FE)$(HOSTCC) $(HOSTCFLAGS) $(INCLUDE) -o buildconfig buildconfig.c $(LIBS)
# Target for the exicyclog utility script

View file

@ -0,0 +1,27 @@
Change default such that we run on a stock Gentoo system. Bug #438606
--- src/configure.default
+++ src/configure.default
@@ -674,8 +674,9 @@
# BSD mailbox format. By default it will be run under the uid and gid of the
# local user, and requires the sticky bit to be set on the /var/mail directory.
# Some systems use the alternative approach of running mail deliveries under a
-# particular group instead of using the sticky bit. The commented options below
-# show how this can be done.
+# particular group instead of using the sticky bit. This is also the
+# default case on Gentoo, therefore group and mode are set below.
+# Comment them out, to get the default behaviour.
local_delivery:
driver = appendfile
@@ -683,8 +684,8 @@
delivery_date_add
envelope_to_add
return_path_add
-# group = mail
-# mode = 0660
+ group = mail
+ mode = 0660
# This transport is used for handling pipe deliveries generated by alias or

View file

@ -0,0 +1,45 @@
--- OS/Makefile-FreeBSD.orig 2013-09-30 19:59:09.000000000 +0200
+++ OS/Makefile-FreeBSD 2013-09-30 20:01:22.000000000 +0200
@@ -1,10 +1,8 @@
-# Exim: OS-specific make file for FreeBSD
-# There's no setting of CFLAGS here, to allow the system default
-# for "make" to be the default.
-
-CHOWN_COMMAND=/usr/sbin/chown
-STRIP_COMMAND=/usr/bin/strip
-CHMOD_COMMAND=/bin/chmod
+# Exim: OS-specific FreeBSD make file, modified for Gentoo Prefix
+
+CHOWN_COMMAND=look_for_it
+STRIP_COMMAND=
+CHMOD_COMMAND=look_for_it
HAVE_SA_LEN=YES
@@ -15,17 +13,9 @@
CFLAGS_DYNAMIC=-shared -rdynamic -fPIC
# FreeBSD always ships with Berkeley DB
+DBMLIB = -ldb
USE_DB=yes
-# This code for building outside ports suggested by Richard Clayton
-.ifdef X11BASE
-X11=${X11BASE}
-.elifdef LOCALBASE
-X11=$(LOCALBASE)
-.else
-X11=/usr/local
-.endif
-
# nb: FreeBSD is entirely elf; objformat was removed prior to FreeBSD 7
# http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/objformat/Attic/objformat.c
# deleted Jan 2007.
@@ -37,6 +27,7 @@
# switch to default to ELF came with FreeBSD 3. elf(5) claims ELF support
# introduced in FreeBSD 2.2.6.
#
+X11=/usr/X11R6
XINCLUDE=-I$(X11)/include
XLFLAGS=-L$(X11)/lib -Wl,-rpath,${X11}/lib
X11_LD_LIB=$(X11)/lib

View file

@ -0,0 +1,145 @@
https://bugs.gentoo.org/show_bug.cgi?id=352265
Make sure LDFLAGS comes first, such that all libraries are considered,
and not discarded when --as-needed is in effect.
https://bugs.gentoo.org/show_bug.cgi?id=391279
Use LDFLAGS for all targets, not just the exim binary, such that
--as-needed works as well.
--- OS/Makefile-Base
+++ OS/Makefile-Base
@@ -346,12 +346,12 @@
buildrouters buildtransports \
$(OBJ_EXIM) version.o
@echo "$(LNCC) -o exim"
- $(FE)$(PURIFY) $(LNCC) -o exim $(LFLAGS) $(OBJ_EXIM) version.o \
+ $(FE)$(PURIFY) $(LNCC) -o exim $(LDFLAGS) $(OBJ_EXIM) version.o \
routers/routers.a transports/transports.a lookups/lookups.a \
auths/auths.a pdkim/pdkim.a \
$(LIBRESOLV) $(LIBS) $(LIBS_EXIM) $(IPV6_LIBS) $(EXTRALIBS) \
$(EXTRALIBS_EXIM) $(DBMLIB) $(LOOKUP_LIBS) $(AUTH_LIBS) \
- $(PERL_LIBS) $(TLS_LIBS) $(PCRE_LIBS) $(LDFLAGS)
+ $(PERL_LIBS) $(TLS_LIBS) $(PCRE_LIBS) $(LFLAGS)
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
echo $(STRIP_COMMAND) exim; \
$(STRIP_COMMAND) exim; \
@@ -367,8 +367,8 @@
exim_dumpdb: $(OBJ_DUMPDB)
@echo "$(LNCC) -o exim_dumpdb"
- $(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_dumpdb $(LFLAGS) $(OBJ_DUMPDB) \
- $(LIBS) $(EXTRALIBS) $(DBMLIB)
+ $(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_dumpdb $(LDFLAGS) $(OBJ_DUMPDB) \
+ $(LIBS) $(EXTRALIBS) $(DBMLIB) $(LFLAGS)
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
echo $(STRIP_COMMAND) exim_dumpdb; \
$(STRIP_COMMAND) exim_dumpdb; \
@@ -382,8 +382,8 @@
exim_fixdb: $(OBJ_FIXDB) buildauths
@echo "$(LNCC) -o exim_fixdb"
- $(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_fixdb $(LFLAGS) $(OBJ_FIXDB) \
- auths/auths.a $(LIBS) $(EXTRALIBS) $(DBMLIB)
+ $(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_fixdb $(LDFLAGS) $(OBJ_FIXDB) \
+ auths/auths.a $(LIBS) $(EXTRALIBS) $(DBMLIB) $(LFLAGS)
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
echo $(STRIP_COMMAND) exim_fixdb; \
$(STRIP_COMMAND) exim_fixdb; \
@@ -397,8 +397,8 @@
exim_tidydb: $(OBJ_TIDYDB)
@echo "$(LNCC) -o exim_tidydb"
- $(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_tidydb $(LFLAGS) $(OBJ_TIDYDB) \
- $(LIBS) $(EXTRALIBS) $(DBMLIB)
+ $(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_tidydb $(LDFLAGS) $(OBJ_TIDYDB) \
+ $(LIBS) $(EXTRALIBS) $(DBMLIB) $(LFLAGS)
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
echo $(STRIP_COMMAND) exim_tidydb; \
$(STRIP_COMMAND) exim_tidydb; \
@@ -410,8 +410,8 @@
exim_dbmbuild: exim_dbmbuild.o
@echo "$(LNCC) -o exim_dbmbuild"
- $(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_dbmbuild $(LFLAGS) exim_dbmbuild.o \
- $(LIBS) $(EXTRALIBS) $(DBMLIB)
+ $(FE)$(LNCC) $(CFLAGS) $(INCLUDE) -o exim_dbmbuild $(LDFLAGS) exim_dbmbuild.o \
+ $(LIBS) $(EXTRALIBS) $(DBMLIB) $(LFLAGS)
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
echo $(STRIP_COMMAND) exim_dbmbuild; \
$(STRIP_COMMAND) exim_dbmbuild; \
@@ -425,8 +425,8 @@
@echo "$(CC) exim_lock.c"
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) exim_lock.c
@echo "$(LNCC) -o exim_lock"
- $(FE)$(LNCC) -o exim_lock $(LFLAGS) exim_lock.o \
- $(LIBS) $(EXTRALIBS)
+ $(FE)$(LNCC) -o exim_lock $(LDFLAGS) exim_lock.o \
+ $(LIBS) $(EXTRALIBS) $(LFLAGS)
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
echo $(STRIP_COMMAND) exim_lock; \
$(STRIP_COMMAND) exim_lock; \
@@ -462,9 +462,9 @@
$(FE)$(CC) -o em_version.o -c \
$(CFLAGS) $(XINCLUDE) -I. ../exim_monitor/em_version.c
@echo "$(LNCC) -o eximon.bin"
- $(FE)$(PURIFY) $(LNCC) -o eximon.bin em_version.o $(LFLAGS) $(XLFLAGS) \
+ $(FE)$(PURIFY) $(LNCC) -o eximon.bin em_version.o $(LDFLAGS) $(XLFLAGS) \
$(OBJ_MONBIN) -lXaw -lXmu -lXt -lXext -lX11 $(PCRE_LIBS) \
- $(LIBS) $(LIBS_EXIMON) $(EXTRALIBS) $(EXTRALIBS_EXIMON) -lc
+ $(LIBS) $(LIBS_EXIMON) $(EXTRALIBS) $(EXTRALIBS_EXIMON) -lc $(LFLAGS)
@if [ x"$(STRIP_COMMAND)" != x"" ]; then \
echo $(STRIP_COMMAND) eximon.bin; \
$(STRIP_COMMAND) eximon.bin; \
@@ -780,9 +780,9 @@
string.o tod.o version.o utf8.o
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE dbfn.c
$(CC) -c $(CFLAGS) $(INCLUDE) -DCOMPILE_UTILITY store.c
- $(LNCC) -o test_dbfn $(LFLAGS) dbfn.o \
+ $(LNCC) -o test_dbfn $(LDFLAGS) dbfn.o \
dummies.o sa-globals.o sa-os.o store.o string.o \
- tod.o version.o utf8.o $(LIBS) $(DBMLIB) $(LDFLAGS)
+ tod.o version.o utf8.o $(LIBS) $(DBMLIB) $(LFLAGS)
rm -f dbfn.o store.o
test_host: config.h child.c host.c dns.c dummies.c sa-globals.o os.o \
@@ -790,29 +790,29 @@
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE -DTEST_HOST host.c
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE -DTEST_HOST dns.c
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE -DTEST_HOST dummies.c
- $(LNCC) -o test_host $(LFLAGS) \
+ $(LNCC) -o test_host $(LDFLAGS) \
host.o child.o dns.o dummies.o sa-globals.o os.o store.o string.o \
- tod.o tree.o $(LIBS) $(LIBRESOLV)
+ tod.o tree.o $(LIBS) $(LIBRESOLV) $(LFLAGS)
rm -f child.o dummies.o host.o dns.o
test_os: os.h os.c dummies.o sa-globals.o store.o string.o tod.o utf8.o
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE os.c
- $(LNCC) -o test_os $(LFLAGS) os.o dummies.o \
- sa-globals.o store.o string.o tod.o utf8.o $(LIBS) $(LDFLAGS)
+ $(LNCC) -o test_os $(LDFLAGS) os.o dummies.o \
+ sa-globals.o store.o string.o tod.o utf8.o $(LIBS) $(LFLAGS)
rm -f os.o
test_parse: config.h parse.c dummies.o sa-globals.o \
store.o string.o tod.o version.o utf8.o
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE parse.c
- $(LNCC) -o test_parse $(LFLAGS) parse.o \
+ $(LNCC) -o test_parse $(LDFLAGS) parse.o \
dummies.o sa-globals.o store.o string.o tod.o version.o \
- utf8.o $(LDFLAGS)
+ utf8.o $(LFLAGS)
rm -f parse.o
test_string: config.h string.c dummies.o sa-globals.o store.o tod.o utf8.o
$(CC) -c $(CFLAGS) $(INCLUDE) -DSTAND_ALONE string.c
- $(LNCC) -o test_string $(LFLAGS) -DSTAND_ALONE string.o \
- dummies.o sa-globals.o store.o tod.o utf8.o $(LIBS) $(LDFLAGS)
+ $(LNCC) -o test_string $(LDFLAGS) -DSTAND_ALONE string.o \
+ dummies.o sa-globals.o store.o tod.o utf8.o $(LIBS) $(LFLAGS)
rm -f string.o
# End

View file

@ -0,0 +1,51 @@
Extract from complete patch from
https://git.exim.org/exim.git/patch/26dd3aa007b3b77969610c031f59388e0953bd00
to only take the buildconfig.c change because the git directory
structure is different from a release tarball causing this patch to fail
otherwise.
From 26dd3aa007b3b77969610c031f59388e0953bd00 Mon Sep 17 00:00:00 2001
From: Jeremy Harris <jgh146exb@wizmail.org>
Date: Fri, 7 Jun 2019 11:54:10 +0100
Subject: [PATCH] Fix detection of 32b platform at build time. Bug 2405
---
src/src/buildconfig.c | 12 +++++---
test/scripts/0000-Basic/0002 | 72 +++++++++++++++++++++++---------------------
test/stdout/0002 | 72 +++++++++++++++++++++++---------------------
3 files changed, 83 insertions(+), 73 deletions(-)
diff --git a/src/src/buildconfig.c b/src/src/buildconfig.c
index 71cf97b..a680b34 100644
--- a/src/src/buildconfig.c
+++ b/src/src/buildconfig.c
@@ -111,6 +111,7 @@ unsigned long test_ulong_t = 0L;
unsigned int test_uint_t = 0;
#endif
long test_long_t = 0;
+long long test_longlong_t = 0;
int test_int_t = 0;
FILE *base;
FILE *new;
@@ -155,15 +156,16 @@ This assumption is known to be OK for the common operating systems. */
fprintf(new, "#ifndef OFF_T_FMT\n");
if (sizeof(test_off_t) > sizeof(test_long_t))
- {
fprintf(new, "# define OFF_T_FMT \"%%lld\"\n");
- fprintf(new, "# define LONGLONG_T long long int\n");
- }
else
- {
fprintf(new, "# define OFF_T_FMT \"%%ld\"\n");
+fprintf(new, "#endif\n\n");
+
+fprintf(new, "#ifndef LONGLONG_T\n");
+if (sizeof(test_longlong_t) > sizeof(test_long_t))
+ fprintf(new, "# define LONGLONG_T long long int\n");
+else
fprintf(new, "# define LONGLONG_T long int\n");
- }
fprintf(new, "#endif\n\n");
/* Now do the same thing for time_t variables. If the length is greater than

View file

@ -0,0 +1,267 @@
diff -ur exim-4.92.orig/src/config.h.defaults exim-4.92/src/config.h.defaults
--- exim-4.92.orig/src/config.h.defaults 2019-01-30 14:59:52.000000000 +0100
+++ exim-4.92/src/config.h.defaults 2019-02-16 18:17:24.547216157 +0100
@@ -32,6 +32,8 @@
#define AUTH_VARS 3
+#define DLOPEN_LOCAL_SCAN
+
#define BIN_DIRECTORY
#define CONFIGURE_FILE
Only in exim-4.92/src: config.h.defaults.orig
diff -ur exim-4.92.orig/src/EDITME exim-4.92/src/EDITME
--- exim-4.92.orig/src/EDITME 2019-01-30 14:59:52.000000000 +0100
+++ exim-4.92/src/EDITME 2019-02-16 18:17:24.547216157 +0100
@@ -824,6 +824,24 @@
#------------------------------------------------------------------------------
+# On systems which support dynamic loading of shared libraries, Exim can
+# load a local_scan function specified in its config file instead of having
+# to be recompiled with the desired local_scan function. For a full
+# description of the API to this function, see the Exim specification.
+
+#DLOPEN_LOCAL_SCAN=yes
+
+# If you set DLOPEN_LOCAL_SCAN, then you need to include -rdynamic in the
+# linker flags. Without it, the loaded .so won't be able to access any
+# functions from exim.
+
+LFLAGS = -rdynamic
+ifeq ($(OSTYPE),Linux)
+LFLAGS += -ldl
+endif
+
+
+#------------------------------------------------------------------------------
# The default distribution of Exim contains only the plain text form of the
# documentation. Other forms are available separately. If you want to install
# the documentation in "info" format, first fetch the Texinfo documentation
Only in exim-4.92/src: EDITME.orig
diff -ur exim-4.92.orig/src/globals.c exim-4.92/src/globals.c
--- exim-4.92.orig/src/globals.c 2019-01-30 14:59:52.000000000 +0100
+++ exim-4.92/src/globals.c 2019-02-16 18:17:24.549216150 +0100
@@ -41,6 +41,10 @@
uschar *no_aliases = NULL;
+#ifdef DLOPEN_LOCAL_SCAN
+uschar *local_scan_path = NULL;
+#endif
+
/* For comments on these variables, see globals.h. I'm too idle to
duplicate them here... */
Only in exim-4.92/src: globals.c.orig
diff -ur exim-4.92.orig/src/globals.h exim-4.92/src/globals.h
--- exim-4.92.orig/src/globals.h 2019-01-30 14:59:52.000000000 +0100
+++ exim-4.92/src/globals.h 2019-02-16 18:17:24.549216150 +0100
@@ -152,6 +152,9 @@
extern int (*receive_ferror)(void);
extern BOOL (*receive_smtp_buffered)(void);
+#ifdef DLOPEN_LOCAL_SCAN
+extern uschar *local_scan_path; /* Path to local_scan() library */
+#endif
/* For clearing, saving, restoring address expansion variables. We have to have
the size of this vector set explicitly, because it is referenced from more than
Only in exim-4.92/src: globals.h.orig
diff -ur exim-4.92.orig/src/local_scan.c exim-4.92/src/local_scan.c
--- exim-4.92.orig/src/local_scan.c 2019-01-30 14:59:52.000000000 +0100
+++ exim-4.92/src/local_scan.c 2019-02-16 18:29:56.832732592 +0100
@@ -5,61 +5,131 @@
/* Copyright (c) University of Cambridge 1995 - 2009 */
/* See the file NOTICE for conditions of use and distribution. */
+#include "exim.h"
-/******************************************************************************
-This file contains a template local_scan() function that just returns ACCEPT.
-If you want to implement your own version, you should copy this file to, say
-Local/local_scan.c, and edit the copy. To use your version instead of the
-default, you must set
-
-HAVE_LOCAL_SCAN=yes
-LOCAL_SCAN_SOURCE=Local/local_scan.c
-
-in your Local/Makefile. This makes it easy to copy your version for use with
-subsequent Exim releases.
-
-For a full description of the API to this function, see the Exim specification.
-******************************************************************************/
-
-
-/* This is the only Exim header that you should include. The effect of
-including any other Exim header is not defined, and may change from release to
-release. Use only the documented interface! */
-
-#include "local_scan.h"
-
-
-/* This is a "do-nothing" version of a local_scan() function. The arguments
-are:
-
- fd The file descriptor of the open -D file, which contains the
- body of the message. The file is open for reading and
- writing, but modifying it is dangerous and not recommended.
-
- return_text A pointer to an unsigned char* variable which you can set in
- order to return a text string. It is initialized to NULL.
-
-The return values of this function are:
-
- LOCAL_SCAN_ACCEPT
- The message is to be accepted. The return_text argument is
- saved in $local_scan_data.
-
- LOCAL_SCAN_REJECT
- The message is to be rejected. The returned text is used
- in the rejection message.
-
- LOCAL_SCAN_TEMPREJECT
- This specifies a temporary rejection. The returned text
- is used in the rejection message.
-*/
+#ifdef DLOPEN_LOCAL_SCAN
+#include <dlfcn.h>
+static int (*local_scan_fn)(int fd, uschar **return_text) = NULL;
+static int load_local_scan_library(void);
+#endif
int
local_scan(int fd, uschar **return_text)
{
fd = fd; /* Keep picky compilers happy */
return_text = return_text;
-return LOCAL_SCAN_ACCEPT;
+#ifdef DLOPEN_LOCAL_SCAN
+/* local_scan_path is defined AND not the empty string */
+if (local_scan_path && *local_scan_path)
+ {
+ if (!local_scan_fn)
+ {
+ if (!load_local_scan_library())
+ {
+ char *base_msg , *error_msg , *final_msg ;
+ int final_length = -1 ;
+
+ base_msg=US"Local configuration error - local_scan() library failure\n";
+ error_msg = dlerror() ;
+
+ final_length = strlen(base_msg) + strlen(error_msg) + 1 ;
+ final_msg = (char*)malloc( final_length*sizeof(char) ) ;
+ *final_msg = '\0' ;
+
+ strcat( final_msg , base_msg ) ;
+ strcat( final_msg , error_msg ) ;
+
+ *return_text = final_msg ;
+ return LOCAL_SCAN_TEMPREJECT;
+ }
+ }
+ return local_scan_fn(fd, return_text);
+ }
+else
+#endif
+ return LOCAL_SCAN_ACCEPT;
+}
+
+#ifdef DLOPEN_LOCAL_SCAN
+
+static int load_local_scan_library(void)
+{
+/* No point in keeping local_scan_lib since we'll never dlclose() anyway */
+void *local_scan_lib = NULL;
+int (*local_scan_version_fn)(void);
+int vers_maj;
+int vers_min;
+
+local_scan_lib = dlopen(local_scan_path, RTLD_NOW);
+if (!local_scan_lib)
+ {
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library open failed - "
+ "message temporarily rejected");
+ return FALSE;
+ }
+
+local_scan_version_fn = dlsym(local_scan_lib, "local_scan_version_major");
+if (!local_scan_version_fn)
+ {
+ dlclose(local_scan_lib);
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain "
+ "local_scan_version_major() function - message temporarily rejected");
+ return FALSE;
+ }
+
+/* The major number is increased when the ABI is changed in a non
+ backward compatible way. */
+vers_maj = local_scan_version_fn();
+
+local_scan_version_fn = dlsym(local_scan_lib, "local_scan_version_minor");
+if (!local_scan_version_fn)
+ {
+ dlclose(local_scan_lib);
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain "
+ "local_scan_version_minor() function - message temporarily rejected");
+ return FALSE;
+ }
+
+/* The minor number is increased each time a new feature is added (in a
+ way that doesn't break backward compatibility) -- Marc */
+vers_min = local_scan_version_fn();
+
+
+if (vers_maj != LOCAL_SCAN_ABI_VERSION_MAJOR)
+ {
+ dlclose(local_scan_lib);
+ local_scan_lib = NULL;
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() has an incompatible major"
+ "version number, you need to recompile your module for this version"
+ "of exim (The module was compiled for version %d.%d and this exim provides"
+ "ABI version %d.%d)", vers_maj, vers_min, LOCAL_SCAN_ABI_VERSION_MAJOR,
+ LOCAL_SCAN_ABI_VERSION_MINOR);
+ return FALSE;
+ }
+else if (vers_min > LOCAL_SCAN_ABI_VERSION_MINOR)
+ {
+ dlclose(local_scan_lib);
+ local_scan_lib = NULL;
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() has an incompatible minor"
+ "version number, you need to recompile your module for this version"
+ "of exim (The module was compiled for version %d.%d and this exim provides"
+ "ABI version %d.%d)", vers_maj, vers_min, LOCAL_SCAN_ABI_VERSION_MAJOR,
+ LOCAL_SCAN_ABI_VERSION_MINOR);
+ return FALSE;
+ }
+
+local_scan_fn = dlsym(local_scan_lib, "local_scan");
+if (!local_scan_fn)
+ {
+ dlclose(local_scan_lib);
+ log_write(0, LOG_MAIN|LOG_REJECT, "local_scan() library doesn't contain "
+ "local_scan() function - message temporarily rejected");
+ return FALSE;
+ }
+
+return TRUE;
}
+#endif /* DLOPEN_LOCAL_SCAN */
+
/* End of local_scan.c */
diff -ur exim-4.92.orig/src/readconf.c exim-4.92/src/readconf.c
--- exim-4.92.orig/src/readconf.c 2019-01-30 14:59:52.000000000 +0100
+++ exim-4.92/src/readconf.c 2019-02-16 18:18:46.013947455 +0100
@@ -199,6 +199,9 @@
{ "local_from_prefix", opt_stringptr, &local_from_prefix },
{ "local_from_suffix", opt_stringptr, &local_from_suffix },
{ "local_interfaces", opt_stringptr, &local_interfaces },
+#ifdef DLOPEN_LOCAL_SCAN
+ { "local_scan_path", opt_stringptr, &local_scan_path },
+#endif
#ifdef HAVE_LOCAL_SCAN
{ "local_scan_timeout", opt_time, &local_scan_timeout },
#endif

View file

@ -0,0 +1,10 @@
[Unit]
Description=Exim Mail Transfer Agent (message submission)
Conflicts=exim.service
[Socket]
ListenStream=587
Accept=yes
[Install]
WantedBy=sockets.target

View file

@ -0,0 +1,11 @@
# It doesn't make sense for this to be separate from exim@.service
# However, I couldn't think of a way to have two .socket files point
# to it ([Socket] Service= is rejected if Accept=yes is set).
[Unit]
Description=Exim Mail Daemon per-connection server (message submission)
[Service]
ExecStart=-/usr/bin/exim -bs
StandardInput=socket
StandardError=syslog

View file

@ -0,0 +1,5 @@
# Command-line options for running exim
EXIM_OPTS="-bd -q15m"
# Additional flags passed to exim_tidydb upon start (e.g. -t 7d)
TIDY_OPTS=""

View file

@ -0,0 +1,9 @@
/var/log/exim/exim*.log {
daily
missingok
rotate 28
compress
delaycompress
notifempty
create 640 mail mail
}

View file

@ -0,0 +1,47 @@
#!/sbin/openrc-run
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
extra_started_commands="reload"
depend() {
need logger
use antivirus net
provide mta
}
tidy_dbs() {
local spooldir=$(/usr/sbin/exim -C /etc/exim/${SVCNAME}.conf -bP -n spool_directory)
local db
local ret=0
ebegin "Tidying hints databases in ${spooldir}/db"
for db in "${spooldir}"/db/* ; do
case "${db}" in
*".lockfile"|*"*") continue ;;
esac
/usr/sbin/exim_tidydb ${TIDY_OPTS} "${spooldir}" ${db##*/} > /dev/null
: $((ret += $?))
done
eend ${ret}
}
start() {
# if you use multiple instances, make sure you set spool_directory
# in the configfile
tidy_dbs
ebegin "Starting ${SVCNAME}"
start-stop-daemon --start --exec /usr/sbin/exim --pidfile /run/${SVCNAME}.pid -- -C /etc/exim/${SVCNAME}.conf ${EXIM_OPTS:--bd -q15m}
eend $?
}
stop() {
ebegin "Stopping ${SVCNAME}"
start-stop-daemon --stop --pidfile /run/${SVCNAME}.pid --name exim
eend $?
}
reload() {
ebegin "Reloading ${SVCNAME}"
start-stop-daemon --signal HUP --pidfile /run/${SVCNAME}.pid --name exim
eend $?
}

View file

@ -0,0 +1,12 @@
[Unit]
Description=Exim Mail Transport Agent
After=network.target
[Service]
Environment=QUEUE=15m
ExecStart=/usr/sbin/exim -bdf -q${QUEUE}
ExecReload=/bin/kill -HUP $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,10 @@
[Unit]
Description=Exim Mail Transfer Agent
Conflicts=exim.service
[Socket]
ListenStream=25
Accept=yes
[Install]
WantedBy=sockets.target

View file

@ -0,0 +1,7 @@
[Unit]
Description=Exim Mail Daemon per-connection server
[Service]
ExecStart=-/usr/bin/exim -bs
StandardInput=socket
StandardError=syslog

View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>grobian@gentoo.org</email>
</maintainer>
<longdescription>
Exim is a message transfer agent (MTA) developed at the University of
Cambridge for use on Unix systems connected to the Internet. It is
freely available under the terms of the GNU General Public Licence. In
style it is similar to Smail 3, but its facilities are more general.
There is a great deal of flexibility in the way mail can be routed, and
there are extensive facilities for checking incoming mail. Exim can be
installed in place of sendmail, although the configuration of exim is
quite different to that of sendmail.
</longdescription>
<use>
<flag name="arc">Adds support for Authenticated Receive Chain
(ARC)</flag>
<flag name="dcc">Adds support for Distributed Checksum Clearinghouse
(DCC)</flag>
<flag name="dane">Adds support for DNS-based Authentication of Named Entities</flag>
<flag name="dkim">Adds support for DomainKeys Identified Mail
(DKIM)</flag>
<flag name="dnsdb">Adds support for a DNS search for a record whose
domain name is the supplied query</flag>
<flag name="dovecot-sasl">Adds support for Dovecot's
authentication</flag>
<flag name="dlfunc">Install local_scan.h header to compile separate
dlfunc libraries</flag>
<flag name="dmarc">Adds support for DMARC</flag>
<flag name="dsn">Adds support for Delivery Status Notifications
(DSN)</flag>
<flag name="exiscan-acl">Patch providing support for content
scanning</flag>
<flag name="lmtp">Adds support for lmtp</flag>
<flag name="mbx">Adds support for UW's mbx format</flag>
<flag name="spf">Adds support for Sender Policy Framework</flag>
<flag name="srs">Adds support for Sender Rewriting Scheme</flag>
<flag name="proxy">Add support for being behind a proxy, such as HAProxy</flag>
<flag name="pkcs11">Require pkcs11 support in <pkg>net-libs/gnutls</pkg> with USE=gnutls</flag>
<flag name="redis">Adds support for querying <pkg>dev-db/redis</pkg></flag>
<flag name="prdr">Adds support for Per-Recipient Data Response</flag>
<flag name="tpda">Adds support for Transport Post-Delivery Actions</flag>
</use>
<upstream>
<bugs-to>http://bugs.exim.org/</bugs-to>
<!-- stupid DTD doesn't allow this
<vcs>http://git.exim.org/exim.git</vcs>
-->
</upstream>
</pkgmetadata>