after r254273
- Fix a bunch of ports to properly work after this
- Mark converters/libiconv as IGNORE for systems with iconv in libc
Reviewed by: bapt
Approved by: portmgr (bapt)
Discussed with: bapt, bsam (who both contributed ideas and code)
- fix introduction of bogus MYSQL_VER option that appeared after
blind conversion to OPTIONSng in r320120;
- drop support for WITH_MYSQL_VER="auto": this is an obsolete setting
that currently has the same effect as not defining WITH_MYSQL_VER
at all;
- don't set WANT_MYSQL_VER based on WITH_MYSQL_VER: setting the
latter is enough, since we don't insist on any particular MySQL
version.
PR: ports/179719
QA page: http://codelabs.ru/fbsd/ports/qa/mail/exim/4.80.1_2-p1
For a while now bsdtar is able to autotermine compression and archive format.
Let's then use tar directly instead of piping to tar.
Now USE_BZIP2 and USE_XZ only set EXTRACT_SUFX to the right format
SO 1024 sometimes give back new headers with '\r\n' as the end of line
delimiter. Such result should be treated properly to avoid adding extra
'\n' to the message headers and turning some of them into body.
It allows to filter/transform the output from the tidydb that is
sometimes large and not very much suitable for informational mails
from cron.
Feature safe: yes
Uncomment only relevant configuration line for SASL libraries
(we're currently using SASL 2.x, so it is -lsasl2).
PR: 169833
Found by: Richard E. Depew
Pointyhat to: rea@
Extracts from the NewStuff,
ftp://exim.inode.at/exim/ChangeLogs/NewStuff-4.80
1. New authenticator driver, "gsasl". Server-only (at present).
This is a SASL interface, licensed under GPL, which can be found at
http://www.gnu.org/software/gsasl/.
This system does not provide sources of data for authentication, so
careful use needs to be made of the conditions in Exim.
2. New authenticator driver, "heimdal_gssapi". Server-only.
A replacement for using cyrus_sasl with Heimdal, now that $KRB5_KTNAME
is no longer honoured for setuid programs by Heimdal. Use the
"server_keytab" option to point to the keytab.
3. The "pkg-config" system can now be used when building Exim to reference
cflags and library information for lookups and authenticators, rather
than having to update "CFLAGS", "AUTH_LIBS", "LOOKUP_INCLUDE" and
"LOOKUP_LIBS" directly. Similarly for handling the TLS library support
without adjusting "TLS_INCLUDE" and "TLS_LIBS".
In addition, setting PCRE_CONFIG=yes will query the pcre-config tool to
find the headers and libraries for PCRE.
4. New expansion variable $tls_bits.
5. New lookup type, "dbmjz". Key is an Exim list, the elements of which will
be joined together with ASCII NUL characters to construct the key to pass
into the DBM library. Can be used with gsasl to access sasldb2 files as
used by Cyrus SASL.
6. OpenSSL now supports TLS1.1 and TLS1.2 with OpenSSL 1.0.1.
Avoid release 1.0.1a if you can. Note that the default value of
"openssl_options" is no longer "+dont_insert_empty_fragments", as that
increased susceptibility to attack. This may still have interoperability
implications for very old clients (see version 4.31 change 37) but
administrators can choose to make the trade-off themselves and restore
compatibility at the cost of session security.
7. Use of the new expansion variable $tls_sni in the main configuration option
tls_certificate will cause Exim to re-expand the option, if the client
sends the TLS Server Name Indication extension, to permit choosing a
different certificate; tls_privatekey will also be re-expanded. You must
still set these options to expand to valid files when $tls_sni is not set.
The SMTP Transport has gained the option tls_sni, which will set a hostname
for outbound TLS sessions, and set $tls_sni too.
A new log_selector, +tls_sni, has been added, to log received SNI values
for Exim as a server.
8. The existing "accept_8bitmime" option now defaults to true. This means
that Exim is deliberately not strictly RFC compliant. We're following
Dan Bernstein's advice in http://cr.yp.to/smtp/8bitmime.html by default.
Those who disagree, or know that they are talking to mail servers that,
even today, are not 8-bit clean, need to turn off this option.
9. Exim can now be started with -bw (with an optional timeout, given as
-bw<timespec>). With this, stdin at startup is a socket that is
already listening for connections. This has a more modern name of
"socket activation", but forcing the activated socket to fd 0. We're
interested in adding more support for modern variants.
10. ${eval } now uses 64-bit values on supporting platforms. A new "G" suffix
for numbers indicates multiplication by 1024^3.
11. The GnuTLS support has been revamped; the three options gnutls_require_kx,
gnutls_require_mac & gnutls_require_protocols are no longer supported.
tls_require_ciphers is now parsed by gnutls_priority_init(3) as a priority
string, documentation for which is at:
http://www.gnu.org/software/gnutls/manual/html_node/Priority-Strings.html
SNI support has been added to Exim's GnuTLS integration too.
For sufficiently recent GnuTLS libraries, ${randint:..} will now use
gnutls_rnd(), asking for GNUTLS_RND_NONCE level randomness.
12. With OpenSSL, if built with EXPERIMENTAL_OCSP, a new option tls_ocsp_file
is now available. If the contents of the file are valid, then Exim will
send that back in response to a TLS status request; this is OCSP Stapling.
Exim will not maintain the contents of the file in any way: administrators
are responsible for ensuring that it is up-to-date.
See "experimental-spec.txt" for more details.
13. ${lookup dnsdb{ }} supports now SPF record types. They are handled
identically to TXT record lookups.
14. New expansion variable $tod_epoch_l for higher-precision time.
15. New global option tls_dh_max_bits, defaulting to current value of NSS
hard-coded limit of DH ephemeral bits, to fix interop problems caused by
GnuTLS 2.12 library recommending a bit count higher than NSS supports.
16. tls_dhparam now used by both OpenSSL and GnuTLS, can be path or identifier.
Option can now be a path or an identifier for a standard prime.
If unset, we use the DH prime from section 2.2 of RFC 5114, "ike23".
Set to "historic" to get the old GnuTLS behaviour of auto-generated DH
primes.
17. SSLv2 now disabled by default in OpenSSL. (Never supported by GnuTLS).
Use "openssl_options -no_sslv2" to re-enable support, if your OpenSSL
install was not built with OPENSSL_NO_SSL2 ("no-ssl2").
Extracts from the ChangeLog,
ftp://exim.inode.at/exim/ChangeLogs/ChangeLog-4.80
PP/01 Handle short writes when writing local log-files.
In practice, only affects FreeBSD (8 onwards).
Bugzilla 1053, with thanks to Dmitry Isaikin.
NM/01 Bugzilla 949 - Documentation tweak
NM/02 Bugzilla 1093 - eximstats DATA reject detection regexps
improved.
NM/03 Bugzilla 1169 - primary_hostname spelling was incorrect in docs.
PP/02 Implemented gsasl authenticator.
PP/03 Implemented heimdal_gssapi authenticator with "server_keytab" option.
PP/04 Local/Makefile support for (AUTH|LOOKUP)_*_PC=foo to use
`pkg-config foo` for cflags/libs.
PP/05 Swapped $auth1/$auth2 for gsasl GSSAPI mechanism, to be more consistent
with rest of GSASL and with heimdal_gssapi.
PP/06 Local/Makefile support for USE_(GNUTLS|OPENSSL)_PC=foo to use
`pkg-config foo` for cflags/libs for the TLS implementation.
PP/07 New expansion variable $tls_bits; Cyrus SASL server connection
properties get this fed in as external SSF. A number of robustness
and debugging improvements to the cyrus_sasl authenticator.
PP/08 cyrus_sasl server now expands the server_realm option.
PP/09 Bugzilla 1214 - Log authentication information in reject log.
Patch by Jeremy Harris.
PP/10 Added dbmjz lookup type.
PP/11 Let heimdal_gssapi authenticator take a SASL message without an authzid.
PP/12 MAIL args handles TAB as well as SP, for better interop with
non-compliant senders.
Analysis and variant patch by Todd Lyons.
NM/04 Bugzilla 1237 - fix cases where printf format usage not indicated
Bug report from Lars Müller <lars@samba.org> (via SUSE),
Patch from Dirk Mueller <dmueller@suse.com>
PP/13 tls_peerdn now print-escaped for spool files.
Observed some $tls_peerdn in wild which contained \n, which resulted
in spool file corruption.
PP/14 TLS fixes for OpenSSL: support TLS 1.1 & 1.2; new "openssl_options"
values; set SSL_MODE_AUTO_RETRY so that OpenSSL will retry a read
or write after TLS renegotiation, which otherwise led to messages
"Got SSL error 2".
TK/01 Bugzilla 1239 - fix DKIM verification when signature was not inserted
as a tracking header (ie: a signed header comes before the signature).
Patch from Wolfgang Breyha.
JH/01 Bugzilla 660 - Multi-valued attributes from ldap now parseable as a
comma-sep list; embedded commas doubled.
JH/02 Refactored ACL "verify =" logic to table-driven dispatch.
PP/15 LDAP: Check for errors of TLS initialisation, to give correct
diagnostics.
Report and patch from Dmitry Banschikov.
PP/16 Removed "dont_insert_empty_fragments" fron "openssl_options".
Removed SSL_clear() after SSL_new() which led to protocol negotiation
failures. We appear to now support TLS1.1+ with Exim.
PP/17 OpenSSL: new expansion var $tls_sni, which if used in tls_certificate
lets Exim select keys and certificates based upon TLS SNI from client.
Also option tls_sni on SMTP Transports. Also clear $tls_bits correctly
before an outbound SMTP session. New log_selector, +tls_sni.
PP/18 Bugzilla 1122 - check localhost_number expansion for failure, avoid
NULL dereference. Report and patch from Alun Jones.
PP/19 DNS resolver init changes for NetBSD compatibility. (Risk of breakage
on less well tested platforms). Obviates NetBSD pkgsrc patch-ac.
Not seeing resolver debug output on NetBSD, but suspect this is a
resolver implementation change.
PP/20 Revert part of NM/04, it broke log_path containing %D expansions.
Left warnings. Added "eximon gdb" invocation mode.
PP/21 Defaulting "accept_8bitmime" to true, not false.
PP/22 Added -bw for inetd wait mode support.
PP/23 Added PCRE_CONFIG=yes support to Makefile for using pcre-config to
locate the relevant includes and libraries. Made this the default.
PP/24 Fixed headers_only on smtp transports (was not sending trailing dot).
Bugzilla 1246, report and most of solution from Tomasz Kusy.
JH/03 ${eval } now uses 64-bit and supports a "g" suffix (like to "k" and "m").
This may cause build issues on older platforms.
PP/25 Revamped GnuTLS support, passing tls_require_ciphers to
gnutls_priority_init, ignoring Exim options gnutls_require_kx,
gnutls_require_mac & gnutls_require_protocols (no longer supported).
Added SNI support via GnuTLS too.
Made ${randint:..} supplier available, if using not-too-old GnuTLS.
PP/26 Added EXPERIMENTAL_OCSP for OpenSSL.
PP/27 Applied dnsdb SPF support patch from Janne Snabb.
Applied second patch from Janne, implementing suggestion to default
multiple-strings-in-record handling to match SPF spec.
JH/04 Added expansion variable $tod_epoch_l for a higher-precision time.
PP/28 Fix DCC dcc_header content corruption (stack memory referenced,
read-only, out of scope).
Patch from Wolfgang Breyha, report from Stuart Northfield.
PP/29 Fix three issues highlighted by clang analyser static analysis.
Only crash-plausible issue would require the Cambridge-specific
iplookup router and a misconfiguration.
Report from Marcin MirosÅaw.
PP/30 Another attempt to deal with PCRE_PRERELEASE, this one less buggy.
PP/31 %D in printf continues to cause issues (-Wformat=security), so for
now guard some of the printf checks behind WANT_DEEPER_PRINTF_CHECKS.
As part of this, removing so much warning spew let me fix some minor
real issues in debug logging.
PP/32 GnuTLS was always using default tls_require_ciphers, due to a missing
assignment on my part. Fixed.
PP/33 Added tls_dh_max_bits option, defaulting to current hard-coded limit
of NSS, for GnuTLS/NSS interop. Problem root cause diagnosis by
Janne Snabb (who went above and beyond: thank you).
PP/34 Validate tls_require_ciphers on startup, since debugging an invalid
string otherwise requires a connection and a bunch more work and it's
relatively easy to get wrong. Should also expose TLS library linkage
problems.
PP/35 Pull in <features.h> on Linux, for some portability edge-cases of
64-bit ${eval} (JH/03).
PP/36 Define _GNU_SOURCE in exim.h; it's needed for some releases of
GNU libc to support some of the 64-bit stuff, should not lead to
conflicts. Defined before os.h is pulled in, so if a given platform
needs to override this, it can.
PP/37 Unbreak Cyrus SASL auth: SSF retrieval was incorrect, Exim thought
protection layer was required, which is not implemented.
Bugzilla 1254, patch from Wolfgang Breyha.
PP/38 Overhaul DH prime handling, supply RFC-specified DH primes as built
into Exim, default to IKE id 23 from RFC 5114 (2048 bit). Make
tls_dhparam take prime identifiers. Also unbreak combination of
OpenSSL+DH_params+TLSSNI.
PP/39 Disable SSLv2 by default in OpenSSL support.
Changes in the port:
- added knob to disable DKIM (requested by alex@ahhyes.net)
- added knob to build with GnuTLS (requested by odhiambo@gmail.com)
- fixed handling of 'twist' directives in hosts.allow
PR: 166396
QA page: http://codelabs.ru/fbsd/ports/qa/mail/exim/4.80
literal name_enable wherever possible, and ${name}_enable
when it's not, to prepare for the demise of set_rcvar().
In cases where I had to hand-edit unusual instances also
modify formatting slightly to be more uniform (and in
some cases, correct). This includes adding some $FreeBSD$
tags, and most importantly moving rcvar= to right after
name= so it's clear that one is derived from the other.
New stuff (from ftp://exim.inode.at/exim/ChangeLogs/NewStuff-4.77):
1. New options for the ratelimit ACL condition: /count= and /unique=.
The /noupdate option has been replaced by a /readonly option.
2. The SMTP transport's protocol option may now be set to "smtps", to
use SSL-on-connect outbound.
3. New variable $av_failed, set true if the AV scanner deferred; ie, when
there is a problem talking to the AV scanner, or the AV scanner running.
4. New expansion conditions, "inlist" and "inlisti", which take simple lists
and check if the search item is a member of the list. This does not
support named lists, but does subject the list part to string expansion.
5. Unless the new EXPAND_LISTMATCH_RHS build option is set when Exim was
built, Exim no longer performs string expansion on the second string of
the match_* expansion conditions: "match_address", "match_domain",
"match_ip" & "match_local_part". Named lists can still be used.
Relevant entries from ChangeLog at
ftp://exim.inode.at/exim/ChangeLogs/ChangeLog-4.77:
TK/01 DKIM Verification: Fix relaxed canon for empty headers w/o
whitespace trailer
TF/02 Fix a couple more cases where we did not log the error message
when unlink() failed. See also change 4.74-TF/03.
TF/03 Make the exiwhat support code safe for signals. Previously
Exim might lock up or crash if it happened to be inside a call
to libc when it got a SIGUSR1 from exiwhat.
The SIGUSR1 handler appends the current process status to the
process log which is later printed by exiwhat. It used to use
the general purpose logging code to do this, but several
functions it calls are not safe for signals.
The new output code in the SIGUSR1 handler is specific to the
process log, and simple enough that it's easy to inspect for
signal safety. Removing some special cases also simplifies the
general logging code. Removing the spurious timestamps from the
process log simplifies exiwhat.
PP/02 Raise smtp_cmd_buffer_size to 16kB.
Bugzilla 879. Patch from Paul Fisher.
PP/07 Make maildir_use_size_file an _expandable_ boolean.
Bugzilla 1089. Patch from Heiko Schlittermann.
PP/08 Handle ${run} returning more data than OS pipe buffer size.
Bugzilla 1131. Patch from Holger Weitz.
PP/09 Handle IPv6 addresses with SPF.
Bugzilla 860. Patch from Wolfgang Breyha.
PP/10 GnuTLS: support TLS 1.2 & 1.1.
Bugzilla 1156.
Use gnutls_certificate_verify_peers2() [patch from Andreas Metzler].
Bugzilla 1095.
PP/12 fix uninitialised greeting string from PP/03 (smtps client
support).
PP/13 shell and compiler warnings fixes for RC1-RC4 changes.
PP/14 fix log_write() format string regression from TF/03.
Bugzilla 1152. Patch from Dmitry Isaikin.
Other changes:
- the patch for XCLIENT was updated to match the latest Exim sources;
- removed already incorporated patch for exiqgrep;
- removed Makefile.options and simplified OPTIONS handling.
PR: ports/161095, ports/161482, ports/157180
4.76 is the security release that fixes CVE-2011-1764, format string
attack and information leak, both inside the DKIM code.
List of changes (ftp://exim.inode.at/exim/ChangeLogs/ChangeLog-4.76):
PP/01 The new ldap_require_cert option would segfault if used. Fixed.
PP/02 Harmonised TLS library version reporting; only show if
debugging. Layout now matches that introduced for other
libraries in 4.74 PP/03.
PP/03 New openssl_options items: no_sslv2 no_sslv3 no_ticket no_tlsv1
PP/04 New "dns_use_edns0" global option.
PP/05 Don't segfault on misconfiguration of ref:name exim-user as uid.
Bugzilla 1098.
PP/06 Extra paranoia around buffer usage at the STARTTLS transition.
nb: Exim is not vulnerable to http://www.kb.cert.org/vuls/id/555316
TK/01 Updated PolarSSL code to 0.14.2.
Bugzilla 1097. Patch from Andreas Metzler.
PP/07 Catch divide-by-zero in ${eval:...}.
Fixes bugzilla 1102.
PP/08 Condition negation of bool{}/bool_lax{} did not negate. Fixed.
Bugzilla 1104.
TK/02 Bugzilla 1106: CVE-2011-1764 - DKIM log line was subject to a
format-string attack -- SECURITY: remote arbitrary code execution.
TK/03 SECURITY - DKIM signature header parsing was double-expanded,
second time unintentionally subject to list matching rules,
letting the header cause arbitrary Exim lookups (of items which can
occur in lists, *not* arbitrary string expansion). This allowed for
information disclosure.
PP/09 Fix another SIGFPE (x86) in ${eval:...} expansion, this time related
to INT_MIN/-1 -- value coerced to INT_MAX.
New stuff (ftp://exim.inode.at/exim/ChangeLogs/NewStuff-4.76):
1. The global option "dns_use_edns0" may be set to coerce EDNS0 usage
on or off in the resolver library.
And I am also adding patch for exiqgrep that was taken from
http://bugs.exim.org/show_bug.cgi?id=1103 [1].
PR: ports/156903 [2], ports/156872 [3]
Reported-by: Oliver Brandmueller <ob@e-gitt.net> [1], admin@anes.su [2], Alexander Wittig <alexander@wittig.name> [3]
Approved-by: erwin (mentor)
Feature-safe: yes
From NewStuff-4.75:
1. In addition to the existing LDAP and LDAP/SSL ("ldaps") support,
there is now LDAP/TLS support, given sufficiently modern OpenLDAP
client libraries. The following global options have been added in
support of this: ldap_ca_cert_dir, ldap_ca_cert_file, ldap_cert_file,
ldap_cert_key, ldap_cipher_suite, ldap_require_cert, ldap_start_tls.
2. The pipe transport now takes a boolean option, "freeze_signal",
default false. When true, if the external delivery command exits on
a signal then Exim will freeze the message in the queue, instead of
generating a bounce.
3. Log filenames may now use %M as an escape, instead of %D (still
available). The %M pattern expands to yyyymm, providing month-level
resolution.
4. The $message_linecount variable is now updated for the maildir_tag
option, in the same way as $message_size, to reflect the real number
of lines, including any header additions or removals from transport.
5. When contacting a pool of SpamAssassin servers configured in
spamd_address, Exim now selects entries randomly, to better scale in
a cluster setup.
Full changelog and new stuff files:
- ftp://exim.inode.at/exim/ChangeLogs/ChangeLog-4.75
- ftp://exim.inode.at/exim/ChangeLogs/NewStuff-4.75
Added two configurable knobs (based on ports/154956):
- CONFIG_FILE_PATH: location of the main configuration file
- ALT_CONFIG_PREFIX: prefix for alternative configuration files.
PR: 154956
Feature safe: yes
Approved by: garga (mentor)
Changelog is at
http://ftp.exim.org/pub/exim/ChangeLogs/ChangeLog-4.74
Please, note that CVE-2011-0017 is not applicable to FreeBSD,
because setuid() doesn't check RLIMIT_NPROC.
Also fixed the periodic script for tidying the databases: now it won't
produce errors if the lockfile is here, but the actual database file
is gone. [2]
And finally, synced the mirror list to the current one and
pruned old unusable mirrors:
- ftp.csx.cam.ac.uk: not synced anymore;
- www.no.exim.org: no DNS record;
- ftp.demon.nl: no longer mirrors Exim;
- ftp.freenet.de: mirror of ftp.csx.cam.ac.uk;
- ftp.esat.net: not synced anymore;
- ftp.mirrorservice.org: mirror of ftp.csx.cam.ac.uk.
Feature safe: yes
PR: 154323 [1]
Submitted by: Geraint Edwards <gedge@yadn.org> [2],
Alexander Wittig <alexander@wittig.name> [1]
Approved by: erwin (mentor), renato (mentor)
There was an extra '=' sign at the sed substitution
pattern that affected users of make-only options
TRUSTED_CONFIG_LIST and WHITELIST_D_MACROS: Exim
binary won't build if any of these options is set.
Spotted by: tdb
Pointyhat to: rea
Approved by: erwin (mentor)
Most notably, this version fixes local exim -> root escalation,
CVE-2010-4345.
Port had also gained configurable knob for disabling -D option
and make variables TRUSTED_CONFIG_LIST and WHITELIST_D_MACROS
to fine tune the behaviour of options -C and -D.
New items are documented at
ftp://exim.inode.at/exim/ChangeLogs/NewStuff-4.73
Changelog is available at
ftp://exim.inode.at/exim/ChangeLogs/ChangeLog-4.73
Security: e4fcf020-0447-11e0-becc-0022156e8794 / CVE-2010-4345
PR: 152963 [1], 153711 [2]
Submitted by: Alexander Wittig <alexander@wittig.name> [1]
Approved by: garga (mentor)
The changes from the previous release are:
1. TWO SECURITY FIXES: one relating to mail-spools which are
globally writable, the other to locking of MBX folders (not mbox).
These have CVE identifiers CVE-2010-2023 and CVE-2010-2024
2. MySQL stored procedures are now supported.
3. The dkim_domain transport option is now a list, not a single
string, and messages will be signed for each element in the list
(discarding duplicates).
4. The 4.70 release unexpectedly changed the behaviour of dnsdb TXT
lookups in the presence of multiple character strings within
the RR. Prior to 4.70, only the first string would be returned.
The dnsdb lookup now, by default, preserves the pre-4.70
semantics, but also now takes an extended output separator
specification. The separator can be followed by a semicolon, to
concatenate the individual text strings together with no join
character, or by a comma and a second separator character, in
which case the text strings within a TXT record are joined on
that second character. Administrators are reminded that DNS
provides no ordering guarantees between multiple records in an
RRset. For example:
foo.example. IN TXT "a" "b" "c"
foo.example. IN TXT "d" "e" "f"
${lookup dnsdb{>/ txt=foo.example}} -> "a/d"
${lookup dnsdb{>/; txt=foo.example}} -> "def/abc"
${lookup dnsdb{>/,+ txt=foo.example}} -> "a+b+c/d+e+f"
PR: ports/147686
Submitted by: Alexey V.Degtyarev <alexey@renatasystems.org>
good messages per day for any mailhost. It is to note: 1024 - it is
not the total amount of messages scanned but the only good ones,
which aren't considered as spam. Once 1024 good messages get passed
through the filter, the rest of mail traffic will be passed without
considering spam or ham until the end of the day.
http://so.yandex.ru/companies/so1024.xml
The patch allows use of "Spamooborona 1024" with Exim by using
Local_scan()'s functionality provided by Yandex LLC.
PR: ports/146215
Submitted by: Alexey V.Degtyarev <alexey@renatasystems.org>
- Merge all SF mirrors to MASTER_SITE_SOURCEFORGE, resort according to quick download speed survey
- Fix MASTER_SITES for all port that have used SOURCEFORGE_EXTENTED
Approved by: portmgr (pav)
- Bump PORTREVISION for all ports depending on libglut since the shlib
version number went from 4 to 3.
- Bump PORTREVISION for all ports depending on libXaw as libXaw.so.8 isn't
installed anymore.
- Couple of ports fixes (mostly missing xorg components added to USE_XORG).