From 56bd759df1d0c750a065b8c845e93d5dfa6b549d Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Sat, 8 Aug 2015 13:49:04 -0700 Subject: proj/gentoo: Initial commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson X-Thanks: Alec Warner - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring - wrote much python to improve cvs2svn X-Thanks: Rich Freeman - validation scripts X-Thanks: Patrick Lauer - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed --- mail-filter/opendkim/Manifest | 5 + mail-filter/opendkim/files/opendkim.init.r3 | 56 ++++++++ mail-filter/opendkim/files/opendkim.service | 11 ++ mail-filter/opendkim/metadata.xml | 31 ++++ mail-filter/opendkim/opendkim-2.10.0.ebuild | 196 +++++++++++++++++++++++++ mail-filter/opendkim/opendkim-2.10.2.ebuild | 196 +++++++++++++++++++++++++ mail-filter/opendkim/opendkim-2.10.3.ebuild | 196 +++++++++++++++++++++++++ mail-filter/opendkim/opendkim-2.9.2-r1.ebuild | 197 ++++++++++++++++++++++++++ mail-filter/opendkim/opendkim-2.9.3.ebuild | 197 ++++++++++++++++++++++++++ 9 files changed, 1085 insertions(+) create mode 100644 mail-filter/opendkim/Manifest create mode 100644 mail-filter/opendkim/files/opendkim.init.r3 create mode 100644 mail-filter/opendkim/files/opendkim.service create mode 100644 mail-filter/opendkim/metadata.xml create mode 100644 mail-filter/opendkim/opendkim-2.10.0.ebuild create mode 100644 mail-filter/opendkim/opendkim-2.10.2.ebuild create mode 100644 mail-filter/opendkim/opendkim-2.10.3.ebuild create mode 100644 mail-filter/opendkim/opendkim-2.9.2-r1.ebuild create mode 100644 mail-filter/opendkim/opendkim-2.9.3.ebuild (limited to 'mail-filter/opendkim') diff --git a/mail-filter/opendkim/Manifest b/mail-filter/opendkim/Manifest new file mode 100644 index 000000000000..7da87da330d3 --- /dev/null +++ b/mail-filter/opendkim/Manifest @@ -0,0 +1,5 @@ +DIST opendkim-2.10.0.tar.gz 1213007 SHA256 4a747c9028e1cba40b5f8ba64ec5fbcf9f7d27a8a41fec4b4a398e2a6001c747 SHA512 c1ef4a8e80ed8a6e64e9a9a4f6d2ec684622fb4248d1d1c9b696f14ec9f4163e7b37f1a936ec8d522b6531b91fc869ca875fd6ff58c96c75ba41c919bed40d53 WHIRLPOOL 8443c330265dd47774ed476e4a88da10e586dc27fe6f7d98bec8f88c9129e04df334bf2d4dcfa0c65ca9b5287d8fa478b9d9bd6da9672add32074d0d6d9da0bf +DIST opendkim-2.10.2.tar.gz 1209812 SHA256 ff5dc58ca8ad94de9b999bde3c53f49ac040dc09ad4b295ea22984d8d7df4f82 SHA512 b3c3e5fa3c265082d6f68def987a6805edba3798b37390c1e8099e2cecc71a9f6080481036991f654fa02b1a09d6b2107156aa533d14d0bfc0cb2d09bc7e398c WHIRLPOOL a3ca0262d1d2b3d01e28406224afa3ae914fd9f21bb455b34070d5821dbd8211696204fd7143b2e3046a6d3afa098a1d179e7be2433126fa8c763459cb448032 +DIST opendkim-2.10.3.tar.gz 1210224 SHA256 43a0ba57bf942095fe159d0748d8933c6b1dd1117caf0273fa9a0003215e681b SHA512 97923e533d072c07ae4d16a46cbed95ee799aa50f19468d8bc6d1dc534025a8616c3b4b68b5842bc899b509349a2c9a67312d574a726b048c0ea46dd4fcc45d8 WHIRLPOOL 36bbf0f3e81fa291f31123d3614ba113b893d4ba76a5fe017cc9a393888c1ea95525b85e6042bc1db96e9a00e52aa13a251c38438cd03b0fd92b47d17036d680 +DIST opendkim-2.9.2.tar.gz 1229383 SHA256 1f0c66afbe48f6223d2ab985b2c27594ae45035e3e81eba887d8ec6e5e1282c0 SHA512 f6fe77897927a93c9f57d09e5e9f43b1e73e2b21a586461b5665fb430eee1362b33d9601c8643d50d5a53c8e01b03c7af331f28cd992c9163f959723f21ebf63 WHIRLPOOL b61212d272d07c367c7d9ecb951466b66759b6d449047c10947681ea6889a1f2b2c12986e6c11a59620fb8ace3c0a177235f65f58c54c993909f61dee5cf3c3a +DIST opendkim-2.9.3.tar.gz 1230406 SHA256 79a84fc17fa6aa9428ed449b1b2b773b0a4cb4ac7fa69b01b178fe0b4691c533 SHA512 9ed79f4cc595ef6dded8c1c1af77404ed629d88d2dad11c72fc0ff961bb9ab62037e010b29b651bc2cdcbdbabf001199b12544330a3af851b61d05518cf92053 WHIRLPOOL 5f24ecb5084babcd572f9cce9645aba92f1a68643bd4928b5040f3cad21f299380af746ad2dcefacc5803438a06c021a85da2be80ecf91308e7519d2df93cf51 diff --git a/mail-filter/opendkim/files/opendkim.init.r3 b/mail-filter/opendkim/files/opendkim.init.r3 new file mode 100644 index 000000000000..7f56da5c569a --- /dev/null +++ b/mail-filter/opendkim/files/opendkim.init.r3 @@ -0,0 +1,56 @@ +#!/sbin/runscript +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +CONFFILE=/etc/opendkim/${SVCNAME}.conf + +depend() { + use dns logger net + before mta +} + +check_cfg() { + + PIDFILE=$(sed -ne 's/^[[:space:]]*PidFile[[:space:]]\+//p' "${CONFFILE}") + local PIDDIR="${PIDFILE%/*}" + if [ ! -d "${PIDDIR}" ] ; then + checkpath -q -d -o milter:milter -m 0755 "${PIDDIR}" || return 1 + fi + if [ ! -f "${CONFFILE}" ] ; then + eerror "Configuration file ${CONFFILE} is missing" + return 1 + fi + if [ -z "${PIDFILE}" ] ; then + eerror "Configuration file needs PidFile setting - recommend adding 'PidFile /var/run/opendkim/${SVCNAME}.pid' to ${CONFFILE}" + return 1 + fi + + if egrep -q '^[[:space:]]*Background[[:space:]]+no' "${CONFFILE}" ; then + eerror "${SVCNAME} service cannot run with Background key set to yes!" + return 1 + fi +} + +start() { + check_cfg || return 1 + + # Remove stalled Unix socket if no other process is using it + local UNIX_SOCKET=$(sed -ne 's/^[[:space:]]*Socket[[:space:]]\+\(unix\|local\)://p' "${CONFFILE}") + + if [ -S "${UNIX_SOCKET}" ] && ! fuser -s "${UNIX_SOCKET}"; then + rm "${UNIX_SOCKET}" + fi + + ebegin "Starting OpenDKIM" + start-stop-daemon --start --pidfile "${PIDFILE}" \ + --exec /usr/sbin/opendkim -- -x "${CONFFILE}" + eend $? +} + +stop() { + check_cfg || return 1 + ebegin "Stopping OpenDKIM" + start-stop-daemon --stop --pidfile "${PIDFILE}" + eend $? +} diff --git a/mail-filter/opendkim/files/opendkim.service b/mail-filter/opendkim/files/opendkim.service new file mode 100644 index 000000000000..be534d670bca --- /dev/null +++ b/mail-filter/opendkim/files/opendkim.service @@ -0,0 +1,11 @@ +[Unit] +Description=DomainKeys Identified Mail (DKIM) Milter +Documentation=man:opendkim(8) man:opendkim.conf(5) man:opendkim-genkey(8) man:opendkim-genzone(8) man:opendkim-testadsp(8) man:opendkim-testkey http://www.opendkim.org/docs.html +After=network.target nss-lookup.target syslog.target + +[Service] +ExecStart=/usr/sbin/opendkim -f -x /etc/opendkim/opendkim.conf +ExecReload=/bin/kill -USR1 $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/mail-filter/opendkim/metadata.xml b/mail-filter/opendkim/metadata.xml new file mode 100644 index 000000000000..2eaf789b438a --- /dev/null +++ b/mail-filter/opendkim/metadata.xml @@ -0,0 +1,31 @@ + + + + net-mail + A program implementing the Milter API that signs and verifies +using the DKIM standard. This is a fork of Sendmail's DKIM-milter + + + Use the unbound dnssec library to perform DKIM DNS + queries. + Use opendbx backend to facilitate dataset driven + OpenDKIM configuration options like stats, bodylengthdb, etc. against a wide + variety of database types + Used to authenticate to a LDAP server in various ways if + required. + Enable openldap as a dataset facilitator or keys, + determining domains to sign for, and any other dataset that opendkim + supports. + Enables control over signature verification, filtering and + policy to be controlled by user defined lua scripts. + Use poll() instead of select() for the provided + asynchronous resolver library. + Add support for using dev-libs/libmemcached + + Add support for using dev-db/lmdb + + + opendkim + + diff --git a/mail-filter/opendkim/opendkim-2.10.0.ebuild b/mail-filter/opendkim/opendkim-2.10.0.ebuild new file mode 100644 index 000000000000..0e845b94a3fb --- /dev/null +++ b/mail-filter/opendkim/opendkim-2.10.0.ebuild @@ -0,0 +1,196 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +inherit autotools db-use eutils systemd user + +# for betas +#MY_P=${P/_b/.B} +#S=${WORKDIR}/${PN}-2.8.0 +#SRC_URI="mirror://sourceforge/opendkim/${MY_P}.tar.gz" + +DESCRIPTION="A milter-based application to provide DKIM signing and verification" +HOMEPAGE="http://opendkim.org" +SRC_URI="mirror://sourceforge/opendkim/${P}.tar.gz" + +LICENSE="Sendmail-Open-Source BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="+berkdb gnutls ldap lmdb lua memcached opendbx poll sasl selinux +ssl static-libs unbound" + +DEPEND="|| ( mail-filter/libmilter mail-mta/sendmail ) + dev-libs/libbsd + ssl? ( >=dev-libs/openssl-0.9.8 ) + berkdb? ( >=sys-libs/db-3.2 ) + opendbx? ( >=dev-db/opendbx-1.4.0 ) + lua? ( dev-lang/lua ) + ldap? ( net-nds/openldap ) + lmdb? ( dev-db/lmdb ) + memcached? ( dev-libs/libmemcached ) + sasl? ( dev-libs/cyrus-sasl ) + unbound? ( >=net-dns/unbound-1.4.1 net-dns/dnssec-root ) + !unbound? ( net-libs/ldns ) + gnutls? ( >=net-libs/gnutls-2.11.7 )" + +RDEPEND="${DEPEND} + sys-process/psmisc + selinux? ( sec-policy/selinux-dkim ) +" + +REQUIRED_USE="sasl? ( ldap )" + +pkg_setup() { + enewgroup milter + # mail-milter/spamass-milter creates milter user with this home directory + # For consistency reasons, milter user must be created here with this home directory + # even though this package doesn't need a home directory for this user (#280571) + enewuser milter -1 -1 /var/lib/milter milter +} + +src_prepare() { + sed -i -e 's:/var/db/dkim:/etc/opendkim:g' \ + -e 's:/var/db/opendkim:/var/lib/opendkim:g' \ + -e 's:/etc/mail:/etc/opendkim:g' \ + -e 's:mailnull:milter:g' \ + -e 's:^#[[:space:]]*PidFile.*:PidFile /run/opendkim/opendkim.pid:' \ + opendkim/opendkim.conf.sample opendkim/opendkim.conf.simple.in \ + stats/opendkim-reportstats{,.in} || die + + sed -i -e 's:dist_doc_DATA:dist_html_DATA:' libopendkim/docs/Makefile.am \ + || die + + #sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/tmp":' opendkim/tests/*.lua + #sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/proc/self/cwd":' opendkim/tests/*.lua + + eautoreconf +} + +src_configure() { + local myconf + if use berkdb ; then + myconf=$(db_includedir) + myconf="--with-db-incdir=${myconf#-I}" + myconf+=" --enable-popauth" + myconf+=" --enable-query_cache" + myconf+=" --enable-stats" + fi + if use unbound; then + myconf+=" --with-unbound" + else + myconf+=" --with-ldns" + fi + if use ldap; then + myconf+=" $(use_with sasl)" + fi + econf \ + $(use_with berkdb db) \ + $(use_with opendbx odbx) \ + $(use_with lua) \ + $(use_enable lua rbl) \ + $(use_with ldap openldap) \ + $(use_with lmdb) \ + $(use_enable poll) \ + $(use_enable static-libs static) \ + $(use_with gnutls) \ + $(use_with memcached libmemcached) \ + ${myconf} \ + --docdir=/usr/share/doc/${PF} \ + --htmldir=/usr/share/doc/${PF}/html \ + --enable-filter \ + --enable-atps \ + --enable-identity_header \ + --enable-rate_limit \ + --enable-resign \ + --enable-replace_rules \ + --enable-default_sender \ + --enable-sender_macro \ + --enable-vbr \ + --disable-live-testing \ + --with-test-socket=/tmp/opendkim-$(echo ${RANDOM})-S + #--disable-rpath +} + +src_install() { + emake DESTDIR="${D}" install + + dosbin stats/opendkim-reportstats + + newinitd "${FILESDIR}/opendkim.init.r3" opendkim + systemd_dounit "${FILESDIR}/opendkim.service" + + dodir /etc/opendkim /var/lib/opendkim + fowners milter:milter /var/lib/opendkim + + # default configuration + if [ ! -f "${ROOT}"/etc/opendkim/opendkim.conf ]; then + grep ^[^#] "${S}"/opendkim/opendkim.conf.simple \ + > "${D}"/etc/opendkim/opendkim.conf + if use unbound; then + echo TrustAnchorFile /etc/dnssec/root-anchors.txt >> "${D}"/etc/opendkim/opendkim.conf + fi + echo UserID milter >> "${D}"/etc/opendkim/opendkim.conf + if use berkdb; then + echo Statistics /var/lib/opendkim/stats.dat >> \ + "${D}"/etc/opendkim/opendkim.conf + fi + fi + + use static-libs || find "${D}" -name "*.la" -delete +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSION} ]]; then + elog "If you want to sign your mail messages and need some help" + elog "please run:" + elog " emerge --config ${CATEGORY}/${PN}" + elog "It will help you create your key and give you hints on how" + elog "to configure your DNS and MTA." + + ewarn "Make sure your MTA has r/w access to the socket file." + ewarn "This can be done either by setting UMask to 002 and adding MTA's user" + ewarn "to milter group or you can simply set UMask to 000." + fi +} + +pkg_config() { + local selector keysize pubkey + + read -p "Enter the selector name (default ${HOSTNAME}): " selector + [[ -n "${selector}" ]] || selector=${HOSTNAME} + if [[ -z "${selector}" ]]; then + eerror "Oddly enough, you don't have a HOSTNAME." + return 1 + fi + if [[ -f "${ROOT}"etc/opendkim/${selector}.private ]]; then + ewarn "The private key for this selector already exists." + else + keysize=1024 + # generate the private and public keys + opendkim-genkey -b ${keysize} -D "${ROOT}"etc/opendkim/ \ + -s ${selector} -d '(your domain)' && \ + chown milter:milter \ + "${ROOT}"etc/opendkim/"${selector}".private || \ + { eerror "Failed to create private and public keys." ; return 1; } + chmod go-r "${ROOT}"etc/opendkim/"${selector}".private + fi + + # opendkim selector configuration + echo + einfo "Make sure you have the following settings in your /etc/opendkim/opendkim.conf:" + einfo " Keyfile /etc/opendkim/${selector}.private" + einfo " Selector ${selector}" + + # MTA configuration + echo + einfo "If you are using Postfix, add following lines to your main.cf:" + einfo " smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " and read http://www.postfix.org/MILTER_README.html" + + # DNS configuration + einfo "After you configured your MTA, publish your key by adding this TXT record to your domain:" + cat "${ROOT}"etc/opendkim/${selector}.txt + einfo "t=y signifies you only test the DKIM on your domain. See following page for the complete list of tags:" + einfo " http://www.dkim.org/specs/rfc4871-dkimbase.html#key-text" +} diff --git a/mail-filter/opendkim/opendkim-2.10.2.ebuild b/mail-filter/opendkim/opendkim-2.10.2.ebuild new file mode 100644 index 000000000000..ec16223826f7 --- /dev/null +++ b/mail-filter/opendkim/opendkim-2.10.2.ebuild @@ -0,0 +1,196 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +inherit autotools db-use eutils systemd user + +# for betas +#MY_P=${P/_b/.B} +#S=${WORKDIR}/${PN}-2.8.0 +#SRC_URI="mirror://sourceforge/opendkim/${MY_P}.tar.gz" + +DESCRIPTION="A milter-based application to provide DKIM signing and verification" +HOMEPAGE="http://opendkim.org" +SRC_URI="mirror://sourceforge/opendkim/${P}.tar.gz" + +LICENSE="Sendmail-Open-Source BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="+berkdb gnutls ldap lmdb lua memcached opendbx poll sasl selinux +ssl static-libs unbound" + +DEPEND="|| ( mail-filter/libmilter mail-mta/sendmail ) + dev-libs/libbsd + ssl? ( >=dev-libs/openssl-0.9.8:* ) + berkdb? ( >=sys-libs/db-3.2:* ) + opendbx? ( >=dev-db/opendbx-1.4.0 ) + lua? ( dev-lang/lua:* ) + ldap? ( net-nds/openldap ) + lmdb? ( dev-db/lmdb ) + memcached? ( dev-libs/libmemcached ) + sasl? ( dev-libs/cyrus-sasl ) + unbound? ( >=net-dns/unbound-1.4.1 net-dns/dnssec-root ) + !unbound? ( net-libs/ldns ) + gnutls? ( >=net-libs/gnutls-2.11.7 )" + +RDEPEND="${DEPEND} + sys-process/psmisc + selinux? ( sec-policy/selinux-dkim ) +" + +REQUIRED_USE="sasl? ( ldap )" + +pkg_setup() { + enewgroup milter + # mail-milter/spamass-milter creates milter user with this home directory + # For consistency reasons, milter user must be created here with this home directory + # even though this package doesn't need a home directory for this user (#280571) + enewuser milter -1 -1 /var/lib/milter milter +} + +src_prepare() { + sed -i -e 's:/var/db/dkim:/etc/opendkim:g' \ + -e 's:/var/db/opendkim:/var/lib/opendkim:g' \ + -e 's:/etc/mail:/etc/opendkim:g' \ + -e 's:mailnull:milter:g' \ + -e 's:^#[[:space:]]*PidFile.*:PidFile /run/opendkim/opendkim.pid:' \ + opendkim/opendkim.conf.sample opendkim/opendkim.conf.simple.in \ + stats/opendkim-reportstats{,.in} || die + + sed -i -e 's:dist_doc_DATA:dist_html_DATA:' libopendkim/docs/Makefile.am \ + || die + + sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/tmp":' opendkim/tests/*.lua + sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/proc/self/cwd":' opendkim/tests/*.lua + + eautoreconf +} + +src_configure() { + local myconf + if use berkdb ; then + myconf=$(db_includedir) + myconf="--with-db-incdir=${myconf#-I}" + myconf+=" --enable-popauth" + myconf+=" --enable-query_cache" + myconf+=" --enable-stats" + fi + if use unbound; then + myconf+=" --with-unbound" + else + myconf+=" --with-ldns" + fi + if use ldap; then + myconf+=" $(use_with sasl)" + fi + econf \ + $(use_with berkdb db) \ + $(use_with opendbx odbx) \ + $(use_with lua) \ + $(use_enable lua rbl) \ + $(use_with ldap openldap) \ + $(use_with lmdb) \ + $(use_enable poll) \ + $(use_enable static-libs static) \ + $(use_with gnutls) \ + $(use_with memcached libmemcached) \ + ${myconf} \ + --docdir=/usr/share/doc/${PF} \ + --htmldir=/usr/share/doc/${PF}/html \ + --enable-filter \ + --enable-atps \ + --enable-identity_header \ + --enable-rate_limit \ + --enable-resign \ + --enable-replace_rules \ + --enable-default_sender \ + --enable-sender_macro \ + --enable-vbr \ + --disable-live-testing + #--with-test-socket=/tmp/opendkim-$(echo ${RANDOM})-S + #--disable-rpath +} + +src_install() { + emake DESTDIR="${D}" install + + dosbin stats/opendkim-reportstats + + newinitd "${FILESDIR}/opendkim.init.r3" opendkim + systemd_dounit "${FILESDIR}/opendkim.service" + + dodir /etc/opendkim /var/lib/opendkim + fowners milter:milter /var/lib/opendkim + + # default configuration + if [ ! -f "${ROOT}"/etc/opendkim/opendkim.conf ]; then + grep ^[^#] "${S}"/opendkim/opendkim.conf.simple \ + > "${D}"/etc/opendkim/opendkim.conf + if use unbound; then + echo TrustAnchorFile /etc/dnssec/root-anchors.txt >> "${D}"/etc/opendkim/opendkim.conf + fi + echo UserID milter >> "${D}"/etc/opendkim/opendkim.conf + if use berkdb; then + echo Statistics /var/lib/opendkim/stats.dat >> \ + "${D}"/etc/opendkim/opendkim.conf + fi + fi + + use static-libs || find "${D}" -name "*.la" -delete +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSION} ]]; then + elog "If you want to sign your mail messages and need some help" + elog "please run:" + elog " emerge --config ${CATEGORY}/${PN}" + elog "It will help you create your key and give you hints on how" + elog "to configure your DNS and MTA." + + ewarn "Make sure your MTA has r/w access to the socket file." + ewarn "This can be done either by setting UMask to 002 and adding MTA's user" + ewarn "to milter group or you can simply set UMask to 000." + fi +} + +pkg_config() { + local selector keysize pubkey + + read -p "Enter the selector name (default ${HOSTNAME}): " selector + [[ -n "${selector}" ]] || selector=${HOSTNAME} + if [[ -z "${selector}" ]]; then + eerror "Oddly enough, you don't have a HOSTNAME." + return 1 + fi + if [[ -f "${ROOT}"etc/opendkim/${selector}.private ]]; then + ewarn "The private key for this selector already exists." + else + keysize=1024 + # generate the private and public keys + opendkim-genkey -b ${keysize} -D "${ROOT}"etc/opendkim/ \ + -s ${selector} -d '(your domain)' && \ + chown milter:milter \ + "${ROOT}"etc/opendkim/"${selector}".private || \ + { eerror "Failed to create private and public keys." ; return 1; } + chmod go-r "${ROOT}"etc/opendkim/"${selector}".private + fi + + # opendkim selector configuration + echo + einfo "Make sure you have the following settings in your /etc/opendkim/opendkim.conf:" + einfo " Keyfile /etc/opendkim/${selector}.private" + einfo " Selector ${selector}" + + # MTA configuration + echo + einfo "If you are using Postfix, add following lines to your main.cf:" + einfo " smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " and read http://www.postfix.org/MILTER_README.html" + + # DNS configuration + einfo "After you configured your MTA, publish your key by adding this TXT record to your domain:" + cat "${ROOT}"etc/opendkim/${selector}.txt + einfo "t=y signifies you only test the DKIM on your domain. See following page for the complete list of tags:" + einfo " http://www.dkim.org/specs/rfc4871-dkimbase.html#key-text" +} diff --git a/mail-filter/opendkim/opendkim-2.10.3.ebuild b/mail-filter/opendkim/opendkim-2.10.3.ebuild new file mode 100644 index 000000000000..ec16223826f7 --- /dev/null +++ b/mail-filter/opendkim/opendkim-2.10.3.ebuild @@ -0,0 +1,196 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +inherit autotools db-use eutils systemd user + +# for betas +#MY_P=${P/_b/.B} +#S=${WORKDIR}/${PN}-2.8.0 +#SRC_URI="mirror://sourceforge/opendkim/${MY_P}.tar.gz" + +DESCRIPTION="A milter-based application to provide DKIM signing and verification" +HOMEPAGE="http://opendkim.org" +SRC_URI="mirror://sourceforge/opendkim/${P}.tar.gz" + +LICENSE="Sendmail-Open-Source BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="+berkdb gnutls ldap lmdb lua memcached opendbx poll sasl selinux +ssl static-libs unbound" + +DEPEND="|| ( mail-filter/libmilter mail-mta/sendmail ) + dev-libs/libbsd + ssl? ( >=dev-libs/openssl-0.9.8:* ) + berkdb? ( >=sys-libs/db-3.2:* ) + opendbx? ( >=dev-db/opendbx-1.4.0 ) + lua? ( dev-lang/lua:* ) + ldap? ( net-nds/openldap ) + lmdb? ( dev-db/lmdb ) + memcached? ( dev-libs/libmemcached ) + sasl? ( dev-libs/cyrus-sasl ) + unbound? ( >=net-dns/unbound-1.4.1 net-dns/dnssec-root ) + !unbound? ( net-libs/ldns ) + gnutls? ( >=net-libs/gnutls-2.11.7 )" + +RDEPEND="${DEPEND} + sys-process/psmisc + selinux? ( sec-policy/selinux-dkim ) +" + +REQUIRED_USE="sasl? ( ldap )" + +pkg_setup() { + enewgroup milter + # mail-milter/spamass-milter creates milter user with this home directory + # For consistency reasons, milter user must be created here with this home directory + # even though this package doesn't need a home directory for this user (#280571) + enewuser milter -1 -1 /var/lib/milter milter +} + +src_prepare() { + sed -i -e 's:/var/db/dkim:/etc/opendkim:g' \ + -e 's:/var/db/opendkim:/var/lib/opendkim:g' \ + -e 's:/etc/mail:/etc/opendkim:g' \ + -e 's:mailnull:milter:g' \ + -e 's:^#[[:space:]]*PidFile.*:PidFile /run/opendkim/opendkim.pid:' \ + opendkim/opendkim.conf.sample opendkim/opendkim.conf.simple.in \ + stats/opendkim-reportstats{,.in} || die + + sed -i -e 's:dist_doc_DATA:dist_html_DATA:' libopendkim/docs/Makefile.am \ + || die + + sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/tmp":' opendkim/tests/*.lua + sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/proc/self/cwd":' opendkim/tests/*.lua + + eautoreconf +} + +src_configure() { + local myconf + if use berkdb ; then + myconf=$(db_includedir) + myconf="--with-db-incdir=${myconf#-I}" + myconf+=" --enable-popauth" + myconf+=" --enable-query_cache" + myconf+=" --enable-stats" + fi + if use unbound; then + myconf+=" --with-unbound" + else + myconf+=" --with-ldns" + fi + if use ldap; then + myconf+=" $(use_with sasl)" + fi + econf \ + $(use_with berkdb db) \ + $(use_with opendbx odbx) \ + $(use_with lua) \ + $(use_enable lua rbl) \ + $(use_with ldap openldap) \ + $(use_with lmdb) \ + $(use_enable poll) \ + $(use_enable static-libs static) \ + $(use_with gnutls) \ + $(use_with memcached libmemcached) \ + ${myconf} \ + --docdir=/usr/share/doc/${PF} \ + --htmldir=/usr/share/doc/${PF}/html \ + --enable-filter \ + --enable-atps \ + --enable-identity_header \ + --enable-rate_limit \ + --enable-resign \ + --enable-replace_rules \ + --enable-default_sender \ + --enable-sender_macro \ + --enable-vbr \ + --disable-live-testing + #--with-test-socket=/tmp/opendkim-$(echo ${RANDOM})-S + #--disable-rpath +} + +src_install() { + emake DESTDIR="${D}" install + + dosbin stats/opendkim-reportstats + + newinitd "${FILESDIR}/opendkim.init.r3" opendkim + systemd_dounit "${FILESDIR}/opendkim.service" + + dodir /etc/opendkim /var/lib/opendkim + fowners milter:milter /var/lib/opendkim + + # default configuration + if [ ! -f "${ROOT}"/etc/opendkim/opendkim.conf ]; then + grep ^[^#] "${S}"/opendkim/opendkim.conf.simple \ + > "${D}"/etc/opendkim/opendkim.conf + if use unbound; then + echo TrustAnchorFile /etc/dnssec/root-anchors.txt >> "${D}"/etc/opendkim/opendkim.conf + fi + echo UserID milter >> "${D}"/etc/opendkim/opendkim.conf + if use berkdb; then + echo Statistics /var/lib/opendkim/stats.dat >> \ + "${D}"/etc/opendkim/opendkim.conf + fi + fi + + use static-libs || find "${D}" -name "*.la" -delete +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSION} ]]; then + elog "If you want to sign your mail messages and need some help" + elog "please run:" + elog " emerge --config ${CATEGORY}/${PN}" + elog "It will help you create your key and give you hints on how" + elog "to configure your DNS and MTA." + + ewarn "Make sure your MTA has r/w access to the socket file." + ewarn "This can be done either by setting UMask to 002 and adding MTA's user" + ewarn "to milter group or you can simply set UMask to 000." + fi +} + +pkg_config() { + local selector keysize pubkey + + read -p "Enter the selector name (default ${HOSTNAME}): " selector + [[ -n "${selector}" ]] || selector=${HOSTNAME} + if [[ -z "${selector}" ]]; then + eerror "Oddly enough, you don't have a HOSTNAME." + return 1 + fi + if [[ -f "${ROOT}"etc/opendkim/${selector}.private ]]; then + ewarn "The private key for this selector already exists." + else + keysize=1024 + # generate the private and public keys + opendkim-genkey -b ${keysize} -D "${ROOT}"etc/opendkim/ \ + -s ${selector} -d '(your domain)' && \ + chown milter:milter \ + "${ROOT}"etc/opendkim/"${selector}".private || \ + { eerror "Failed to create private and public keys." ; return 1; } + chmod go-r "${ROOT}"etc/opendkim/"${selector}".private + fi + + # opendkim selector configuration + echo + einfo "Make sure you have the following settings in your /etc/opendkim/opendkim.conf:" + einfo " Keyfile /etc/opendkim/${selector}.private" + einfo " Selector ${selector}" + + # MTA configuration + echo + einfo "If you are using Postfix, add following lines to your main.cf:" + einfo " smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " and read http://www.postfix.org/MILTER_README.html" + + # DNS configuration + einfo "After you configured your MTA, publish your key by adding this TXT record to your domain:" + cat "${ROOT}"etc/opendkim/${selector}.txt + einfo "t=y signifies you only test the DKIM on your domain. See following page for the complete list of tags:" + einfo " http://www.dkim.org/specs/rfc4871-dkimbase.html#key-text" +} diff --git a/mail-filter/opendkim/opendkim-2.9.2-r1.ebuild b/mail-filter/opendkim/opendkim-2.9.2-r1.ebuild new file mode 100644 index 000000000000..6f7cb7dedb4f --- /dev/null +++ b/mail-filter/opendkim/opendkim-2.9.2-r1.ebuild @@ -0,0 +1,197 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +inherit autotools db-use eutils systemd user + +# for betas +#MY_P=${P/_b/.B} +#S=${WORKDIR}/${PN}-2.8.0 +#SRC_URI="mirror://sourceforge/opendkim/${MY_P}.tar.gz" + +DESCRIPTION="A milter-based application to provide DKIM signing and verification" +HOMEPAGE="http://opendkim.org" +SRC_URI="mirror://sourceforge/opendkim/${P}.tar.gz" + +LICENSE="Sendmail-Open-Source BSD" +SLOT="0" +KEYWORDS="amd64 ~arm x86" +IUSE="+berkdb gnutls ldap lmdb lua memcached opendbx poll sasl selinux +ssl static-libs unbound" + +DEPEND="|| ( mail-filter/libmilter mail-mta/sendmail ) + dev-libs/libbsd + ssl? ( >=dev-libs/openssl-0.9.8 ) + berkdb? ( >=sys-libs/db-3.2 ) + opendbx? ( >=dev-db/opendbx-1.4.0 ) + lua? ( dev-lang/lua ) + ldap? ( net-nds/openldap ) + lmdb? ( dev-db/lmdb ) + memcached? ( dev-libs/libmemcached ) + sasl? ( dev-libs/cyrus-sasl ) + unbound? ( >=net-dns/unbound-1.4.1 net-dns/dnssec-root ) + !unbound? ( net-libs/ldns ) + gnutls? ( >=net-libs/gnutls-2.11.7 )" + +RDEPEND="${DEPEND} + sys-process/psmisc + selinux? ( sec-policy/selinux-dkim ) +" + +REQUIRED_USE="sasl? ( ldap )" + +pkg_setup() { + enewgroup milter + # mail-milter/spamass-milter creates milter user with this home directory + # For consistency reasons, milter user must be created here with this home directory + # even though this package doesn't need a home directory for this user (#280571) + enewuser milter -1 -1 /var/lib/milter milter +} + +src_prepare() { + sed -i -e 's:/var/db/dkim:/etc/opendkim:g' \ + -e 's:/var/db/opendkim:/var/lib/opendkim:g' \ + -e 's:/etc/mail:/etc/opendkim:g' \ + -e 's:mailnull:milter:g' \ + -e 's:^#[[:space:]]*PidFile.*:PidFile /var/run/opendkim/opendkim.pid:' \ + opendkim/opendkim.conf.sample opendkim/opendkim.conf.simple.in \ + stats/opendkim-reportstats{,.in} || die + + sed -i -e 's:dist_doc_DATA:dist_html_DATA:' libopendkim/docs/Makefile.am \ + || die + + #sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/tmp":' opendkim/tests/*.lua + sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/proc/self/cwd":' opendkim/tests/*.lua + + eautoreconf +} + +src_configure() { + local myconf + if use berkdb ; then + myconf=$(db_includedir) + myconf="--with-db-incdir=${myconf#-I}" + myconf+=" --enable-popauth" + myconf+=" --enable-query_cache" + myconf+=" --enable-stats" + fi + if use unbound; then + myconf+=" --with-unbound" + else + myconf+=" --with-ldns" + fi + if use ldap; then + myconf+=" $(use_with sasl)" + fi + econf \ + $(use_with berkdb db) \ + $(use_with opendbx odbx) \ + $(use_with lua) \ + $(use_enable lua rbl) \ + $(use_with ldap openldap) \ + $(use_with lmdb) \ + $(use_enable poll) \ + $(use_enable static-libs static) \ + $(use_with gnutls) \ + $(use_with memcached libmemcached) \ + ${myconf} \ + --docdir=/usr/share/doc/${PF} \ + --htmldir=/usr/share/doc/${PF}/html \ + --enable-filter \ + --enable-adsp_lists \ + --enable-atps \ + --enable-identity_header \ + --enable-rate_limit \ + --enable-resign \ + --enable-replace_rules \ + --enable-default_sender \ + --enable-sender_macro \ + --enable-vbr \ + --disable-live-testing + #--disable-rpath \ + #--with-test-socket=/tmp/opendkim-$(echo ${RANDOM})-S +} + +src_install() { + emake DESTDIR="${D}" install + + dosbin stats/opendkim-reportstats + + newinitd "${FILESDIR}/opendkim.init.r3" opendkim + systemd_dounit "${FILESDIR}/opendkim.service" + + dodir /etc/opendkim /var/lib/opendkim + fowners milter:milter /var/lib/opendkim + + # default configuration + if [ ! -f "${ROOT}"/etc/opendkim/opendkim.conf ]; then + grep ^[^#] "${S}"/opendkim/opendkim.conf.simple \ + > "${D}"/etc/opendkim/opendkim.conf + if use unbound; then + echo TrustAnchorFile /etc/dnssec/root-anchors.txt >> "${D}"/etc/opendkim/opendkim.conf + fi + echo UserID milter >> "${D}"/etc/opendkim/opendkim.conf + if use berkdb; then + echo Statistics /var/lib/opendkim/stats.dat >> \ + "${D}"/etc/opendkim/opendkim.conf + fi + fi + + use static-libs || find "${D}" -name "*.la" -delete +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSION} ]]; then + elog "If you want to sign your mail messages and need some help" + elog "please run:" + elog " emerge --config ${CATEGORY}/${PN}" + elog "It will help you create your key and give you hints on how" + elog "to configure your DNS and MTA." + + ewarn "Make sure your MTA has r/w access to the socket file." + ewarn "This can be done either by setting UMask to 002 and adding MTA's user" + ewarn "to milter group or you can simply set UMask to 000." + fi +} + +pkg_config() { + local selector keysize pubkey + + read -p "Enter the selector name (default ${HOSTNAME}): " selector + [[ -n "${selector}" ]] || selector=${HOSTNAME} + if [[ -z "${selector}" ]]; then + eerror "Oddly enough, you don't have a HOSTNAME." + return 1 + fi + if [[ -f "${ROOT}"etc/opendkim/${selector}.private ]]; then + ewarn "The private key for this selector already exists." + else + keysize=1024 + # generate the private and public keys + opendkim-genkey -b ${keysize} -D "${ROOT}"etc/opendkim/ \ + -s ${selector} -d '(your domain)' && \ + chown milter:milter \ + "${ROOT}"etc/opendkim/"${selector}".private || \ + { eerror "Failed to create private and public keys." ; return 1; } + chmod go-r "${ROOT}"etc/opendkim/"${selector}".private + fi + + # opendkim selector configuration + echo + einfo "Make sure you have the following settings in your /etc/opendkim/opendkim.conf:" + einfo " Keyfile /etc/opendkim/${selector}.private" + einfo " Selector ${selector}" + + # MTA configuration + echo + einfo "If you are using Postfix, add following lines to your main.cf:" + einfo " smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " and read http://www.postfix.org/MILTER_README.html" + + # DNS configuration + einfo "After you configured your MTA, publish your key by adding this TXT record to your domain:" + cat "${ROOT}"etc/opendkim/${selector}.txt + einfo "t=y signifies you only test the DKIM on your domain. See following page for the complete list of tags:" + einfo " http://www.dkim.org/specs/rfc4871-dkimbase.html#key-text" +} diff --git a/mail-filter/opendkim/opendkim-2.9.3.ebuild b/mail-filter/opendkim/opendkim-2.9.3.ebuild new file mode 100644 index 000000000000..03b441ca1086 --- /dev/null +++ b/mail-filter/opendkim/opendkim-2.9.3.ebuild @@ -0,0 +1,197 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +inherit autotools db-use eutils systemd user + +# for betas +#MY_P=${P/_b/.B} +#S=${WORKDIR}/${PN}-2.8.0 +#SRC_URI="mirror://sourceforge/opendkim/${MY_P}.tar.gz" + +DESCRIPTION="A milter-based application to provide DKIM signing and verification" +HOMEPAGE="http://opendkim.org" +SRC_URI="mirror://sourceforge/opendkim/${P}.tar.gz" + +LICENSE="Sendmail-Open-Source BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="+berkdb gnutls ldap lmdb lua memcached opendbx poll sasl selinux +ssl static-libs unbound" + +DEPEND="|| ( mail-filter/libmilter mail-mta/sendmail ) + dev-libs/libbsd + ssl? ( >=dev-libs/openssl-0.9.8 ) + berkdb? ( >=sys-libs/db-3.2 ) + opendbx? ( >=dev-db/opendbx-1.4.0 ) + lua? ( dev-lang/lua ) + ldap? ( net-nds/openldap ) + lmdb? ( dev-db/lmdb ) + memcached? ( dev-libs/libmemcached ) + sasl? ( dev-libs/cyrus-sasl ) + unbound? ( >=net-dns/unbound-1.4.1 net-dns/dnssec-root ) + !unbound? ( net-libs/ldns ) + gnutls? ( >=net-libs/gnutls-2.11.7 )" + +RDEPEND="${DEPEND} + sys-process/psmisc + selinux? ( sec-policy/selinux-dkim ) +" + +REQUIRED_USE="sasl? ( ldap )" + +pkg_setup() { + enewgroup milter + # mail-milter/spamass-milter creates milter user with this home directory + # For consistency reasons, milter user must be created here with this home directory + # even though this package doesn't need a home directory for this user (#280571) + enewuser milter -1 -1 /var/lib/milter milter +} + +src_prepare() { + sed -i -e 's:/var/db/dkim:/etc/opendkim:g' \ + -e 's:/var/db/opendkim:/var/lib/opendkim:g' \ + -e 's:/etc/mail:/etc/opendkim:g' \ + -e 's:mailnull:milter:g' \ + -e 's:^#[[:space:]]*PidFile.*:PidFile /run/opendkim/opendkim.pid:' \ + opendkim/opendkim.conf.sample opendkim/opendkim.conf.simple.in \ + stats/opendkim-reportstats{,.in} || die + + sed -i -e 's:dist_doc_DATA:dist_html_DATA:' libopendkim/docs/Makefile.am \ + || die + + #sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/tmp":' opendkim/tests/*.lua + sed -i -e '/sock.*mt.getcwd/s:mt.getcwd():"/proc/self/cwd":' opendkim/tests/*.lua + + eautoreconf +} + +src_configure() { + local myconf + if use berkdb ; then + myconf=$(db_includedir) + myconf="--with-db-incdir=${myconf#-I}" + myconf+=" --enable-popauth" + myconf+=" --enable-query_cache" + myconf+=" --enable-stats" + fi + if use unbound; then + myconf+=" --with-unbound" + else + myconf+=" --with-ldns" + fi + if use ldap; then + myconf+=" $(use_with sasl)" + fi + econf \ + $(use_with berkdb db) \ + $(use_with opendbx odbx) \ + $(use_with lua) \ + $(use_enable lua rbl) \ + $(use_with ldap openldap) \ + $(use_with lmdb) \ + $(use_enable poll) \ + $(use_enable static-libs static) \ + $(use_with gnutls) \ + $(use_with memcached libmemcached) \ + ${myconf} \ + --docdir=/usr/share/doc/${PF} \ + --htmldir=/usr/share/doc/${PF}/html \ + --enable-filter \ + --enable-adsp_lists \ + --enable-atps \ + --enable-identity_header \ + --enable-rate_limit \ + --enable-resign \ + --enable-replace_rules \ + --enable-default_sender \ + --enable-sender_macro \ + --enable-vbr \ + --disable-live-testing + #--disable-rpath \ + #--with-test-socket=/tmp/opendkim-$(echo ${RANDOM})-S +} + +src_install() { + emake DESTDIR="${D}" install + + dosbin stats/opendkim-reportstats + + newinitd "${FILESDIR}/opendkim.init.r3" opendkim + systemd_dounit "${FILESDIR}/opendkim.service" + + dodir /etc/opendkim /var/lib/opendkim + fowners milter:milter /var/lib/opendkim + + # default configuration + if [ ! -f "${ROOT}"/etc/opendkim/opendkim.conf ]; then + grep ^[^#] "${S}"/opendkim/opendkim.conf.simple \ + > "${D}"/etc/opendkim/opendkim.conf + if use unbound; then + echo TrustAnchorFile /etc/dnssec/root-anchors.txt >> "${D}"/etc/opendkim/opendkim.conf + fi + echo UserID milter >> "${D}"/etc/opendkim/opendkim.conf + if use berkdb; then + echo Statistics /var/lib/opendkim/stats.dat >> \ + "${D}"/etc/opendkim/opendkim.conf + fi + fi + + use static-libs || find "${D}" -name "*.la" -delete +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSION} ]]; then + elog "If you want to sign your mail messages and need some help" + elog "please run:" + elog " emerge --config ${CATEGORY}/${PN}" + elog "It will help you create your key and give you hints on how" + elog "to configure your DNS and MTA." + + ewarn "Make sure your MTA has r/w access to the socket file." + ewarn "This can be done either by setting UMask to 002 and adding MTA's user" + ewarn "to milter group or you can simply set UMask to 000." + fi +} + +pkg_config() { + local selector keysize pubkey + + read -p "Enter the selector name (default ${HOSTNAME}): " selector + [[ -n "${selector}" ]] || selector=${HOSTNAME} + if [[ -z "${selector}" ]]; then + eerror "Oddly enough, you don't have a HOSTNAME." + return 1 + fi + if [[ -f "${ROOT}"etc/opendkim/${selector}.private ]]; then + ewarn "The private key for this selector already exists." + else + keysize=1024 + # generate the private and public keys + opendkim-genkey -b ${keysize} -D "${ROOT}"etc/opendkim/ \ + -s ${selector} -d '(your domain)' && \ + chown milter:milter \ + "${ROOT}"etc/opendkim/"${selector}".private || \ + { eerror "Failed to create private and public keys." ; return 1; } + chmod go-r "${ROOT}"etc/opendkim/"${selector}".private + fi + + # opendkim selector configuration + echo + einfo "Make sure you have the following settings in your /etc/opendkim/opendkim.conf:" + einfo " Keyfile /etc/opendkim/${selector}.private" + einfo " Selector ${selector}" + + # MTA configuration + echo + einfo "If you are using Postfix, add following lines to your main.cf:" + einfo " smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock" + einfo " and read http://www.postfix.org/MILTER_README.html" + + # DNS configuration + einfo "After you configured your MTA, publish your key by adding this TXT record to your domain:" + cat "${ROOT}"etc/opendkim/${selector}.txt + einfo "t=y signifies you only test the DKIM on your domain. See following page for the complete list of tags:" + einfo " http://www.dkim.org/specs/rfc4871-dkimbase.html#key-text" +} -- cgit v1.2.3-65-gdbad