diff options
Diffstat (limited to 'main')
-rw-r--r-- | main/opensmtpd/00-opensmtpd.patch | 498 | ||||
-rw-r--r-- | main/opensmtpd/APKBUILD | 79 | ||||
-rw-r--r-- | main/opensmtpd/aliases | 63 | ||||
-rw-r--r-- | main/opensmtpd/opensmtpd.post-install | 5 | ||||
-rw-r--r-- | main/opensmtpd/opensmtpd.pre-install | 11 | ||||
-rw-r--r-- | main/opensmtpd/smtpd.initd | 24 |
6 files changed, 680 insertions, 0 deletions
diff --git a/main/opensmtpd/00-opensmtpd.patch b/main/opensmtpd/00-opensmtpd.patch new file mode 100644 index 0000000000..243b0a4d97 --- /dev/null +++ b/main/opensmtpd/00-opensmtpd.patch @@ -0,0 +1,498 @@ +diff --git a/configure.ac b/configure.ac +index a93a08f..55f41c1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -685,6 +685,7 @@ AC_CHECK_FUNCS([ \ + getpeereid \ + getspnam \ + inet_aton \ ++ inet_net_pton \ + inet_ntoa \ + inet_ntop \ + isblank \ +@@ -693,6 +694,7 @@ AC_CHECK_FUNCS([ \ + pidfile \ + pw_dup \ + reallocarray \ ++ res_hnok \ + setenv \ + setlinebuf \ + setproctitle \ +diff --git a/openbsd-compat/Makefile.am b/openbsd-compat/Makefile.am +index 5c55faa..fdee88e 100644 +--- a/openbsd-compat/Makefile.am ++++ b/openbsd-compat/Makefile.am +@@ -5,9 +5,9 @@ libopenbsd_compat_a_SOURCES = \ + bsd-getpeereid.c bsd-misc.c bsd-waitpid.c clock_gettime.c \ + daemon.c dirname.c entropy.c errc.c event_asr_run.c explicit_bzero.c \ + fgetln.c fmt_scaled.c fparseln.c getopt.c imsg.c imsg-buffer.c \ +- libressl.c mktemp.c pidfile.c pw_dup.c reallocarray.c setresguid.c \ +- setproctitle.c strlcat.c strlcpy.c strmode.c strtonum.c \ +- strsep.c vis.c xmalloc.c ++ inet_net_pton.c libressl.c mktemp.c pidfile.c pw_dup.c reallocarray.c \ ++ res_hnok.c setresguid.c setproctitle.c strlcat.c strlcpy.c strmode.c \ ++ strtonum.c strsep.c vis.c xmalloc.c + + EXTRA_DIST = base64.h bsd-misc.h bsd-waitpid.h chacha_private.h defines.h \ + entropy.h imsg.h includes.h log.h openbsd-compat.h sys/queue.h \ +diff --git a/openbsd-compat/defines.h b/openbsd-compat/defines.h +index e1abee6..f0f5f59 100644 +--- a/openbsd-compat/defines.h ++++ b/openbsd-compat/defines.h +@@ -857,4 +857,12 @@ struct winsize { + #define FPARSELN_UNESCALL 0x0f + #endif + ++#ifndef SCOPE_DELIMITER ++#define SCOPE_DELIMITER '%' ++#endif ++ ++#ifndef WAIT_MYPGRP ++#define WAIT_MYPGRP 0 ++#endif ++ + #endif /* _DEFINES_H */ +diff --git a/openbsd-compat/inet_net_pton.c b/openbsd-compat/inet_net_pton.c +new file mode 100644 +index 0000000..0831e25 +--- /dev/null ++++ b/openbsd-compat/inet_net_pton.c +@@ -0,0 +1,214 @@ ++/* ++ * Copyright (c) 1996 by Internet Software Consortium. ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS ++ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE ++ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL ++ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR ++ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ++ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ++ * SOFTWARE. ++ */ ++ ++#if defined(LIBC_SCCS) && !defined(lint) ++static const char orig_rcsid[] = "From Id: inet_net_pton.c,v 1.8 1996/11/21 10:28:12 vixie Exp $"; ++#endif ++//#include <sys/cdefs.h> ++//__FBSDID("$FreeBSD: src/lib/libc/net/inet_net_pton.c,v 1.9 2003/09/15 23:38:06 fenner Exp $"); ++ ++#include <sys/types.h> ++#include <sys/socket.h> ++#include <netinet/in.h> ++#include <arpa/inet.h> ++ ++#include <assert.h> ++#include <ctype.h> ++#include <errno.h> ++#include <stdio.h> ++#include <string.h> ++#include <stdlib.h> ++ ++#ifdef SPRINTF_CHAR ++# define SPRINTF(x) strlen(sprintf/**/x) ++#else ++# define SPRINTF(x) ((size_t)sprintf x) ++#endif ++ ++static int inet_net_pton_ipv4(const char *src, u_char *dst, size_t size); ++ ++/* ++ * static int ++ * inet_net_pton(af, src, dst, size) ++ * convert network number from presentation to network format. ++ * accepts hex octets, hex strings, decimal octets, and /CIDR. ++ * "size" is in bytes and describes "dst". ++ * return: ++ * number of bits, either imputed classfully or specified with /CIDR, ++ * or -1 if some failure occurred (check errno). ENOENT means it was ++ * not a valid network specification. ++ * author: ++ * Paul Vixie (ISC), June 1996 ++ */ ++int ++inet_net_pton(af, src, dst, size) ++ int af; ++ const char *src; ++ void *dst; ++ size_t size; ++{ ++ switch (af) { ++ case AF_INET: ++ return (inet_net_pton_ipv4(src, dst, size)); ++ default: ++ errno = EAFNOSUPPORT; ++ return (-1); ++ } ++} ++ ++/* ++ * static int ++ * inet_net_pton_ipv4(src, dst, size) ++ * convert IPv4 network number from presentation to network format. ++ * accepts hex octets, hex strings, decimal octets, and /CIDR. ++ * "size" is in bytes and describes "dst". ++ * return: ++ * number of bits, either imputed classfully or specified with /CIDR, ++ * or -1 if some failure occurred (check errno). ENOENT means it was ++ * not an IPv4 network specification. ++ * note: ++ * network byte order assumed. this means 192.5.5.240/28 has ++ * 0x11110000 in its fourth octet. ++ * author: ++ * Paul Vixie (ISC), June 1996 ++ */ ++static int ++inet_net_pton_ipv4(src, dst, size) ++ const char *src; ++ u_char *dst; ++ size_t size; ++{ ++ static const char ++ xdigits[] = "0123456789abcdef", ++ digits[] = "0123456789"; ++ int n, ch, tmp, dirty, bits; ++ const u_char *odst = dst; ++ ++ ch = *src++; ++ if (ch == '0' && (src[0] == 'x' || src[0] == 'X') ++ && isascii(src[1]) && isxdigit(src[1])) { ++ /* Hexadecimal: Eat nybble string. */ ++ if (size <= 0) ++ goto emsgsize; ++ *dst = 0, dirty = 0; ++ src++; /* skip x or X. */ ++ while ((ch = *src++) != '\0' && ++ isascii(ch) && isxdigit(ch)) { ++ if (isupper(ch)) ++ ch = tolower(ch); ++ n = strchr(xdigits, ch) - xdigits; ++ assert(n >= 0 && n <= 15); ++ *dst |= n; ++ if (!dirty++) ++ *dst <<= 4; ++ else if (size-- > 0) ++ *++dst = 0, dirty = 0; ++ else ++ goto emsgsize; ++ } ++ if (dirty) ++ size--; ++ } else if (isascii(ch) && isdigit(ch)) { ++ /* Decimal: eat dotted digit string. */ ++ for (;;) { ++ tmp = 0; ++ do { ++ n = strchr(digits, ch) - digits; ++ assert(n >= 0 && n <= 9); ++ tmp *= 10; ++ tmp += n; ++ if (tmp > 255) ++ goto enoent; ++ } while ((ch = *src++) != '\0' && ++ isascii(ch) && isdigit(ch)); ++ if (size-- <= 0) ++ goto emsgsize; ++ *dst++ = (u_char) tmp; ++ if (ch == '\0' || ch == '/') ++ break; ++ if (ch != '.') ++ goto enoent; ++ ch = *src++; ++ if (!isascii(ch) || !isdigit(ch)) ++ goto enoent; ++ } ++ } else ++ goto enoent; ++ ++ bits = -1; ++ if (ch == '/' && isascii(src[0]) && isdigit(src[0]) && dst > odst) { ++ /* CIDR width specifier. Nothing can follow it. */ ++ ch = *src++; /* Skip over the /. */ ++ bits = 0; ++ do { ++ n = strchr(digits, ch) - digits; ++ assert(n >= 0 && n <= 9); ++ bits *= 10; ++ bits += n; ++ } while ((ch = *src++) != '\0' && isascii(ch) && isdigit(ch)); ++ if (ch != '\0') ++ goto enoent; ++ if (bits > 32) ++ goto emsgsize; ++ } ++ ++ /* Firey death and destruction unless we prefetched EOS. */ ++ if (ch != '\0') ++ goto enoent; ++ ++ /* If nothing was written to the destination, we found no address. */ ++ if (dst == odst) ++ goto enoent; ++ /* If no CIDR spec was given, infer width from net class. */ ++ if (bits == -1) { ++ if (*odst >= 240) /* Class E */ ++ bits = 32; ++ else if (*odst >= 224) /* Class D */ ++ bits = 4; ++ else if (*odst >= 192) /* Class C */ ++ bits = 24; ++ else if (*odst >= 128) /* Class B */ ++ bits = 16; ++ else /* Class A */ ++ bits = 8; ++ /* If imputed mask is narrower than specified octets, widen. */ ++ if (bits < ((dst - odst) * 8)) ++ bits = (dst - odst) * 8; ++ } ++ /* Extend network to cover the actual mask. */ ++ while (bits > ((dst - odst) * 8)) { ++ if (size-- <= 0) ++ goto emsgsize; ++ *dst++ = '\0'; ++ } ++ return (bits); ++ ++ enoent: ++ errno = ENOENT; ++ return (-1); ++ ++ emsgsize: ++ errno = EMSGSIZE; ++ return (-1); ++} ++ ++/* ++ * Weak aliases for applications that use certain private entry points, ++ * and fail to include <arpa/inet.h>. ++ */ ++#undef inet_net_pton ++/* __weak_reference(__inet_net_pton, inet_net_pton); */ +diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h +index e345a9d..a3fa80c 100644 +--- a/openbsd-compat/openbsd-compat.h ++++ b/openbsd-compat/openbsd-compat.h +@@ -184,8 +184,20 @@ int vsnprintf(char *, size_t, const char *, va_list); + void explicit_bzero(void *p, size_t n); + #endif + ++#ifndef HAVE_INET_NET_PTON ++int inet_net_pton(int, const char *, void *, size_t); ++#endif ++ ++#ifndef HAVE_RES_HNOK ++int res_hnok(const char *); ++#endif ++ + /* OpenSMTPD-portable specific entries */ + ++#ifndef FILE ++#include <stdio.h> ++#endif ++ + #ifndef HAVE_FGETLN + #include <stdio.h> + #include <string.h> +diff --git a/openbsd-compat/res_hnok.c b/openbsd-compat/res_hnok.c +new file mode 100644 +index 0000000..06a3e8a +--- /dev/null ++++ b/openbsd-compat/res_hnok.c +@@ -0,0 +1,168 @@ ++/* $OpenBSD: res_comp.c,v 1.14 2008/04/16 22:35:23 deraadt Exp $ */ ++ ++/* ++ * ++Copyright++ 1985, 1993 ++ * - ++ * Copyright (c) 1985, 1993 ++ * The Regents of the University of California. All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. Neither the name of the University nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++ * SUCH DAMAGE. ++ * - ++ * Portions Copyright (c) 1993 by Digital Equipment Corporation. ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies, and that ++ * the name of Digital Equipment Corporation not be used in advertising or ++ * publicity pertaining to distribution of the document or software without ++ * specific, written prior permission. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL ++ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES ++ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT ++ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL ++ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR ++ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ++ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ++ * SOFTWARE. ++ * - ++ * --Copyright-- ++ */ ++ ++/* OPENBSD ORIGINAL: lib/libc/net/res_comp.c */ ++ ++#include "includes.h" ++#ifndef HAVE_RES_HNOK ++ ++/* ++ * Verify that a domain name uses an acceptable character set. ++ */ ++ ++/* ++ * Note the conspicuous absence of ctype macros in these definitions. On ++ * non-ASCII hosts, we can't depend on string literals or ctype macros to ++ * tell us anything about network-format data. The rest of the BIND system ++ * is not careful about this, but for some reason, we're doing it right here. ++ */ ++#define PERIOD 0x2e ++#define hyphenchar(c) ((c) == 0x2d) ++#define bslashchar(c) ((c) == 0x5c) ++#define underscorechar(c) ((c) == 0x5f) ++#define periodchar(c) ((c) == PERIOD) ++#define asterchar(c) ((c) == 0x2a) ++#define alphachar(c) (((c) >= 0x41 && (c) <= 0x5a) \ ++ || ((c) >= 0x61 && (c) <= 0x7a)) ++#define digitchar(c) ((c) >= 0x30 && (c) <= 0x39) ++ ++#define borderchar(c) (alphachar(c) || digitchar(c)) ++#define middlechar(c) (borderchar(c) || hyphenchar(c) || underscorechar(c)) ++#define domainchar(c) ((c) > 0x20 && (c) < 0x7f) ++ ++int ++res_hnok(const char *dn) ++{ ++ int pch = PERIOD, ch = *dn++; ++ ++ while (ch != '\0') { ++ int nch = *dn++; ++ ++ if (periodchar(ch)) { ++ ; ++ } else if (periodchar(pch)) { ++ if (!borderchar(ch)) ++ return (0); ++ } else if (periodchar(nch) || nch == '\0') { ++ if (!borderchar(ch)) ++ return (0); ++ } else { ++ if (!middlechar(ch)) ++ return (0); ++ } ++ pch = ch, ch = nch; ++ } ++ return (1); ++} ++ ++/* ++ * hostname-like (A, MX, WKS) owners can have "*" as their first label ++ * but must otherwise be as a host name. ++ */ ++int ++res_ownok(const char *dn) ++{ ++ if (asterchar(dn[0])) { ++ if (periodchar(dn[1])) ++ return (res_hnok(dn+2)); ++ if (dn[1] == '\0') ++ return (1); ++ } ++ return (res_hnok(dn)); ++} ++ ++/* ++ * SOA RNAMEs and RP RNAMEs can have any printable character in their first ++ * label, but the rest of the name has to look like a host name. ++ */ ++int ++res_mailok(const char *dn) ++{ ++ int ch, escaped = 0; ++ ++ /* "." is a valid missing representation */ ++ if (*dn == '\0') ++ return(1); ++ ++ /* otherwise <label>.<hostname> */ ++ while ((ch = *dn++) != '\0') { ++ if (!domainchar(ch)) ++ return (0); ++ if (!escaped && periodchar(ch)) ++ break; ++ if (escaped) ++ escaped = 0; ++ else if (bslashchar(ch)) ++ escaped = 1; ++ } ++ if (periodchar(ch)) ++ return (res_hnok(dn)); ++ return(0); ++} ++ ++/* ++ * This function is quite liberal, since RFC 1034's character sets are only ++ * recommendations. ++ */ ++int ++res_dnok(const char *dn) ++{ ++ int ch; ++ ++ while ((ch = *dn++) != '\0') ++ if (!domainchar(ch)) ++ return (0); ++ return (1); ++} ++ ++#endif /* !HAVE_RES_HNOK */ +diff --git a/openbsd-compat/strmode.c b/openbsd-compat/strmode.c +index 4a81614..535edfb 100644 +--- a/openbsd-compat/strmode.c ++++ b/openbsd-compat/strmode.c +@@ -33,6 +33,8 @@ + #include "includes.h" + #ifndef HAVE_STRMODE + ++#undef S_IRUSR ++ + #include <sys/types.h> + #include <sys/stat.h> + #include <string.h> +diff --git a/smtpd/smtpd.c b/smtpd/smtpd.c +index 763a62d..dfab650 100644 +--- a/smtpd/smtpd.c ++++ b/smtpd/smtpd.c +@@ -26,6 +26,7 @@ + #include <sys/tree.h> + #include <sys/socket.h> + #include <sys/wait.h> ++#undef S_IRUSR + #include <sys/stat.h> + #include <sys/uio.h> + #include <sys/mman.h> diff --git a/main/opensmtpd/APKBUILD b/main/opensmtpd/APKBUILD new file mode 100644 index 0000000000..d0d3f6325d --- /dev/null +++ b/main/opensmtpd/APKBUILD @@ -0,0 +1,79 @@ +# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> +# Contributor: Jonathan Curran <jonathan@curran.in> +# Maintainer: Jonathan Curran <jonathan@curran.in> +pkgname=opensmtpd +pkgver=5.7.3p1 +pkgrel=0 +pkgdesc="secure, reliable, lean, and easy-to configure SMTP server" +url="http://www.opensmtpd.org" +arch="x86_64" +license="ISC" +depends="" +depends_dev="" +makedepends="automake autoconf libtool mdocml db-dev libasr-dev libevent-dev + fts-dev openssl-dev bison flex-dev" +install="$pkgname.pre-install $pkgname.post-install" +subpackages="$pkgname-doc" +source="https://www.opensmtpd.org/archives/opensmtpd-${pkgver}.tar.gz + 00-opensmtpd.patch + smtpd.initd + aliases" + +_builddir=${srcdir}/${pkgname}-${pkgver} +prepare() { + local i + cd "$_builddir" + for i in $source; do + case $i in + *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;; + esac + done +} + +build() { + cd "$_builddir" + aclocal -I m4 + autoconf + autoheader + automake --foreign --add-missing --copy + ./configure --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc/smtpd \ + --enable-table-db \ + --with-privsep-user=smtpd \ + --with-queue-user=smtpq \ + --with-maildir=/var/spool/mail \ + --with-sock-dir=/run \ + --with-libs="-lfts" \ + --with-pie \ + --with-Werror \ + --mandir=/usr/share/man \ + --libexecdir=/usr/lib/$pkgname \ + --with-mantype=doc || return 1 + make || return 1 +} + +package() { + make DESTDIR=${pkgdir} -C "$_builddir" install || return 1 + sed -i 's#/etc/mail#/etc/smtpd#g' "$pkgdir"/etc/smtpd/smtpd.conf + + install -Dm755 "$srcdir"/smtpd.initd "$pkgdir"/etc/init.d/smtpd || return 1 + install -Dm644 "$srcdir"/aliases "$pkgdir"/etc/smtpd/aliases || return 1 + + # Move sendmail to /usr/sbin to overwrite busyboxs sendmail. + mv "$pkgdir"/usr/bin/sendmail "$pkgdir"/usr/sbin/ || return 1 +} + +md5sums="754abb7f08c094273f098d761c8c2221 opensmtpd-5.7.3p1.tar.gz +e90e077ee170c7806a4657f0fd5778b1 00-opensmtpd.patch +a2f311a82c9a85f5c52975c4dbbdbd53 smtpd.initd +561d2aead043a64a4ce5d66b4f78223e aliases" +sha256sums="848a3c72dd22b216bb924b69dc356fc297e8b3671ec30856978950208cba74dd opensmtpd-5.7.3p1.tar.gz +1daa9b94e598db9b34e9a1fc717c834519824bdf7e87f1d6729c815ea5ca6acf 00-opensmtpd.patch +ab4b7f066a38dadd7a2dc6d7c3a06c3a8ac2367340d97e2a8b54f571ea0f8cf8 smtpd.initd +7bef80f8d86aa5463c864681482a4908d22ff8b6f3e47d2a410ef2d59b316b53 aliases" +sha512sums="e75ed2e148d25716df3af7b6746332c475eb671b91d3832b9a56b11a1e567749065f1332cd06d928cf6bd5122427cd33cc3e0f5f4e2bec0f2269db695be65b7e opensmtpd-5.7.3p1.tar.gz +c3a60ec3785903b3118feebde6021e20f1eb26a8d6e8b8c72ae19c6f9d6a9a2ceaee32c45a0ac3ff29d24018d169273f931378c1269eec32d7e36e5d98dd475d 00-opensmtpd.patch +8152fecadeb1d818b7865eae040123f855e81fafbb4b40d12a64336e09dc486c10e6828809182c8172bfd9f54dc7d050a154b61d5e6049df6ffd8a7b6e5e1277 smtpd.initd +929ba0b8befca6cad558602f9793a9c653923924ee524902916b8ef4952d1ea8a391895e7450ed9768eb82a07bd307b49561f5d49ea4711bd87a1a73eb8d7dad aliases" diff --git a/main/opensmtpd/aliases b/main/opensmtpd/aliases new file mode 100644 index 0000000000..766dc3e2d8 --- /dev/null +++ b/main/opensmtpd/aliases @@ -0,0 +1,63 @@ +# Aliases in this file will NOT be expanded in the header from +# Mail, but WILL be visible over networks or from /usr/libexec/mail.local. +# +# >>>>>>>>>> The program "newaliases" must be run after +# >> NOTE >> this file is updated for any changes to +# >>>>>>>>>> show through to smtpd. +# + +# Well-known aliases -- this should be filled in! +# root: your-every-day-user + +# Basic system aliases -- these MUST be present +MAILER-DAEMON: postmaster +postmaster: root +operator: root + +# General redirections for important pseudo accounts +daemon: root +uucp: root + +# Redirections for pseudo accounts that should not receive mail +bin: /dev/null +adm: /dev/null +lp: /dev/null +sync: /dev/null +shutdown: /dev/null +halt: /dev/null +mail: /dev/null +news: /dev/null +man: /dev/null +cron: /dev/null +ftp: /dev/null +sshd: /dev/null +at: /dev/null +squid: /dev/null +gdm: /dev/null +xfs: /dev/null +games: /dev/null +named: /dev/null +mysql: /dev/null +postgres: /dev/null +apache: /dev/null +nut: /dev/null +cyrus: /dev/null +vpopmail: /dev/null +ntp: /dev/null +postfix: /dev/null +smmsp: /dev/null +distcc: /dev/null +guest: /dev/null +nobody: /dev/null + +# RFC 2142: NETWORK OPERATIONS MAILBOX NAMES +abuse: root +# noc: root +security: root + +# RFC 2142: SUPPORT MAILBOX NAMES FOR SPECIFIC INTERNET SERVICES +# hostmaster: root +# usenet: root +# news: usenet +# webmaster: root +# ftp: root
\ No newline at end of file diff --git a/main/opensmtpd/opensmtpd.post-install b/main/opensmtpd/opensmtpd.post-install new file mode 100644 index 0000000000..f7acfaf4f8 --- /dev/null +++ b/main/opensmtpd/opensmtpd.post-install @@ -0,0 +1,5 @@ +#!/bin/sh + +/usr/sbin/newaliases + +exit 0 diff --git a/main/opensmtpd/opensmtpd.pre-install b/main/opensmtpd/opensmtpd.pre-install new file mode 100644 index 0000000000..af0620e3db --- /dev/null +++ b/main/opensmtpd/opensmtpd.pre-install @@ -0,0 +1,11 @@ +#!/bin/sh + +addgroup -S smtpd 2>/dev/null +addgroup -S smtpq 2>/dev/null + +adduser -S -H -D -s /sbin/nologin -h /dev/null -g 'SMTP Daemon' -G smtpd smtpd 2>/dev/null +adduser -S -H -D -s /sbin/nologin -h /dev/null -g 'SMTPD Queue' -G smtpq smtpq 2>/dev/null + +mkdir -p /var/spool/mail + +exit 0 diff --git a/main/opensmtpd/smtpd.initd b/main/opensmtpd/smtpd.initd new file mode 100644 index 0000000000..52ffd99397 --- /dev/null +++ b/main/opensmtpd/smtpd.initd @@ -0,0 +1,24 @@ +#!/sbin/openrc-run + +name="$SVCNAME" +command="/usr/sbin/$SVCNAME" +command_args="$SMTPD_OPTS" + +depend() { + need net localmount + after bootmisc firewall + use logger dns + provide mta +} + +start() { + ebegin "Starting smtpd ${CONF_MESSAGE}" + /usr/sbin/smtpd + eend $? +} + +stop() { + ebegin "Stopping smtpd ${CONF_MESSAGE}" + /usr/sbin/smtpctl stop &> /dev/null + eend $? +}
\ No newline at end of file |